一、嵌入点位置
帖子内容页的嵌入点分布在模板文件或核心逻辑中,常见嵌入点标识符及对应位置如下:
viewthread_top
位于帖子内容页顶部,通常用于插入全局提示或导航扩展内容。
viewthread_postheader
在单个帖子头部(如作者信息栏上方),适合插入用户状态提示或操作按钮。
viewthread_posttop
在帖子内容区域顶部,可添加帖子评分按钮或互动功能。
viewthread_side_top
侧边栏顶部区域,常用于展示相关推荐或广告。
viewthread_fastpost_side
位于快速回复框的侧边区域,适合插入快速操作入口。
更多嵌入点可通过开发模式查看:在Discuz根目录的config/config_global.php 末尾添加$_config['plugindeveloper'] = 2; ,刷新页面后嵌入点会以[string 嵌入点名] 形式显示。
二、实现方式
1. 插件类与方法定义
-
创建插件类:需继承Discuz插件基类,并定义与嵌入点同名的方法。
示例代码:
class plugin_myplugin {
function viewthread_top() {
return '<div>这是帖子顶部插入的内容</div>';
}
}
方法名(如viewthread_top )必须与嵌入点标识符完全一致。
2. 结合模板文件扩展内容
若需插入复杂HTML结构,可通过模板文件实现:
三、进阶注意事项
- 继承类扩展
针对不同页面入口(如forum.php ),需创建继承自主插件类的子类(如class plugin_myplugin_forum extends plugin_myplugin ),并通过子类覆盖或扩展嵌入点方法。
- 变量传递
模板文件中定义的<!--{block 变量名}--> 会生成同名变量(如$links ),需通过return $变量名 返回给嵌入点。
- 样式兼容性
建议复用系统原有CSS类(如xi2 、xw1 ),或自定义CSS文件通过<link> 标签引入。
四、常见问题
- 嵌入点不生效:检查方法名是否与嵌入点标识符完全一致,并确保插件已启用且缓存已更新。
- 模板路径错误:确认模板文件路径格式为
插件标识符:模板文件名 ,且文件位于source/plugin/插件名/template/ 目录下。
通过以上方法,开发者可以灵活控制帖子内容页的显示逻辑,实现内容扩展或功能增强。
|