总结一下EMLOG获取固定数量的网站标签几种方法 PHP
标签功能是WEB发展的产物,EMLOG当然也具备文章添加标签的功能。而且在EMLOG的侧边栏组件中,用户也可以手动增加该模块。
不过,有一个小小的问题是,侧边栏组件中的标签默认是显示网站所有标签的,如果你的标签过多,势必会影响到网站的美观度。我的博客就是这样,标签太多了,模板默认是全部显示的,严重影响美观!所以Mrxn就网上搜索和自己实践,修改,验证,总结出在emlog中如何来获取固定数量的网站标签.
No.1
<?php // 获取EMLOG固定数量网站标签 // Mrxn's Blog 收集整理发布 mrxn.net function getTags($num){ global $CACHE; $tag_cache = $CACHE->readCache('tags'); foreach($tag_cache as $key => $value): if($key < $num): ?> <span><a href="<?php echo Url::tag($value['tagurl']); ?>" title="<?php echo $value['usenum']; ?> 篇文章"> <?php echo $value['tagname']; ?></a></span> <?php endif; endforeach; } ?>
如上代码既实现了获取EMLOG网站固定数量标签的功能呢,参数$num即为用户设置的标签个数。使用方法是先将该段代码写在模板文件module.php当中,然后再模板前台文件中写入一行调用该函数的代码即可,如下:
<?php //把这一段代码写到模板文件中即可实现调用10个网站标签 getTags(10); ?>
另外,如果希望调用的标签随机显示,则需要使用shuffle()函数进行一次顺序的打乱。函数代码如下,相对于之前来说仅仅只添加了一行代码:
<?php // 获取EMLOG固定数量网站标签(随机排序) // Mrxn's Blog 收集整理发布 mrxn.net function getTags($num){ global $CACHE; $tag_cache = $CACHE->readCache('tags'); shuffle($tag_cache); //添加这行代码实现标签随机排序 foreach($tag_cache as $key => $value): if($key < $num): ?> <span><a href="<?php echo Url::tag($value['tagurl']); ?>" title="<?php echo $value['usenum']; ?> 篇文章"> <?php echo $value['tagname']; ?></a></span> <?php endif; endforeach; } ?>No.2
注:这个需要改动内核文件,请emer注意,新手慎用.Mrxn问题提示:使用之前做好备份!
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这样就行了。
No.3可以调整标签字体的大小,颜色
//widget:标签 function widget_tag($title){ global $CACHE; $tag_cache = $CACHE->readCache('tags');?> <li> <h3><span><?php echo $title; ?></span></h3> <ul id="blogtags"> <?php foreach($tag_cache as $value): $minFontSize=12; //最小字体大小,可根据需要自行更改 $maxFontSize=20; //最大字体大小,可根据需要自行更改 $style='font-size:'.($minFontSize+lcg_value()*(abs($maxFontSize-$minFontSize))).'px;color:#'.dechex(rand(0,255)).dechex(rand(0,196)).dechex(rand(0,255)); $text=" <a href='".Url::tag($value['tagurl'])."' title='".$value['usenum']."篇日志'><span style='".$style."'>".$value['tagname']."</span></a>"; echo $text; endforeach; ?> </ul> </li> <?php }?>