总结一下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 }?>


admin 发布于  2015-4-29 19:34 

让emlog侧边栏显示彩色标签,随机显示标签,数量多少有你控制 PHP

emlog侧边栏显示彩色标签,随机显示标签,数量多少有你控制,本教程由 Mrxn 倾情发布,

嘿嘿,废话不多说,下面进入正题:

0X1:

打开模板的module.php,找到:widget:标签 字样,然后在


$tag_cache = $CACHE->readCache('tags');

下面添加如下两行代码:



$tag_cache = array_slice($tag_cache,0,42); //设置标签显示数量(0,num) 
shuffle($tag_cache);?>  <!--将数组打乱,即让它随机显示 <--> 

0X2  继续往下找到如下代码:

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

将其修改成如下代码:



<?php foreach($tag_cache as $value): $color = dechex(rand(0,16777215));?>
//设置颜色值范围,温馨提示:标签多颜色值范围大点好,反之,亦然

0X3: 最后一步,颜色效果引用:

<a href="<?php echo Url::tag($value['tagurl']); ?>" style="color:#<?php echo $color;//在标签链接href里面应用颜色样式 ;?>;"><?php echo $value['tagname']; ?>(<?php echo$value['usenum'];?>)</a>


最终效果就如我博客右侧的标签效果一样,刷新一次标签顺序变换一次,颜色也变换一次:

QQ截图20150429170354.png

如有不懂得,欢迎留言交流,这是我的代码:module.zip



admin 发布于  2015-4-29 15:49 

Emlog后台发布文章,添加缩略图地址,文章列表显示缩略图 代码人生

分析:我们为文章添加缩略图地址是保存到数据库中的,并且是保存在文章表中,这样做的原因是在取文章的时候,顺便取出缩略图地址,效率很高,不影响原有系统性能。

1)有些同学是从附件表取的。

2)有些同学是从内容摘要中解析出图片地址。

这个各有各的好处,这里不做评价,适合自己的是最好的。



楼主是在文章表中添加了一个字段:thumbUrl,见下图:

















代码编写开始 ------>>>>>



1.  我们在后台发布文章,添加缩略图地址,首先要提供一个可输入的编辑框,找到文章发布页面admin\views\add_log.php    




1) 文件中找到以下代码:

<div>

    <label for="title" id="title_label">输入文章标题</label>

    <input type="text" maxlength="200" name="title" id="title"/>

</div>

在以上代码下面添加如下代码:

<div>

    <label for="thumbUrl" id="thumbUrl_label">输入缩略图地址</label>

    <input type="text" maxlength="200" name="thumbUrl" id="thumbUrl"/>

</div>

代码描述:在文章标题下面添加了可输入缩略图地址的输入框。





2) 文中找到以下代码:

$("#title").focus(function(){$("#title_label").hide();});

$("#title").blur(function(){if($("#title").val() == '') {$("#title_label").show();}});

在以上代码下面添加如下代码:

$("#thumbUrl").focus(function(){$("#thumbUrl_label").hide();});

$("#thumbUrl").blur(function(){if($("#thumbUrl").val() == '') {$("#thumbUrl_label").show();}});

代码描述:添加文本框的JS特效,当鼠标点到这个文本框的时候,让里面的提示的字消失,鼠标离开的时候再显示。








2. 给录入缩略图地址的输入框添加CSS样式,和标题的输入框样式一致,美观。找到admin\views\css\css-min.css


查找#post #title替换为#post #title,#post #thumbUrl
查找#post #title_label替换为#post #title_label,#post #thumbUrl_label








3. 在文章编辑页面,也要加上缩略图地址编辑的输入框,使其可以编辑,找到文章编辑页面admin\views\edit_log.php



1) 文件中找到以下代码:

<div>

    <label for="title" id="title_label">输入文章标题</label>

    <input type="text" maxlength="200" name="title" id="title" value="<?php echo $title; ?>" />

</div>

在以上代码下面添加如下代码:

<div>

    <label for="thumbUrl" id="thumbUrl_label">输入缩略图地址</label>

    <input type="text" maxlength="200" name="thumbUrl" id="thumbUrl" value="<?php echo $thumbUrl; ?>"/>

</div>

代码描述:在文章标题下面添加了可编辑缩略图地址的输入框。





2) 文中找到以下代码:

$("#title").focus(function(){$("#title_label").hide();});

$("#title").blur(function(){if($("#title").val() == '') {$("#title_label").show();}});

在以上代码下面添加如下代码:

$("#thumbUrl").focus(function(){$("#thumbUrl_label").hide();});

$("#thumbUrl").blur(function(){if($("#thumbUrl").val() == '') {$("#thumbUrl_label").show();}});





