= e(py_t('插件通过 Hook、路由与后台菜单扩展系统能力,可随时启停。')) ?>
= e($row['description'] ?: py_t('暂无插件描述')) ?>
= e(py_t('插件放置在')) ?> plugins/{code}/= e(py_t(',入口类必须为')) ?> {首字母大写标识}.php= e(py_t('(命名空间')) ?> plugins\{code}= e(py_t('),插件信息必须为')) ?> info.ini。
= e(py_t('插件入口类的公共属性')) ?> $menu = e(py_t('会在安装、启用、停用时自动注册或停用后台菜单;前台路由写在')) ?> route.php= e(py_t(',控制器位于')) ?> controller/= e(py_t(',视图位于')) ?> view/{控制器}/{方法}.html= e(py_t(',自定义标签位于')) ?> taglib/。
= e(py_t('后台方法通过')) ?> /admin/plugin/{code}/{method} = e(py_t('访问,系统自动校验登录、权限')) ?> plugin.{code} = e(py_t('与 CSRF。')) ?>
= e(py_t('入口类的')) ?> headHook() = e(py_t('方法会自动注册 Hook,前台用')) ?> {:hook('head')} = e(py_t('调用;无实际逻辑的安装、升级、卸载方法直接')) ?> return true;。