修改dz 特殊主题的添加 供有兴趣的朋友研究

2016-07-07 15:00 来源:www.chinab4c.com 作者:ecshop专家



因本人很少修改dz程序所以不熟悉插件的开发已经添加方法我只能用笨办法直接修改代码来实现 “特殊主题” 的添加方法。这样一来有便于我们熟悉dz的代码开发方法 ,也是菜鸟 如有说错的地方请高手们立即指正。

要实现效果:


一、后台部分

登录后台 ---论坛--选择某一个板块 点击 ”编辑“---点击 “帖子选项”-



我们会看到

选择我们就要在此加一个选项上去。

1、通过点右键属性 查看地址 http://www.xaphp.cn/bbs/admin.php?action=forums&operation=edit&fid=36#
根据dz代码方式我们可以知道 此功能的程序文件是 source/admincp /admincp_forums.php 这个文件

知识点:平常我们把表单直接写到html里dz 是通过showsetting()这样的函数里确定表单的不通输入框 大家可以找到次函数去了解 在function文件夹。

找到899行左右


  1. showsetting('forums_edit_posts_allowpostspecial', array('allowpostspecialnew', array(

  2. cplang('thread_poll'),

  3. cplang('thread_trade'),

  4. cplang('thread_reward'),

  5. cplang('thread_activity'),

  6. cplang('thread_debate'),

  7. cplang('thread_experience') 我加的

  8. )), $forum['allowpostspecial'], 'binmcheckbox');
复制代码



找到1414行左右


  1. $allowpostspecialtrade = intval($_G['gp_allowpostspecialnew'][2]);

  2. $_G['gp_allowpostspecialnew'] = bindec(intval($_G['gp_allowpostspecialnew'][6]).intval($_G['gp_allowpostspecialnew'][5]).intval($_G['gp_allowpostspecialnew'][4]).intval($_G['gp_allowpostspecialnew'][3]).intval($_G['gp_allowpostspecialnew'][2]).intval($_G['gp_allowpostspecialnew'][1]));红色部分我加的 照猫画虎 加一个 6
复制代码



打开 source/language/lang_admincp.php加

  1. 'thread_experience' => '使用心得',
复制代码


复制代码
这个语言。

大家这时候去测试 是否成功 也就是说是否可选。
这个主题所在的表是pre_forum_forum 这个表pre_forum_forum 这个字段
2、因为这几个主题在不同的用户组 所以我们需要在用户组的功能里也修改
用户---用户组 ---选择其中一个用户组---编辑 ---鼠标放 论坛相关下来选 --特殊主题 (dz后台功能多往往一个操作要找半天)

半小时前 上传下载附件 (2.59 KB)
我们要新加一个

首先通过phpmyadmin 打开数据库 找到pre_common_usergroup_field 这个表 加入 allowpostexperience这个字段

打开source/admincp /admincp_usergroups.php 这个文件 622行左右 加入

  1. showsetting('usergroups_edit_special_experience', 'allowpostexperiencnew', $group['allowpostexperience'], 'radio');
复制代码

复制代码大家明白 这是要生产一个单选框。
有了输入框 就要有接收值 进行update 我们找到 1048 行 加入

  1. 'allowpostexperience' => $_G['gp_allowpostexperiencenew'],
复制代码

给数组里相当于 'a'=>$_POST['xaphp'];

打开source/language/lang_admincp.php 语言包加入

  1. 'usergroups_edit_special_experience' => '允许发起使用心得',

  2. 'usergroups_edit_special_experience_comment' => '选择“是”允许在论坛使用心得主题',
复制代码


这时候我们保存进行测试。

以上使我们后台的操作

3、开始修改前台文件 首先打开source/module/forum/forum_forumdisplay.php 这个文件这个文件是bbs列表页文件
找到764行

  1. $showexperience = $showpoll = $showtrade = $showreward = $showactivity = $showdebate = 0;

  2. if($_G['forum']['allowpostspecial']) {

  3. $showpoll = $_G['forum']['allowpostspecial'] & 1;

  4. $showtrade = $_G['forum']['allowpostspecial'] & 2;

  5. $showreward = isset($_G['setting']['extcredits'][$_G['setting']['creditstran**tra'][2]]) && ($_G['forum']['allowpostspecial'] & 4);

  6. $showactivity = $_G['forum']['allowpostspecial'] & 8;

  7. $showdebate = $_G['forum']['allowpostspecial'] & 16;

  8. $showexperience = $_G['forum']['allowpostspecial'] & 32;

  9. }//echo "<pre>";//print_r($_G['group']);exit;

  10. if($_G['group']['allowpost']) {

  11. $_G['group']['allowpostpoll'] = $_G['group']['allowpostpoll'] && $showpoll;

  12. $_G['group']['allowposttrade'] = $_G['group']['allowposttrade'] && $showtrade;

  13. $_G['group']['allowpostreward'] = $_G['group']['allowpostreward'] && $showreward;

  14. $_G['group']['allowpostactivity'] = $_G['group']['allowpostactivity'] && $showactivity;

  15. $_G['group']['allowpostdebate'] = $_G['group']['allowpostdebate'] && $showdebate;

  16. $_G['group']['allowpostexperience'] = $_G['group']['allowpostexperience'] && $showexperience;

  17. }