3) 文中找到以下代码:

if ($("#title").val() != '')$("#title_label").hide();

在以上代码下面添加如下代码:

if ($("#thumbUrl").val() != '')$("#thumbUrl_label").hide();








4. 文章编辑页面,文章内容保存分为自动保存和手动保存,自动保存通过JS实现,找到admin\views\js\common.js





切记,在170行后面进行查找,170行之前也有,但不是我们要操作的。


找到:var title = $.trim($("#title").val());下面添加:var thumbUrl = $.trim($("#thumbUrl").val());
找到:+"&title="+encodeURIComponent(title)下面添加:+"&thumbUrl="+encodeURIComponent(thumbUrl)







5. 保存文章业务处理代码,找到admin\save_log.php文件


找到:$title = isset($_POST['title']) ? addslashes(trim($_POST['title'])) : '';
下面添加:$thumbUrl = isset($_POST['thumbUrl']) ? trim($_POST['thumbUrl']) : '';


找到:'title' => $title,下面添加:'thumbUrl' => $thumbUrl,







6. 前台查询文章列表业务代码,找到include\model\log_model.php


找到:$row['title'] = htmlspecialchars($row['title']);
下面添加:$row['thumbUrl'] = $row['thumbUrl'];


找到:$row['log_title'] = htmlspecialchars(trim($row['title']));
下面添加:$row['log_thumbUrl'] = $row['thumbUrl'];







7. 前台文章列表显示调用,在列表模板中通过以下代码输出缩略图:


<img src="<?php echo $value['log_thumbUrl']; ?>"/>



admin 发布于  2014-12-11 16:42 

给Emlog文章自动添加关键词,链接,方便SEO 技术文章

内链建设是网站SEO不可缺少的重要优化步骤,所以给博客文章内的关键词添加超链接是每位博主都会做的事,使用emlog博客的博主每次都要手动添加关键词链接很麻烦,wordpress和z-blog都有相关添加关键词链接的插件,emlog不通过插件也可以实现。

下面是我找到的给emlog关键词自动添加链接的方法。


使Emlog文章关键词自动添加链接的方法:


1.在emlog的/content/templates/default目录下新建一个字符串编码为utf-8的文件,并命名为globalnlbz.php。


2.在刚创建的globalnlbz.php文件中添加以下代码


<?php

 //关键字设置

 $gjz=array("Mrxn","mrxn.net","web安全","黑客技术","破解");

 //关键字连接设置

 $gjzlj=array(

 "<a href='https://mrxn.net' target='_blank' title=$gjz[0]>$gjz[0]</a>",

 "<a href='https://mrxn.net' target='_blank' title=$gjz[1]>$gjz[1]</a>",

 "<a href='https://mrxn.net/say/' target='_blank' title=$gjz[2]>$gjz[2]</a>",

 "<a href='https://mrxn.net/wpuse' target='_blank' title=$gjz[3]>$gjz[3]</a>",

 "<a href='https://mrxn.net/emlog' target='_blank' title=$gjz[4]>$gjz[4]</a>",

 );

 //加上连接

 for($i=0;$i<count($gjz);$i++){

 $log_content=ereg_replace(($gjz[$i]),$gjzlj[$i],$log_content);

 }

将array里的关键词修改为自己博客的关键词,然后再修改关键字链接设置下的关键词链接。想再添加多个关键词,就要在array里添加,然后在连接设置里添加链接。


3.找到并对echo_log.php文件进入编辑,找到以下代码:


if(!defined('EMLOG_ROOT')) {exit('error!');}

在其下面添加以下代码


/*内链接和备注

*include getViews('globalnlbz');

*/

include getViews('globalnlbz');

这个操作是在开始部分引用globalnlbz.php文件


4.最后,保存文件即可。

标签: 分享 emlog SEO

admin 发布于  2014-12-10 14:23 

emlog建站我们需要注意的几点安全问题和优化心得 技术文章


最近几年除了wordpress与Zblog被站长青睐外,还有很多站长也采用emlog建立自己的站。是一个个人站长,也不例外,用其建立了自己的站,用过一段后发现总体很好,简单、方面、SEO效果能力非常出众、模板众多。但毕竟一个开源的程序出来后就会被爆出各种漏洞,默认的设置对网站是一个危险的信号。所以今天根据最近自己的几点经验,来和大家总结下emlog在安全和建站两个方面需要注意的几个问题,如果大家有更多的心得,欢迎写成文章来分享。


首先是安全上需要注意的事项:


1、修改安全度高的密码:给网站设置一个安全程度比较高的密码,最好大小写混合加特殊符号,但是很多站长提问不知道在哪里修改密码,这里告诉大家,登陆后台之后,在设置--个人资料--就能看到。


