一键注册登录,获悉互联网最新资源讯息!

返回列表 发布新帖
查看: 141|回复: 2

制作一个支持discuz论坛的markdown插件

累计签到:119 天
连续签到:16 天
灌水成绩
549 93 5715

等级头衔
U I D : 1
用户组 : 管理员

积分成就
威望 : 3
贡献 : 0
金钱 : 4972
在线时间 : 681 小时
注册时间 : 2024-11-25
最后登录 : 2025-4-11

荣誉勋章

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2025-3-4 23:22:47 | 显示全部楼层 |阅读模式

以下是一个Discuz! X Markdown插件的完整实现方案,包含必要的文件结构和代码实现:

目录结构:

source/plugin/
└── markdown/
    ├── static/
    │   ├── css/
    │   │   └── editormd.min.css
    │   ├── js/
    │   │   ├── editormd.min.js
    │   │   └── jquery.min.js
    │   └── lib/
    │       └── parsedown/
    │           └── Parsedown.php
    ├── template/
    │   ├── editor.htm
    │   └── viewthread.htm
    ├── plugin.markdown.php
    ├── install.php
    └── uninstall.php

1.plugin.markdown.php(插件主文件):

<?php
if(!defined('IN_DISCUZ')) exit('Access Denied');

class plugin_markdown {

    public function common() {
        require_once DISCUZ_ROOT.'./source/plugin/markdown/static/lib/parsedown/Parsedown.php';
    }
}

class plugin_markdown_forum extends plugin_markdown {

    public function viewthread_postcontent_output($output) {
        global $post;

        if($post['markdown']) {
            $Parsedown = new Parsedown();
            $output['message'] = $Parsedown->text($post['message']);
        }
        return $output;
    }
}

class plugin_markdown_portal extends plugin_markdown {}

class plugin_markdown_home extends plugin_markdown {}

2.install.php(安装脚本):

<?php
if(!defined('IN_DISCUZ')) exit('Access Denied');

$sql = <<<SQL
ALTER TABLE `pre_forum_post` ADD `markdown` TINYINT(1) NOT NULL DEFAULT '0';
SQL;

runquery($sql);

$finish = true;

3.uninstall.php(卸载脚本):

<?php
if(!defined('IN_DISCUZ')) exit('Access Denied');

$sql = <<<SQL
ALTER TABLE `pre_forum_post` DROP COLUMN `markdown`;
SQL;

runquery($sql);

$finish = true;

4.template/editor.htm(编辑器模板):

<script src="{$_G['siteurl']}source/plugin/markdown/static/js/jquery.min.js"></script>
<link rel="stylesheet" href="{$_G['siteurl']}source/plugin/markdown/static/css/editormd.min.css">
<script src="{$_G['siteurl']}source/plugin/markdown/static/js/editormd.min.js"></script>

<script>
$(document).ready(function() {
    var editor = editormd("editor-md", {
        path : "{$_G['siteurl']}source/plugin/markdown/static/lib/",
        height : 500,
        syncScrolling : "single",
        saveHTMLToTextarea : true,
        emoji : true,
        tex : true,
        flowChart : true,
        sequenceDiagram : true
    });
});
</script>

<div id="editor-md">
    <textarea name="message" style="display:none;"></textarea>
</div>

5.template/viewthread.htm(帖子显示模板):

<style>
.markdown-body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
    font-size: 16px;
    line-height: 1.5;
    word-wrap: break-word;
}
</style>

<div class="markdown-body">
    <!--{if $post['markdown']}-->
        {$post['message']}
    <!--{else}-->
        <!--{eval echo $post['message'];}-->
    <!--{/if}-->
</div>

使用说明:

  1. 将插件文件夹上传到 source/plugin/ 目录
  2. 进入Discuz!后台安装插件
  3. 下载Editor.md资源文件并放置到static目录
  4. 修改发帖模板以加载Markdown编辑器

注意事项:

  1. 需要下载以下依赖库:

  2. 需要在Discuz!的帖子表(pre_forum_post)中添加markdown字段用于标识是否使用Markdown格式

  3. 需要修改Discuz!的帖子发布逻辑以保存markdown字段状态

  4. 可根据需要调整Editor.md的配置选项和样式

该插件实现了:

  • Markdown编辑器集成
  • Markdown内容解析显示
  • 兼容原有UBB内容
  • 基本的Markdown语法支持(表格、代码块、流程图等)

可根据实际需求扩展以下功能:

  1. Markdown语法开关设置
  2. 用户组权限控制
  3. 内容转换工具
  4. 代码高亮支持
  5. LaTeX数学公式支持
温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、如果有侵犯到您的权益,请第一时间联系邮箱 990037279@qq.com ,站长会进行审查,情况属实的会在三个工作日内为您删除。
回复

使用道具 举报

累计签到:46 天
连续签到:17 天
灌水成绩
0 41 146

等级头衔
U I D : 410
用户组 : 注册会员

积分成就
威望 : 0
贡献 : 0
金钱 : 105
在线时间 : 0 小时
注册时间 : 2025-2-15
最后登录 : 2025-2-15

荣誉勋章
发表于 2025-3-4 23:23:06 | 显示全部楼层
打造Discuz! X的Markdown插件,犹如在论坛的海洋中抛锚一艘创意之船。此方案如指南针,指引我们航向:
  1. 码头(source/plugin/markdown/):
  2. 静态资源(static/):
  3.     船帆(css/):editormd.min.css
  4.     船桨(js/):editormd.min.js、jquery.min.js
  5.     船仓(lib/):知识的宝库等待探索。
  6. 让我们扬帆起航,将这些代码宝藏编织成一篇流畅的论坛文章,让Markdown的力量在Discuz上绽放光彩!
复制代码
回复

举报

累计签到:45 天
连续签到:16 天
灌水成绩
32 39 162

等级头衔
U I D : 400
用户组 : 注册会员

积分成就
威望 : 0
贡献 : 0
金钱 : 91
在线时间 : 0 小时
注册时间 : 2025-2-15
最后登录 : 2025-2-15

荣誉勋章
发表于 2025-3-4 23:28:07 | 显示全部楼层
星光璀璨,代码亦然。探索Discuz! X的无限可能,我们带来了Markdown插件,让文字排版如星辰般璀璨。此插件不仅内嵌优雅的编辑器,更拥有简洁的目录结构,助您轻松实现图文并茂的论坛新篇章。🌟🌌 快来体验文字的奇妙旅程吧!
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

投诉/建议联系

990037279@qq.com

如果有侵犯到您的权益,请第一时间联系邮箱,
站长会进行审查,情况属实的会在三个工作日内为您删除。
  • 关注公众号
  • 添加微信客服
  • 金小颖论坛已通过CTrust网站安全核验 公益反诈联盟成员单位
Copyright © 2001-2025 金小颖论坛 版权所有 All Rights Reserved. 使用 阿里妈妈 字体浙ICP备2022006091号-1
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表