力诺软件
首页 新闻资讯 产品中心
技术相关
VUE Typecho
前端技术 留言 友链 统计 关于
1 光伏发电工程设计概算软件 822 阅读 2 vue3+vite+ts使用@通过import导入ts文件和vue文件报错问题的解决 817 阅读 3 vue3安装配置eslint及遇到的坑 336 阅读 4 Typecho插件开发(一) 304 阅读 5 Vite初始化项目报错:Install for [ ‘create-vite-app@latest‘ ] failed with code 1 300 阅读
登录 / 注册
标签搜索
  • vue
  • Typecho
  • Typecho插件开发
  • 风电概算
  • 光伏概算
  • 经济评价
  • Typecho主题Joe
  • 付费阅读
  • vue3
侧边栏壁纸
博主昵称
lnsoft

  • 累计撰写 19 篇文章
  • 累计收到 3 条评论
  • 首页
  • 栏目
    • 新闻资讯
    • 产品中心
    • 技术相关
      • VUE
      • Typecho
    • 前端技术
  • 页面
    • 留言
    • 友链
    • 统计
    • 关于
  • Typecho插件开发(一) 2022-07-11
    Typecho插件开发(一)   最近在写一个关于Typecho的插件,也是第一次写,碰到了不少问题,这里记录一下。主要功能是主题里面处理了付费阅读,在后台需要查询订单,及注册的用户登录后台,查看自已购买的付费文章。  上图是Typecho的目录结构,主题和插件分别放置在对应的文件夹中。Sun是插件目录,所有的相关文件都放在这里,Plugin.php是必须有的,实现了插件接口其它的文件根据需求来。  命名空间TypechoPlugin\Sun也可以不写,不写的时候这个代码就在公共空间中,类名则必须带上文件夹名,应为Sun_Plugin,否则找不到类,无法启用插件。这里再说明一下Typecho类的自动加载是如何实现的。看var\Typecho\Common.php文件,大概79行左右通过spl_autoload_register实现类的自动加载,它的参数是一个匿名函数,匿名函数的参数是类名$className, 当调用未定义类时,系统就会按顺序调用注册到 spl_autoload_register() 函数的所有函数,Typecho传进去的插件类名都是这样的TypechoPlugin\Sun\Plugin,找到类名Sun\Plugin,别名Sun_Plugin,及插件文件路径。  接着加载插件文件,检测类是否存在,先检查测类名Sun\Plugin,再检测别名Sun_Plugin,接着通过class_alias基于用户定义的类 original 创建别名 alias。 这个别名类和原有的类完全相同。所以不加命名空间时,类的名称必须带上目录名称Sun_Plugin。否则找不到类,无法启用插件。插件类需要实现的4个函数public static function activate(){}public static function deactivate(){}public static function config(Form $form){}public static function personalConfig(Form $form){}不实现也得空着,先看第一个activate。启用插件的时候会调用。函数的第一行代码增加一个文章付费的菜单,返回一个index,方便增加它的子菜单$index = Helper::addMenu('文章付费');第二行代码,参数$index,上面返回的,页面文件Sun目录下posts.php,子菜单文章付费,”管理付费的文章“是子标题,在页面内显示,最后一个是权限控制,注册的用户可以查看这个页面。Helper::addPanel($index, 'Sun/posts.php', '文章付费', '管理付费文章', 'subscriber');这个是管理员用的,查看到订单的页面。Helper::addPanel($index, 'Sun/orders.php', '付费记录', '付费情况记录', 'administrator');注册一个action,在订单表里会用到,删除无用的订单Helper::addAction('delorder','Sun_OrderRecords');建订单表self::CreateTalbeOrders();点击发布文章的时候,处理文章价格。\Typecho\Plugin::factory('Widget_Contents_Post_Edit')->finishPublish = array(__CLASS__, "updateFeeContent");这里再多说一句,之所以发布文章的时候能给到处理的机会,是因为在var\Widget\Contents\Post\Eidt.php在完成发布的时候有这样的代码self::pluginHandle()->finishPublish($contents, $this);传进来的是文件的内容$contents和$this编辑文章的组件。接口第二个函数 deactivate禁用插件的时候会调用它。主要就是activate的反向操作,把增加的都移除。
    • 2022年07月11日
    • 304 阅读
    • 0 评论
    • 0 点赞
  • 1
  • 2
博主栏壁纸
博主头像 lnsoft

19 文章数
3 评论量
  • Typecho插件开发(二)
  • Typecho插件的调用流程
  • 光伏装机欧洲需求超预期、硅料报价再创新高
最新回复
  • lucky
    lucky
    2023-04-30
    您好!请问在逆变器里,组串式逆变器最大只有80kW的,我需要110kW的该怎样加入?
  • Typecho
    Typecho
    2022-07-06
    欢迎加入 Typecho 大家族
标签云
舔狗日记
版权所有©陕西力诺电子科技有限公司 陕ICP备16002754号-1