冯 海

一个程序新人菜鸟的日记,希望大家多多关照。QQ:32316131

去除分类信息发帖页面编辑器

分类信息功能确实很强大,但是还是有一点问题,那就是去除分类信息发布过程中论坛自带的编辑器。
  我搜集了相关的信息,但是都没有解决方法。在官方论坛只有一个朋友提到了这个问题。可能有这样要求的人很少吧。没办法只能自己摸索。
  我找到了控制发帖的模板文件,仔细的对比基础模板、活动模板、投票模板以及分类信息模板,看不出所以然。最后通过页面源码与基础发帖模板对比发现了控制的关键重点在于post.htm文件中得两行代码:
  <!--{subtemplate forum/post_editor_extra}-->  调用post_editor_extra.htm文件
  <!--{subtemplate forum/post_editor_body}-->  调用post_editor_body.htm文件
  其中<!--{subtemplate forum/post_editor_body}-->就是调用编辑器程序文件的代码。
  而<!--{subtemplate forum/post_editor_extra}-->除基本功能外,最重要的就是判断发帖的类型,根据不同的类型采用不同的模板。在这个文件中采用if语句进行条件判断。如果想去除编辑器只要去除
  <!--{subtemplate forum/post_editor_body}-->即可,但是这样将导致整个论坛都没有编辑器。并且<!--{subtemplate forum/post_editor_body}-->在post_editor_extra.htm中的if语句下无法调用。
所以如果想只去除分类信息页面的编辑器只能修改post.htm文件。经过半天的时间的尝试,终于解决了该问题。具体方法如下。
  1、找到template/default/forum/post_editor_extra.htm文件,打开后在尾部第60行找到如下代码:

  1. <!--{if $showthreadsorts}-->
  2. <div class="exfm cl">
  3. <!--{template forum/post_sortoption}-->
  4. </div>
  5. <!--{elseif $adveditor}-->
  6. <!--{if $special == 1}--><!--{template forum/post_poll}-->
  7. <!--{elseif $special == 2 && ($_G[gp_action] != 'edit' || ($_G[gp_action] == 'edit' && ($thread['authorid'] == $_G['uid'] && $_G['group']['allowposttrade'] || $_G['group']['allowedittrade'])))}--><p class="xg1">{lang post_message1}</p><!--{template forum/post_trade}-->
  8. <!--{elseif $special == 3}--><!--{template forum/post_reward}-->
  9. <!--{elseif $special == 4}--><!--{template forum/post_activity}-->
  10. <!--{elseif $special == 5}--><!--{template forum/post_debate}-->
  11. <!--{elseif $specialextra}--><div class="specialpost s_clear">$threadplughtml</div>
  12. <!--{/if}-->
  13. <!--{/if}-->
复制代码

  替换为:

  1. <!--{if $adveditor}-->
  2. <!--{if $special == 1}--><!--{template forum/post_poll}-->
  3. <!--{elseif $special == 2 && ($_G[gp_action] != 'edit' || ($_G[gp_action] == 'edit' && ($thread['authorid'] == $_G['uid'] && $_G['group']['allowposttrade'] || $_G['group']['allowedittrade'])))}--><p class="xg1">{lang post_message1}</p><!--{template forum/post_trade}-->
  4. <!--{elseif $special == 3}--><!--{template forum/post_reward}-->
  5. <!--{elseif $special == 4}--><!--{template forum/post_activity}-->
  6. <!--{elseif $special == 5}--><!--{template forum/post_debate}-->
  7. <!--{/if}-->
  8. <!--{/if}-->
复制代码

  2、找到template/default/forum/post.htm文件,打开后在中部第192行找到如下代码:

  1. <!--{subtemplate forum/post_editor_body}-->
复制代码

  替换为:

  1. <!--{if $showthreadsorts}-->
  2. <div class="exfm cl">
  3. <!--{template forum/post_sortoption}-->
  4. </div>
  5. <!--{else}-->
  6. <!--{subtemplate forum/post_editor_body}-->
  7. <!--{/if}-->
复制代码

  如此修改的作用:
  原来的程序运行是:首先调用post_editor_extra.htm文件,判断是否是分类信息,如果是分类信息则调用分类信息模板,返回post.htm文件在调用编辑器(这样就会显示自定义的分类信息内容和编辑器);如果不是分类信息,再判断是否是特殊主题以及主题类型,根据不同的主题类型调用不同的模板,然后返回post.htm调用编辑器(上部显示特殊主题模板,下部显示编辑器)。调用编辑器程序在post.htm文件中,无论怎样都会显示出来。
  修改后的程序运行:首先调用post_editor_extra.htm文件,判断是否是特殊主题,如果是特殊主题就根据特殊主题类型调用对应的模板,并返回post.htm文件,之下下面的命令。即判断是否是分类信息,如果是分类信息则显示分类信息模板,不显示编辑器;如果不是分类信息,则显示编辑器,不显示分类信息。
  【备注】以上只是我个人的见解与解决方法,这个方法未必是最好的,也可能会由缺陷,但我目前还想到更好的方法。只能这样先运行着。这个方法目前的第一个缺陷就是,所有的分类信息都不会显示编辑器,所以使用过程中请慎重。如果想让部分分类信息不显示编辑器的,请另想办法。
于。 

posted @ 2019-03-08 09:55  秋天来了哟  阅读(153)  评论(0编辑  收藏  举报
认识就是缘份,愿天下人都快乐!
QQ: 32316131
Email: 32316131@qq.com