复制代码

红色部分是我加入的 依然照猫画虎

打开source/post/post_newthread.php找到537行

  1. $statarr = array(0 => 'thread', 1 => 'poll', 2 => 'trade', 3 => 'reward', 4 => 'activity', 5 => 'debate', 127 => 'thread',6=>'experience');
复制代码

加入我红色部分。

打开 source/module/forum/forum_post.php找到 267行
  1. if($_G['group']['allowpostpoll']) {

  2. $special = 1;

  3. } elseif($_G['group']['allowposttrade']) {

  4. $special = 2;

  5. } elseif($_G['group']['allowpostreward']) {

  6. $special = 3;

  7. } elseif($_G['group']['allowpostactivity']) {

  8. $special = 4;

  9. } elseif($_G['group']['allowpostdebate']) {

  10. $special = 5;

  11. } elseif($_G['group']['allowpostexperience']) {

  12. $special = 6;

  13. }
复制代码

加入红色部分。
打开source/language/forumlang_template.php 语言包加入

  1. 'post_newthreadexperience' => '使用心得',
复制代码


通过 phpmyadmin找到pre_common_stat这个表 加入pre_common_stat这个字段。

打开模板文件template/default/forum/forumdisplay.htm加入251行

  1. <!--{if $_G['group']['allowpost'] && ($_G['group']['allowposttrade'] || $_G['group']['allowpostpoll'] || $_G['group']['allowpostreward'] || $_G['group']['allowpostactivity'] || $_G['group']['allowpostdebate'] || $_G['setting']['threadplugins'] || $_G['forum']['threadsorts']|| $_G['group']['allowpostexperience'])}-->
复制代码

277行

  1. <!--{if $_G['group']['allowposttrade']}--><li class="trade"><a href="forum.php?mod=post&action=newthread&fid=$_G[fid]&special=2">{lang post_newthreadtrade}</a></li><!--{/if}--><!--{if $_G['group']['allowpostexperience']}--><li><a href="forum.php?mod=post&action=newthread&fid=$_G[fid]&special=6">{lang post_newthreadexperience}</a></li><!--{/if}-->
复制代码

复制代码加入红色部分template/default/forum/forumdisplay.htm

148行

  1. <!--{if $_G['group']['allowposttrade']}--><li$postspecialcheck[2]><a href="javascript:;">{lang post_newthreadtrade}</a></li><!--{/if}--><!--{if $_G['group']['allowpostexperience']}--><li$postspecialcheck[6]><a href="javascript:;">

  2. {lang post_newthreadexperience}</a></li><!--{/if}-->
复制代码



复制代码红色部分。

228行

[code]<!--{elseif $special == 5}--><span>{lang post_newthreaddebate}</span>
<!--{elseif $special == 6}--><span>{lang post_newthreadexperience}</span>[/code]

加入红色部分。

这时候我们测试 实现效果是


由于我的记性不好 先把目前所实现的发上来 下一步我们要做” 使用心得“多搞几个输入框然后在帖子里显示发布的内容 当然大家也可以接着研究。

由于本人也是菜鸟 有不对的地方 请高手们多多指教。当然我这是最笨的办法但是我们可以通过这种方法更深入的学习dz代码 。

回答:
哈哈,先支持下,我最近也准备加个论坛...

我最近在 实现 www.caomeipai.com/ 上面的 使用心得晒单功能。

2楼好心人,帮过我好多忙

真厉害啊,顶了,茶叶网,茶叶团购网,满分团购导航

总结的还比较全面,感谢分享

www.caomeishop.com 上面也有的哦,ecshop和doscuz结合!

总结的还比较全面,感谢分享

总结的还比较全面,感谢分享 请问您店的一号分类怎么做出来的呀