Discuz!官方免费开源建站系统

 找回密码
 立即注册
搜索

[已解决] 手动修改程序解决特殊主题的发布

[复制链接]
qiyongdong 发表于 2011-10-25 12:41:54 | 显示全部楼层 |阅读模式
因本人很少修改dz程序所以不熟悉插件的开发已经添加方法  我只能用笨办法直接修改代码来实现 “特殊主题” 的添加方法。这样一来有便于我们熟悉dz的代码开发方法 ,也是菜鸟 如有说错的地方请高手们立即指正。

     一、后台部分

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

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

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

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

               找到899行左右
  • showsetting('forums_edit_posts_allowpostspecial', array('allowpostspecialnew', array(
  • cplang('thread_poll'),
  • cplang('thread_trade'),
  • cplang('thread_reward'),
  • cplang('thread_activity'),
  • cplang('thread_debate'),
  • cplang('thread_experience') 我加的
  • )), $forum['allowpostspecial'], 'binmcheckbox');

复制代码

找到1414行左右
  • $allowpostspecialtrade = intval($_G['gp_allowpostspecialnew'][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  加
  • 'thread_experience' => '使用心得',

复制代码

这个语言。

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

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

      打开source/admincp /admincp_usergroups.php 这个文件 622行左右 加入
  • showsetting('usergroups_edit_special_experience', 'allowpostexperiencnew', $group['allowpostexperience'], 'radio');

复制代码

大家明白 这是要生产一个单选框。
         有了输入框 就要有接收值 进行update 我们找到 1048 行 加入
  • 'allowpostexperience' => $_G['gp_allowpostexperiencenew'],

复制代码

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

打开source/language/lang_admincp.php 语言包加入
  • 'usergroups_edit_special_experience' => '允许发起使用心得',
  • 'usergroups_edit_special_experience_comment' => '选择“是”允许在论坛使用心得主题',

复制代码

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

以上使我们后台的操作

3、开始修改前台文件 首先打开source/module/forum/forum_forumdisplay.php 这个文件  这个文件是bbs列表页文件
找到764行
  • $showexperience = $showpoll = $showtrade = $showreward = $showactivity = $showdebate = 0;
  • if($_G['forum']['allowpostspecial']) {
  • $showpoll = $_G['forum']['allowpostspecial'] & 1;
  • $showtrade = $_G['forum']['allowpostspecial'] & 2;
  • $showreward = isset($_G['setting']['extcredits'][$_G['setting']['creditstransextra'][2]]) && ($_G['forum']['allowpostspecial'] & 4);
  • $showactivity = $_G['forum']['allowpostspecial'] & 8;
  • $showdebate = $_G['forum']['allowpostspecial'] & 16;
  • $showexperience = $_G['forum']['allowpostspecial'] & 32;
  • }
  • //echo "<pre>";
  • //print_r($_G['group']);exit;
  • if($_G['group']['allowpost']) {
  • $_G['group']['allowpostpoll'] = $_G['group']['allowpostpoll'] && $showpoll;
  • $_G['group']['allowposttrade'] = $_G['group']['allowposttrade'] && $showtrade;
  • $_G['group']['allowpostreward'] = $_G['group']['allowpostreward'] && $showreward;
  • $_G['group']['allowpostactivity'] = $_G['group']['allowpostactivity'] && $showactivity;
  • $_G['group']['allowpostdebate'] = $_G['group']['allowpostdebate'] && $showdebate;
  • $_G['group']['allowpostexperience'] = $_G['group']['allowpostexperience'] && $showexperience;
  • }

复制代码

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

打开  source/post/post_newthread.php  找到537行
  • $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行
  • if($_G['group']['allowpostpoll']) {
  • $special = 1;
  • } elseif($_G['group']['allowposttrade']) {
  • $special = 2;
  • } elseif($_G['group']['allowpostreward']) {
  • $special = 3;
  • } elseif($_G['group']['allowpostactivity']) {
  • $special = 4;
  • } elseif($_G['group']['allowpostdebate']) {
  • $special = 5;
  • } elseif($_G['group']['allowpostexperience']) {
  • $special = 6;
  • }

复制代码

加入红色部分  。
打开source/language/forum  lang_template.php 语言包加入
  • 'post_newthreadexperience' => '使用心得',

复制代码

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

打开模板文件  template/default/forum/forumdisplay.htm  加入251行
  • <!--{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行
  • <!--{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行
  • <!--{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:;">
  • {lang post_newthreadexperience}</a></li><!--{/if}-->

复制代码

红色部分。

228行
  • <!--{elseif $special == 5}--><span>{lang post_newthreaddebate}</span>
  • <!--{elseif $special == 6}--><span>{lang post_newthreadexperience}</span>

复制代码

加入红色部分。

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


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

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


  
      

222.png (2.24 KB, 下载次数: 0)

111.png (1.67 KB, 下载次数: 0)


回复

使用道具 举报

倒秋风水 发表于 2011-10-25 12:47:30 | 显示全部楼层
学习啊
回复

使用道具 举报

auya 发表于 2011-11-17 21:04:01 | 显示全部楼层
高手啊
回复

使用道具 举报

shenyuanemo 发表于 2011-11-24 11:19:27 | 显示全部楼层
支持齐老师!
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-8-25 08:07 , Processed in 0.104640 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表