您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
Discuz论坛添加Wiki语法的方法
雁卉2025-07-08Discuz教程已有人查阅
导读目标是使在论坛中的特定语法能够被解析为Wiki实际的url, 如:关键字需要支持以下2种论坛语法:
目标是使在论坛中的特定语法能够被解析为Wiki实际的url, 如:关键字需要支持以下2种论坛语法:
使论坛支持 [wiki]关键字[/wiki] 这样的语法.
使论坛支持wiki特定的引用语法, 如在MoinMoin wiki下是 ["关键字"], 在MediaWiki下是 [[关键字]].
原理是使用语法扫描器在页面解析的时候扫描帖子内容, 对专门的语法实施特定文本替换.
实施:
viewthread.php文件
负责展现帖子的程序是viewthread.php这个文件, 打开并定位到大约330多行左右, 可以看到下面的代码, 这?嵌蕴幽谌萁杏锓ㄌ婊坏牡胤? 我们在这下面继续加入我们自己的语法解析器即可.
解析代码会循环匹配正则表达式所限定的格式然后将其替换为html, 如果需要mediawiki的语法可以将第二个正则表达式替换为 '#\[\[(.+?)\]\]#s' 需要注意的是第二种语法只能在支持html的论坛中使用, 第一种则不限.
使论坛支持 [wiki]关键字[/wiki] 这样的语法.
使论坛支持wiki特定的引用语法, 如在MoinMoin wiki下是 ["关键字"], 在MediaWiki下是 [[关键字]].
原理是使用语法扫描器在页面解析的时候扫描帖子内容, 对专门的语法实施特定文本替换.
实施:
viewthread.php文件
负责展现帖子的程序是viewthread.php这个文件, 打开并定位到大约330多行左右, 可以看到下面的代码, 这?嵌蕴幽谌萁杏锓ㄌ婊坏牡胤? 我们在这下面继续加入我们自己的语法解析器即可.
$post['message'] = discuzcode($post['message'], $post['smileyoff'],
$post['bbcodeoff'], $post['htmlon'], $forum['allowsmilies'],$forum['allowbbcode'],
($forum['allowimgcode'] && $showimages ? 1 : 0),$forum['allowhtml'],
($forum['jammer'] && $post['authorid'] != $discuz_uid ? 1 : 0), 0, $post['authorid']);
这是我加入的自定义新增wiki语法解析函数, 为了管理方便将其独立置于addons/dz_moinwiki.php文件中, 当然名字任由您定.
$post['message'] = moinwiki_parse($post['message']);
别忘了在文件起始部分加入文件引用:
include_once(DISCUZ_ROOT.'./addons/dz_moinwiki.php');
dz_moinwiki.php文件解析代码会循环匹配正则表达式所限定的格式然后将其替换为html, 如果需要mediawiki的语法可以将第二个正则表达式替换为 '#\[\[(.+?)\]\]#s' 需要注意的是第二种语法只能在支持html的论坛中使用, 第一种则不限.
<?php
function moinwiki_parse($message)
{
while (preg_match('#\[wiki\](.+?)\[/wiki\]#s', $message, $match))
{
$wiki_name = $match[1];
$wiki_html = '<b><a href="http://wiki.cwowaddon.com/'.$wiki_name.'" target="_blank">'.$wiki_name.'</a></b>';
$message = str_replace($match[0], $wiki_html, $message);
}
while (preg_match('#\[\"(.+?)\"\]#s', $message, $match))
{
$wiki_name = $match[1];
$wiki_html = '<b><a href="http://wiki.cwowaddon.com/'.$wiki_name.'" target="_blank">'.$wiki_name.'</a></b>';
$message = str_replace($match[0], $wiki_html, $message);
}
return $message;
}
?>
通过这个简单的例子我们也可以看到, 只需对现有html所见即所得技术加以小扩展即可支持核心的wiki语法, 而又能享受到排版的便利, 如果wiki也能使用论坛这样的语法技术, 写作门槛将大大降低。
本文标签:
很赞哦! ()
上一篇:discuz模块调用更新流程解析
相关教程
图文教程
discuz的config_global.php文件设置说明
数据库主服务器设置, 支持多组服务器设置, 当设置多组服务器时, 则会根据分布式策略使用某个服务器
Xweibo for Discuz X1.5V1.1安装教程
修复Discuz!X 1.5 RELEASE 20110121中的安全机制更改,触发插件安全机制而引发无法同步主题到微薄的问题Xweibo for Discuz!X1.5V1.1 Release 2025-01-21
Discuz的NT持续集成实战
从SVN中取出源代码到e:\source,编译后发布项目到e:\publish,可直接在IIS中运行。编译状态发送email通知相关人员。软件环境:(以下软件的安装过程非常简单,基本上一路Next就可以了。)
Discuz首页架构分析初步分析
以index.php首页为例,来分析程序的执行过程,脚本语言用包含切割方式来使程序模块化,java在这里就比较严谨,但是明显不如PHP来得简单。
相关源码
-
(自适应)黑色摄影作品工作室pbootcms模板网站源码下载为风景摄影、个人工作室打造的高端网站模板,基于PbootCMS开源内核开发,采用HTML5自适应架构,PC与移动端实时数据同步,适配各类拍摄作品展示需求。查看源码 -
(PC+WAP)货物运输快递物流汽车贸易pbootcms模板下载为货运代理、汽车贸易及快递企业设计的全终端适配网站系统,整合运单追踪与车辆展示核心功能模块原生开发的DIV+CSS架构,支持WebP图像压缩技术。查看源码 -
响应式电脑维修办公用品维护pbootcms网站模板模板介绍(自适应手机版)响应式电脑修理公司pbootcms网站模板-蓝色HTML5电脑修理维修店网站源码下载PbootCMS内核开发的营销型网站模板,该模查看源码 -
(自适应)刷卡pos机数据移动支付设备电子科技pbootcms模板下载本模板为POS机设备制造商、移动支付终端服务商和科技企业设计,基于PbootCMS系统开发,提供完整的在线展示平台解决方案,满足支付设备行业特有的展示需求。查看源码 -
(自适应)pbootcms模板五金元件气缸气动系统源码下载基于PbootCMS核心开发的气缸气动系统网站模板,为五金元件、气动设备制造企业设计。采用响应式布局技术,自动适配手机、平板等移动设备,确保各类终端用户获得良好浏览体验。查看源码 -
帝国CMS7.5小说推荐公众号导航带wap手机站+带采集工具本模板为小说导航类网站设计开发,基于帝国CMS7.5内核构建,针对小说阅读领域的分类聚合需求进行深度优化。通过智能分类系统和用户行为分析,实现小说资源的精准推荐与导航功能。查看源码
| 分享笔记 (共有 篇笔记) |