2、修改后台默认登陆目录:后台默认的登陆目录如果是admin,那么相对就有点危险,最好还是修改一下,修改牵涉的文件分别是admin/globals.php、include/lib/view.php、t/index.php、templates/default/module.php、templates/default/header.php、templates/default/t.php,从这几个文件中搜索admin并替换为你想要的目录就可以了。这也是在安全上非常有必要的一步。


3、文件夹写入权限:如果使用的是服务器或者是VPS,那么直接登陆上去把根目录中的content文件夹修改为USER具有修改和写入权限就可以了,其它的尽量都压低权限。如果你把整个文件夹的写入修改权限都放开,那么就相当危险。


接着是SEO上的几点建议:


1、ico图片问题:如果大家做的是盈利性网站,比如淘宝客,那么建议大家都复制一个favicon.ico图标放入根目录,这样感觉更加真实,更加让用户容易产生信任感,如果是非营利性的网站或者博客,那么添加这个ICO小图标可以让网站更具有唯一性,更容易被用户记忆。


2、挑选模板事项:模板是SEO优化中不得不提的一个重点,尽量挑选简便的、图片少的,这样就更能够突出文字,在预览中,需要查看源代码,如果首页的标题在代码比较靠下的位置,那么这个模板在SEO的角度来说并不算一个合格的模板。尽量挑选正文内容靠左的模板。


3、关键词的布置:在模板文件夹的head文件中,添加meat base属性,属性的值就用域名或者品牌名,网站导航中不要使用关键词进行布局;页脚的版权中建议保留版权,但是可以再另外添加自己的版权,侧面的自由定制区域也可以添加我们自己的内容,但是这些内容最好包含关键词。


4、给rss订阅、登陆、管理、联系我们等链接加上nofollow属性,这写是在网站的头文件中包含,几乎每个页面都会存在,所以会浪费权重的传递,屏蔽之后权重会更加集中。


好了,今天的总结暂时就到这里。Mrxn在以后使用中总结更多的相关经验,并及时和大家分享。如果你也打算建立自己的网站或者博客,那么不妨先看看这篇文章,希望对你有帮助。欢迎转载,转载请保留链接,谢谢~


标签: 密码 emlog SEO

admin 发布于  2014-12-9 18:18 

分析emlog做站点的三点优势和四个缺点 技术文章

对于很多站长来说,除了耳熟能详的wp和zblog外,emlog博客也慢慢进入了人们的视野,因为本身足够的简单,所以发展非常迅速。今天就拿自己对emlog的使用心得来总结下它建站的优势和劣势。

优势方面大致可以分为几点:

第一、足够小巧简单。emlog几百k的数据让我们眼前一亮,相比dede动辄6、7MB大小来说,它显得非常小巧。即使zblog也足足比它大了好几倍,页面复杂了好几倍,这让很多喜欢简单的站长来说,非常受益。

第二、足够灵活快速。即使不会写php的站长,使用emlog也非常灵活快速。它右侧侧边栏可以随意自定义,并且位置也能自定义设置,比如一些日历插件、留言插件等等。

第三、免费模板多。官方提供了足够多的优秀模板,和wp一样,不论是从使用功能方面,还是外观方面,都有足够多喜欢emlog的用户来开发模板,这保证了基本能找到自己所需要的。

但同时,emlog也有自身的一些缺点:

第一、首当其中的就是不能html静态化。虽然emlog支持伪静态,但是很多时候还是需要静态化的,比如SEO方面的考虑,比如页面美观度方面的考虑,静态化基本已经是一个系统的标配功能了,搜索引擎也对静态化页面给予更好的对待,因此,希望以后能得到改善。

第二、head的元标记并不合理:元标记包含了标题、描述、tag标签和关键词标签。首先是标题,emlog默认的是每篇日志后边都会自动带上网站标题,但一般实际情况中,网站的标题考虑到SEO,所以会写的很长并且夹带关键词,这样导致每篇日志标题存在一定重复度;其次,博客的每个页面都是调用同一头部,如果标题和描述写的过长,就会直接影响每个页面。

第三、自定义页面不够完善:emlog自定义页面严格意义上来说就是一个单页,但这个单页并不等同于分类,单页并不支持写日志,因此这个单页并不太理想,基本属于鸡肋功能。但是创建单页之后,单页却会在导航中出现,导航中本来应该属于分类的,现在EMLOG这点也需要该井。

第四:emlog存在草稿箱的文章,在发布的时候不能自动获取当前时间,显示的你写草稿的时候的时间,很是无语。每次都得修改时间。

