Emlog隐藏指定分类文章的几个不同表达方式

2023-05-10 20:39:48 浏览数 (2)

第一种方式:隐藏指定分类文章(ps:代码正常显示),以下代码均用默认模板测试,模板文件log_list.php中找到

代码语言:javascript复制
<?php 
if (!empty($logs)):
foreach($logs as $value): 
?>
在此段代码后加入
<div <?php if($value['sortid']==1){echo 'style="display:none"';}?>>
代码语言:javascript复制
在下面代码前加入
</div>
<?php 
endforeach;
else:
?>

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


第二种方式:隐藏指定分类文章同时代码也隐藏

在模板文件log_list.php中找到下面代码

代码语言:javascript复制
<?php 
if (!empty($logs)):
foreach($logs as $value): 
?>

替换为

代码语言:javascript复制
<?php 
if (!empty($logs)):
foreach($logs as $value): if ($value['sortid']==1) continue;
?>

代码==1中的1为分类id,如需实现多个分类隐藏,请使用下面代码

代码语言:javascript复制
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

代码语言:javascript复制
找到第 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最顶端即可

代码语言:javascript复制
<?php if($sortid==1){exit("禁止访问");}?>

题外话:其实很多的教程em论坛都可以找到了,只要你肯折腾。本站的emlog教程中也总结了一部分,有兴趣的话可以参考一下。

0 人点赞