emlog隐藏指定分类的文章
[ 2015/01/02, Emlog , 2812阅, 0评 ]

1.隐藏指定分类文章(ps:代码正常显示),以下代码均用默认模板测试

<?php 
if (!empty($logs)):
foreach($logs as $value): 
?>
<div <?php if($value['sortid']==1){echo 'style="display:none"';}?>>//如果是指定的分类,则输出<div style="display:none">
循环体
</div>//div结束标记
<?php 
endforeach;
else:
?>

代码==1中的1为分类id,本代码来源于em论坛hackhp之手,不足之处就是查看源代码时是显示的。

2.隐藏指定分类文章同时代码也隐藏

把下面代码

<?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未分离出首页模板,请勿使用此方法,否则对应分类里的文章也将被隐藏。

以上方法修改以后确实可以屏蔽指定的栏目文章在首页显示,但是首页文章数量会减少,被屏蔽的栏目的文章条目数在首页还是会被记录导致首页总少几篇文章而且和发布的被屏蔽的栏目文章数是对应的。

3.修改内核且不会减少数量的方法:

具体修改的文件如下(此处以 EMLOG 5.2.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 != *即可 

有朋自远方来...评论一下呗O(∩_∩)O