Emlog隐藏指定分类文章的几个不同表达方式
第一种方式:隐藏指定分类文章(ps:代码正常显示),以下代码均用默认模板测试,模板文件log_list.php中找到
<?php
if (!empty($logs)):
foreach($logs as $value):
?>
在此段代码后加入
<div <?php if($value['sortid']==1){echo 'style="display:none"';}?>>
在下面代码前加入
</div>
<?php
endforeach;
else:
?>
代码==1中的1为分类id,本代码来源于em论坛hackhp之手,不足之处就是查看源代码时是显示的。
-----------------------------------------------------------------------------------------------------------------------------------------
第二种方式:隐藏指定分类文章同时代码也隐藏
在模板文件log_list.php中找到下面代码
<?php
if (!empty($logs)):
foreach($logs as $value):
?>
替换为
<?php
if (!empty($logs)):
foreach($logs as $value): if ($value['sortid']==1) continue;
?>
代码==1中的1为分类id,如需实现多个分类隐藏,请使用下面代码
if(in_array($value['sortid'],array(1,2,3,4))){continue;}
把其中的分类id更改一下就可以了,本代码在5.3.1版本下测试正常,如果你的log_list.php未分离出首页模板,请勿使用此方法,否则对应分类里的文章也将被隐藏。
----------------------------------------------------------------------------------------------------------------------------------------
以上方法修改以后确实可以屏蔽指定的栏目文章在首页显示,但是首页文章数量会减少,被屏蔽的栏目的文章条目数在首页还是会被记录导致首页总少几篇文章而且和发布的被屏蔽的栏目文章数是对应的。下面介绍修改内核且不会减少数量的方法
具体修改的文件如下(此处以 EMLOG 5.3.1 为例 要屏蔽的文章分类 ID 为 8)
查找 Emlog 根目录include/controller/log_controller.php
找到第 1 处 $sqlSegment ='ORDER BY top DESC ,date DESC';
添加and sortid != 8 将其修改为$sqlSegment ='and sortid != 8 ORDER BY top DESC ,date DESC';
如需屏蔽多个分类 继续添加and sortid != *即可
-----------------------------------------------------------------------------------------------------------------------------------------
另外附带提一下禁止访问某个分类文章代码,代码来源于em论坛hackhp之手,以下代码放入模板header.php最顶端即可
<?php if($sortid==1){exit("禁止访问");}?>
发表评论