到目前为止 emlog 的标签数量控制问题程序本身并没得得到解决,尽管很多模板已经解决了这个问题,但官方不大重视这个问题。那么如何控制 emlog 的标签数量问题呢?解决方法有两种哦,通过修改代码哦

一、修改模版法

打开你模版下的 module.php,对应修改下。

 

//widget:标签 

function widget_tag($title){
global $CACHE;
$tag_cache = $CACHE->readCache('tags');

 shuffle($tag_cache);

//先随机打乱顺序

 $tag_cache = array_slice($tag_cache,0,15);?>

//15 就是输出 15 个 

 <div class="side_item tagcloud"> 

 <span class="header"><h1 class="title">

<?php echo $title; ?></h1></span>
<div class="taglist"> 

 <?php foreach($tag_cache as $value): ?>

 <a href="<?php echo Url::tag($value['tagurl']); ?>" title="<?php echo $value['usenum']; ?> 篇日志">

<?php echo $value['tagname']; ?></a>
<?php endforeach; ?>

 </div>

 </div>

 <?php }?>

 

二、程序本身修改法

 

 emlog 使用缓存的方法,事先将全部标签存放在\content\cache\tags 缓存文件中,读取的时候使用模板中的 $tag_cache = $CACHE->readCache('newtags') 读取。

 

    1. 找到\include\lib\cache.php 并打开

    2. 找到 private function mc_tags() 函数

你会发现他的 sql 语句是将你设置的所有标签全部查询出来,如果你的标签设置很多时候,打开一次就查询一次,显然不好。所以为将他改为每次随机查询 30 个标签出来,让他放到缓存文件中。

    3. 将 $query = $this->db->query("SELECT gid FROM " . DB_PREFIX . "tag"); 改为 $query = $this->db->query("SELECT gid FROM " . DB_PREFIX . "tag  ORDER BY RAND() LIMIT 30");

    4. 将 $query = $this->db->query("SELECT tagname,gid FROM " . DB_PREFIX . "tag"); 改为 $query = $this->db->query("SELECT tagname,gid FROM " . DB_PREFIX . "tag ORDER BY RAND() LIMIT 30");

这样每次显示出来的标签都是随机抽出来的 30 个,当然这个数字你可以自己改,你想显示多少就改成多少,而且你可以通过更改查询条件来指定你要显示的标签,比如你如果想显示的 30 个标签不是随机的,而是你最新的 30 个,只需要将后面查询条件改为:

DESC LIMIT 0,30 这样就行了。

3. 最后到你的 emlog 后台更新下 数据缓存 即可

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注