到目前为止 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后台更新下 数据缓存 即可

发表回复

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

蜀ICP备15014327号-1