今天就总结三个优点和四个缺点吧。这些如果您认为不重要,那我只能说您SEO的站内优化功能需要好好提升一下,以上这几点,就是做站过程中优化需要格外注意的,毕竟,站内优化属于基本功,只有基本功扎实了,网站才能一帆风顺的发展。


admin 发布于  2014-12-8 09:59 

EMLOG下二级域名绑定子目录的伪静态规则 杂七杂八

这里说的二级域名绑定子目录,是指在主域名对应空间根目录装了EMLOG程序的情况,并且是linux+apache环境。我们想让二级域名指向子目录实现访问,就需要修改一下伪静态规则。首先,在你的空间管理平台中绑定二级域名(通常说接收)如:i.ewceo.com,同时域名也要做好解析工作(一般可以用*号泛解析), 剩下的就是配置.htaccess文件了,直接打开根目录下的.htaccess文件可以看到如下代码:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteBase /
RewriteRule . /index.php [L]
</IfModule>

现在我们以指定i.ewceo.com指向/i/目录为例修改以上代码:


<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.ewceo.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteBase /
RewriteRule . /index.php [L]
RewriteCond %{HTTP_HOST} ^i.ewceo.com$
RewriteCond %{REQUEST_URI} !^/i/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /i/$1
RewriteCond %{HTTP_HOST} ^i.ewceo.com$
RewriteRule ^(/)?index.php$ i/index.html [L]
</IfModule>

如此一来就可以让主站与二级域名站互不干扰了。

转载自:易玩稀有 ,以备不时之需!



admin 发布于  2014-12-6 18:08 

Gravatar被墙后解决头像不能正常显示的五种方法(持续更新中。。。) 技术文章

Gravatar被墙后,很多博客的头像显示都不正常了,网上也有很多的方法,但是不全面,今天Mrxn帮你搜集汇总,发布在Mrxn's Blog 。

方法一:

打开include/lib/function.base.php 找到如下代码:
function getGravatar($email, $s = 40, $d = 'mm', $g = 'g') {
        $hash = md5($email);
        $avatar = "http://www.gravatar.com/avatar/$hash?s=$s&d=$d&r=$g";
        return $avatar;
}

修改为
$avatar = "https://secure.gravatar.com/avatar/$hash?s=$s&d=$d&r=$g";

方法二:

同样打开include/lib/function.base.php

$avatar = "http://www.gravatar.com/avatar/$hash?s=$s&d=$d&r=$g";

修改为:$avatar = "http://gravatar.duoshuo.com/avatar/$hash?s=$s&d=$d&r=$g";

方法三:

也是打开include/lib/function.base.php

将/**
 * 获取Gravatar头像
 * http://en.gravatar.com/site/implement/images/
 * @param $email
 * @param $s size
 * @param $d default avatar
 * @param $g
 */
里面的
http://en.gravatar.com/site/implement/images/

修改为:http://cn.gravatar.com/site/implement/images/

方法四:缓存头像,本地缓存。

<?php
function get_avatar($mail,$size = '40')
{
        $email_md5=md5(strtolower($mail));//通过MD5加密邮箱
        $cache_path=EMLOG_ROOT."/content/templates/uu_hcms/cache"; //缓存文件夹路径
        if(!file_exists($cache_path))
        {
                mkdir($cache_path,0700);
        }
        $avatar_url=TEMPLATE_URL."cache/".$email_md5.'.jpg'; //头像相对路径
        $avatar_abs_url=$cache_path."/".$email_md5.'.jpg'; //头像绝对路径
        $cache_time=24*3600*7; //缓存时间为7天
         if (empty($default)) $default = $cache_path. '/default.jpg';
        if(!file_exists($avatar_abs_url) || (time()-filemtime($avatar_abs_url)) > $cache_time)//过期或图片不存在
        {
                $new_avatar = getGravatar($mail);
                copy($new_avatar,$avatar_abs_url);
        }
        return $avatar_url;
        }
?>

插入module.php中,修改自12年某emer的代码。缓存7天可以自己修改,缓存呢可以加快页面是显示速度,但也不能那么及时更新头像了。看自己需要吧。对路由服务器来说,加载留言板的速度无疑快了不少。

使用方法:在module.php的最新评论 显示评论 显示子评论里面将getGravatar替换成get_avatar 。OK 完工。


方法五:自定义默认头像,个性DIY

详情,请查看我早期的文章:让emlog的留言板和评论使用本地头像,加速访问,提升美观

更多方法正在搜集研究中,尽请期待!请关注我的博客:https://mrxn.net 

如果你有好的方法或者是文章,欢迎投稿或者是注册:  注册    匿名投稿


admin 发布于  2014-11-30 06:52