去除分类信息发帖页面编辑器
分类信息功能确实很强大,但是还是有一点问题,那就是去除分类信息发布过程中论坛自带的编辑器。
我搜集了相关的信息,但是都没有解决方法。在官方论坛只有一个朋友提到了这个问题。可能有这样要求的人很少吧。没办法只能自己摸索。
我找到了控制发帖的模板文件,仔细的对比基础模板、活动模板、投票模板以及分类信息模板,看不出所以然。最后通过页面源码与基础发帖模板对比发现了控制的关键重点在于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行找到如下代码:
- <!--{if $showthreadsorts}-->
- <div class="exfm cl">
- <!--{template forum/post_sortoption}-->
- </div>
- <!--{elseif $adveditor}-->
- <!--{if $special == 1}--><!--{template forum/post_poll}-->
- <!--{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}-->
- <!--{elseif $special == 3}--><!--{template forum/post_reward}-->
- <!--{elseif $special == 4}--><!--{template forum/post_activity}-->
- <!--{elseif $special == 5}--><!--{template forum/post_debate}-->
- <!--{elseif $specialextra}--><div class="specialpost s_clear">$threadplughtml</div>
- <!--{/if}-->
- <!--{/if}-->
替换为:
- <!--{if $adveditor}-->
- <!--{if $special == 1}--><!--{template forum/post_poll}-->
- <!--{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}-->
- <!--{elseif $special == 3}--><!--{template forum/post_reward}-->
- <!--{elseif $special == 4}--><!--{template forum/post_activity}-->
- <!--{elseif $special == 5}--><!--{template forum/post_debate}-->
- <!--{/if}-->
- <!--{/if}-->
2、找到template/default/forum/post.htm文件,打开后在中部第192行找到如下代码:
- <!--{subtemplate forum/post_editor_body}-->
替换为:
- <!--{if $showthreadsorts}-->
- <div class="exfm cl">
- <!--{template forum/post_sortoption}-->
- </div>
- <!--{else}-->
- <!--{subtemplate forum/post_editor_body}-->
- <!--{/if}-->
如此修改的作用:
原来的程序运行是:首先调用post_editor_extra.htm文件,判断是否是分类信息,如果是分类信息则调用分类信息模板,返回post.htm文件在调用编辑器(这样就会显示自定义的分类信息内容和编辑器);如果不是分类信息,再判断是否是特殊主题以及主题类型,根据不同的主题类型调用不同的模板,然后返回post.htm调用编辑器(上部显示特殊主题模板,下部显示编辑器)。调用编辑器程序在post.htm文件中,无论怎样都会显示出来。
修改后的程序运行:首先调用post_editor_extra.htm文件,判断是否是特殊主题,如果是特殊主题就根据特殊主题类型调用对应的模板,并返回post.htm文件,之下下面的命令。即判断是否是分类信息,如果是分类信息则显示分类信息模板,不显示编辑器;如果不是分类信息,则显示编辑器,不显示分类信息。
【备注】以上只是我个人的见解与解决方法,这个方法未必是最好的,也可能会由缺陷,但我目前还想到更好的方法。只能这样先运行着。这个方法目前的第一个缺陷就是,所有的分类信息都不会显示编辑器,所以使用过程中请慎重。如果想让部分分类信息不显示编辑器的,请另想办法。
于。