插件开发
Hook 与自定义标签
Hook 机制
自动注册 Hook 方法
入口类中方法名以 Hook 结尾会自动监听同名挂载点:
public function headHook(): string
{
return '<link rel="stylesheet" href="/plugins/friendlink/assets/style.css">';
}
模板中输出:
{pycms:hook name="head" /}
手动注册
use Pycms\Hook;
public function register(): void
{
Hook::add('theme.footer', [$this, 'footer']);
}
public function footer(): string
{
return '<div class="friendlink">友情链接</div>';
}
自定义标签
插件可注册成对标签,返回数组供模板循环:
use Pycms\Taglib;
public function register(): void
{
Taglib::register('friendlink', function (array $attrs): array {
$limit = (int) ($attrs['num'] ?? 6);
return \Pycms\Db::table('friendlink')
->where('status', 1)
->orderBy('sort')
->limit($limit)
->get();
});
}
模板调用:
<div class="friendlinks">
{pycms:friendlink num="6"}
<a href="{$item.url}" target="_blank" rel="noopener">{$item.title}</a>
{/pycms:friendlink}
</div>
自定义单标签
需要直接输出 HTML 时注册单标签:
Taglib::registerSingle('friendlink_form', function (array $attrs): string {
return '<form method="post">...</form>';
});
{pycms:friendlink_form /}
发布到市场
- 开发者中心上传插件 zip,填写名称、简介、价格与功能标签。
- 平台审核通过后进入市场。
- 后续版本在「我的应用 → 版本」上传,系统自动生成增量补丁。
← 插件目录与 info.ini
已是最后一篇