EMLOG上实现面包屑导航的各种代码 emlog教程

面包屑导航对于网站的重要性是不言而喻的,不仅可以帮助访客精准定位自己当前所在的位置,也能引导搜索引擎爬虫更深层次的抓取网站上的内容。

尽管如此,EMLOG原生模板上并没有面包屑导航这一功能,因此,博客志就来为大家分享一些在EMLOG的文章页和列表页等位置设置面包屑导航的代码。

一、操作步骤

1、打开模板文件module.php,在合适的位置粘贴如下代码

<?php
//blog-tool:面包屑导航
function sortbread($sortid){
    global $CACHE; 
    $sort_cache = $CACHE->readCache('sort');
    ?>
    <?php if (isset($sort_cache[$sortid])): ?>
    <?php if (isset($sort_cache[$sort_cache[$sortid]['pid']])): ?>
    <a href="<?php echo Url::sort($sort_cache[$sortid]['pid']); ?>"><?php echo $sort_cache[$sort_cache[$sortid]['pid']]['sortname']; ?></a> &gt; 
    <?php endif; ?>
    <a href="<?php echo Url::sort($sortid); ?>"><?php echo $sort_cache[$sortid]['sortname'];?></a> 
    <?php endif;?>
<?php }?>

2、打开模板文件echo_log.php,在合适的位置粘贴如下代码

<a href="<?php echo BLOG_URL; ?>">首页</a> &gt; <?php sortbread($sortid); ?> &gt; 正文

3、打开模板文件log_list.php,选择合适的代码粘贴在在合适的位置

<a href="<?php echo BLOG_URL; ?>">首页</a> &gt; <?php sortbread($sortid); ?>
<?php if($params[1]=='tag'){?>
标签为【<?php echo urldecode($params[2]);?>】的记录
<?php }elseif($params[1]=='author'){?>
作者为【<?php echo blog_author($author);?>】的记录
<?php }elseif($params[1]=='keyword'){?>
关键字【<?php echo htmlspecialchars(urldecode($params[2]));?>】的记录
<?php }elseif($params[1]=='record'){?>
归档为【<?php echo substr($params[2],0,4).'年'.substr($params[2],4,2).'月';if(strlen($params[2])=="8"){echo substr($params[2],6,2).'日';}?>】的记录
<?php }?>

二、注意事项

1、本教程列表页面包屑导航的代码粘贴后可能会与原生导航出现冲突,从而占据原生导航位置,需要自行修改代码


博客志 发布于  2019-9-8 10:00 

EMLOG非插件获取评论用户操作系统与浏览器信息 emlog教程

很多EMLOG网站都有一个很酷炫的功能,那就是可以展示评论用户的操作系统、浏览器等信息,现在就来为大家分享一下EMLOG非插件获取评论用户操作系统与浏览器信息的方法。


博客志 发布于  2019-9-8 10:00 

EMLOG在文章底部加入四个漂亮按钮的方法 emlog教程

很多EMLOG网站的文章底部都有评论、赞助之类的按钮,但他们对于功能的实现是基于模板的,而对于使用其他模板的用户只能对于这样漂亮的功能垂涎三尺,那么,今天博客志就来分享EMLOG在文章底部加入四个漂亮按钮的方法。

一、操作步骤

1、打开模板文件echo_log.php,在合适的位置添加如下代码

<div class="log_a"> 
<span class="zd_1"><a href="#comments" > <i class="fa fa-comment"></i> 评论一下</a></span> 
<span class="zd_2"><a href="图片地址" ><i class="fa fa-yen"></i> 赞助本博</a></span> 
<span class="zd_3"><a href="http://user.qzone.qq.com/10000" target="_blank"> <i class="fa fa-android"></i> 关注空间</a></span> 
 <span class="zd_4"><a href="http://wpa.qq.com/msgrd?v=3&uin=10000&site=qq&menu=yes" > <i class="fa fa-qq"></i> 联系站长</a></span>
</div>

2、打开公共css文件,添加如下代码

.log_a{text-align:center;width:100%;margin:30px auto 10px;height:45px;}
.log_a .zd_1{display: inline-block;color:#fff;background:#5cb85c;font-size:14px;padding:10px 20px;font-weight:bold;box-shadow: 0 0 4px 1px rgba(0,150,0,0.3);border-radius:4px;background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:30px 30px;}
.log_a .zd_2{display: inline-block;margin-left:20px;color:#fff;background:#799ca9;padding:10px 20px;font-size:14px;font-weight:bold;box-shadow:0 0 4px 1px rgba(0,150,0,0.3);border-radius:4px;background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:30px 30px;}
.log_a .zd_3{display: inline-block;margin-left:20px;color:#fff;background:#573b69;font-size:14px;padding:10px 20px;font-weight:bold;box-shadow: 0 0 4px 1px rgba(0,150,0,0.3);border-radius:4px;background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:30px 30px;}
.log_a .zd_4{display: inline-block;margin-left:20px;color:#fff;background:#63A8DF;padding:10px 20px;font-size:14px;font-weight:bold;box-shadow:0 0 4px 1px rgba(0,150,0,0.3);border-radius:4px;background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:30px 30px;}
.log_a .zd_1 a,.zd_2 a,.zd_3 a,.zd_4 a{color:#fff}
.zd_1:hover,.zd_2:hover,.zd_3:hover,.zd_4:hover{background:#00aff0;cursor:pointer;background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px;}

二、注意事项

1、本教程中所使用的图片地址、QQ空间和联系QQ都需要修改为自己的


博客志 发布于  2019-9-5 11:25 

EMLOG实现多域名访问全站的方法 emlog教程

相信很多站长手里的域名不只有两个,但拿来做网站的可能只有一个,毕竟人的精力是有限的,于是一些人喜欢将多个域名绑定在同一个网站上,实现多域名访问一网站,那么今天博客志就来分享一个EMLOG实现多域名访问全站的方法。

一、操作步骤

1、打开根目录下init.php文件,大约在第32行,找到如下代码

//站点固定地址
define('BLOG_URL', Option::get('blogurl'));

2、把上面的代码替换成如下代码

//define('BLOG_URL', Option::get('blogurl'));
preg_match_all('/\{(.*?)\}/',Option::get('blogurl') ,$blogurl, PREG_SET_ORDER);
$BLOGURL = explode("|",$blogurl[0][1]);
if( in_array($_SERVER['HTTP_HOST'],$BLOGURL) === true ){
    $BLOG_URL_EXP = "http://".$_SERVER['HTTP_HOST']."/";
}else{
    $BLOG_URL_EXP = "http:/127.0.0.1/"; //该域名修改为自己的域名,
}
    define('BLOG_URL', $BLOG_URL_EXP);

3、打开管理后台,依次点击 - 设置,将站点地址修改为如下地址,多域名间用 | 即可

 http://{域名1|域名2|域名3|以此类推}/

二、注意事项

1、本教程中第3步可以参照如下修改格式:http://{域名1|域名2|域名3|以此类推}/,理论上不限域名数量


博客志 发布于  2019-9-5 11:25 

EMLOG查看源代码第一行有空格的解决办法 emlog教程

相信很多EMLOG站长都遇到过这样的问题,就是在编辑模板的时候代码是正常的,但查看前台源代码的时候却发现源码的第一行出现了空行或者是空格,但此时后台的代码页没有任何的空行等异常。

实际上,很多PHP语言编写的网站在查看页面源代码时都会出现顶部有一部分空白的情况,但具体是什么原因造成的,作为小白的博客志并不清楚,但博客志之前请教过蓝叶大神并得到了解决方案,今天就来分享EMLOG查看源代码第一行有空格的解决办法。

一、操作步骤

1、打开模板文件header.php,在头部找到如下代码

require_once View::getView('module');

2、在上述代码后面添加ob_clean();,如下即可

require_once View::getView('module');ob_clean();

二、原理解析

未知,但确实可以解决问题


博客志 发布于  2019-9-5 11:25 

EMLOG修改微语字数有限制的方法 emlog教程

EMLOG的微语有140个字的限制,对于高度依赖该功能的用户来说,这样的限制显然束手束脚,因此我们有必要对EMLOG微语的字数限制进行修改,现在就来分享一个EMLOG修改微语字数有限制的方法。

一、操作步骤

1、打开文件admin/views/twitter.php,搜索140

<div class="msg">你还可以输入140字</div>
var n = 140 - t.length;
$(".huifu span").text('回复长度需在140个字内');
if (t.length > 140){return false;}

2、将上述文件中搜索到的140修改为想要的数字,比如500

<div class="msg">你还可以输入500字</div>
var n = 500 - t.length;
$(".huifu span").text('回复长度需在500个字内');
if (t.length > 500){return false;}

3、打开文件admin/views/index.php,搜索140

<input type="submit" value="发布" onclick="return checkt();"/> <a href="javascript:closet();">取消</a> <span>(你还可以输入140字)</span>
var n = 140 - t.length;
 $(".tbutton span").html("(你还可以输入140字)");

4、将上述文件中搜索到的140修改为想要的数字,比如500

<input type="submit" value="发布" onclick="return checkt();"/> <a href="javascript:closet();">取消</a> <span>(你还可以输入500字)</span>
var n = 500 - t.length;
 $(".tbutton span").html("(你还可以输入500字)");

二、原理解析

其实就是分别修改内核和微语发布页面上对微语140个字的显示,将其修改为指定数字即可


博客志 发布于  2019-9-5 11:25 

EMLOG在文章列表显示文章摘要的方法 emlog教程

不管是EMLOG原生模板还是市面上主流模板,如果站长不在文章编辑页设置文章摘要的话,那么文章列表页基本都会显示的是文章的全文,这样篇幅太长的展示效果并不利于网站首页和列表页。

因此,我们有必要对EMLOG列表页展示的内容进行限制,今天我们就来分享一些EMLOG在文章列表显示文章摘要的方法。

一、调用指定数量的文章摘要

1、打开模板文件,找到如下代码

<?php echo $value['log_description']; ?>

2、将上面的代码替换为下面的代码

<?php echo subString(strip_tags($value['log_description']),0,50);?>

3、保存覆盖,查看效果

二、设置文章摘要并调用

1、在文章编辑页面,下拉,找到文章摘要栏

2、浓缩文章内容,填写在摘要里,然后发布

3、打开任意列表页,查看效果

二、原理解析

其实就是将文章页链接上的post替换为其他你需要的字符而已,比如emlog、article等等你喜欢的任意字符

当然,也可以参考博客志之前分享的EMLOG去掉文章页URL上的post的几种方法,达到彻底修改链接和伪静态的目的。

三、注意事项

1、本教程中所要修改的3个post,必须保证替换后的字符必须完全一致,否则会导致链接报错

2、本教程仅适用于EMLOG在默认链接下的样式修改,如果要启用URL重写/伪静态,则该教程自动失效


博客志 发布于  2019-9-4 08:10 

EMLOG显示评论者IP地理信息的方法 emlog教程

为了将留言访客的资料设置的更全面,很多站长都在前端进行了评论者IP地址的展现,EMLOG原生模板中没有这项功能,因此博客志就来分享一个EMLOG显示评论者IP地理信息的方法。

一、操作步骤

1、打开模板文件module.php,在最后插入如下代码

<?php
 //获取IP地理地址
$data = '254.254.254.254';
 class IpLocation {
      var $fp;
      var $firstip;
      var $lastip;
      var $totalip;

      function getlong() {
         $result = unpack('Vlong', fread($this->fp, 4));
         return $result['long'];
      }

     function getlong3() {
         $result = unpack('Vlong', fread($this->fp, 3).chr(0));
         return $result['long'];
      }

      function packip($ip) {
         return pack('N', intval(ip2long($ip)));
      }

      function getstring($data = "") {
         $char = fread($this->fp, 1);
         while (ord($char) > 0) {
             $data .= $char;
             $char = fread($this->fp, 1);
         }
         return $data;
      }

      function getarea() {
         $byte = fread($this->fp, 1);
         switch (ord($byte)) {
             case 0:
                $area = "";
                break;
             case 1:
             case 2:
                fseek($this->fp, $this->getlong3());
                $area = $this->getstring();
                break;
             default: 
                $area = $this->getstring($byte);
                break;
         }
         return $area;
         }

      function getlocation($ip) {

         if (!$this->fp) return null;
         $location['ip'] = gethostbyname($ip); 
         $ip = $this->packip($location['ip']);
         $l = 0; 
         $u = $this->totalip;
         $findip = $this->lastip;
         while ($l <= $u) { 
             $i = floor(($l + $u) / 2); 
             fseek($this->fp, $this->firstip + $i * 7);
             $beginip = strrev(fread($this->fp, 4));
             if ($ip < $beginip) {
                $u = $i - 1;
             }
             else {
                fseek($this->fp, $this->getlong3());
                $endip = strrev(fread($this->fp, 4));
                if ($ip > $endip) {
                    $l = $i + 1; 
                }
                else {
                    $findip = $this->firstip + $i * 7;
                    break;
                }
             }
         }
         fseek($this->fp, $findip);
         $location['beginip'] = long2ip($this->getlong()); 
         $offset = $this->getlong3();
         fseek($this->fp, $offset);
         $location['endip'] = long2ip($this->getlong());
         $byte = fread($this->fp, 1); 
         switch (ord($byte)) {
             case 1: 
                $countryOffset = $this->getlong3();
                fseek($this->fp, $countryOffset);
                $byte = fread($this->fp, 1);
                switch (ord($byte)) {
                    case 2: 
                       fseek($this->fp, $this->getlong3());
                       $location['country'] = $this->getstring();
                       fseek($this->fp, $countryOffset + 4);
                       $location['area'] = $this->getarea();
                       break;
                    default: 
                       $location['country'] = $this->getstring($byte);
                       $location['area'] = $this->getarea();
                       break;
                }
                break;
             case 2:
                fseek($this->fp, $this->getlong3());
                $location['country'] = $this->getstring();
                fseek($this->fp, $offset + 8);
                $location['area'] = $this->getarea();
                break;
             default: 
                $location['country'] = $this->getstring($byte);
                $location['area'] = $this->getarea();
                break;
         }
         if ($location['country'] == " CZNET") { 
             $location['country'] = "未知";
         }
         if ($location['area'] == " CZNET") {
             $location['area'] = "";
         }
         return $location;
      }

      function IpLocation($filename = "qqwry.dat") {
         $this->fp = 0;
         if (($this->fp = @fopen($filename, 'rb')) !== false) {
             $this->firstip = $this->getlong();
             $this->lastip = $this->getlong();
             $this->totalip = ($this->lastip - $this->firstip) / 7;
             register_shutdown_function(array(&$this, '_IpLocation'));
         }
      }

      function _IpLocation() {
         if ($this->fp) {
             fclose($this->fp);
         }
         $this->fp = 0;
      }
 }

 function getaddress($myip){
 $ipOrDomain=$myip;
 $iplocation = new IpLocation();
 $location = $iplocation->getlocation($ipOrDomain);
 $address=mb_convert_encoding($location['country'].$location['area'], "utf-8", "gbk");
 return $address;
 }
 ?>

2、或者插入如下代码也可以,效果一样

<?php
function convertip($ip) {  
    $dat_path = EMLOG_ROOT.'/qqwry.dat'; //*数据库文件路径*// 
    if(!$fd = @fopen($dat_path, 'rb')){  
        return 'IP数据库文件不存在或者禁止访问或者已经被删除!';  
    }  
    $ip = explode('.', $ip);  
    $ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];  
    $DataBegin = fread($fd, 4);  
    $DataEnd = fread($fd, 4);  
    $ipbegin = implode('', unpack('L', $DataBegin));  
    if($ipbegin < 0) $ipbegin += pow(2, 32);  
    $ipend = implode('', unpack('L', $DataEnd));  
    if($ipend < 0) $ipend += pow(2, 32);  
    $ipAllNum = ($ipend - $ipbegin) / 7 + 1;  
    $BeginNum = 0;  
    $EndNum = $ipAllNum;  
    while($ip1num>$ipNum || $ip2num<$ipNum) {  
        $Middle= intval(($EndNum + $BeginNum) / 2);  
        fseek($fd, $ipbegin + 7 * $Middle);  
        $ipData1 = fread($fd, 4);  
        if(strlen($ipData1) < 4) {  
            fclose($fd);  
            return '系统出错!';  
        }  
        $ip1num = implode('', unpack('L', $ipData1));  
        if($ip1num < 0) $ip1num += pow(2, 32);  
        if($ip1num > $ipNum) {  
            $EndNum = $Middle;  
            continue;  
        }  
        $DataSeek = fread($fd, 3);  
        if(strlen($DataSeek) < 3) {  
            fclose($fd);  
            return '系统出错!';  
        }  
        $DataSeek = implode('', unpack('L', $DataSeek.chr(0)));  
        fseek($fd, $DataSeek);  
        $ipData2 = fread($fd, 4);  
        if(strlen($ipData2) < 4) {  
            fclose($fd);  
            return '系统出错!';  
        }  
        $ip2num = implode('', unpack('L', $ipData2));  
        if($ip2num < 0) $ip2num += pow(2, 32);  
        if($ip2num < $ipNum) {  
            if($Middle == $BeginNum) {  
                fclose($fd);  
                return '未知';  
            }  
            $BeginNum = $Middle;  
        }  
    }  
    $ipFlag = fread($fd, 1);  
    if($ipFlag == chr(1)) {  
        $ipSeek = fread($fd, 3);  
        if(strlen($ipSeek) < 3) {  
            fclose($fd);  
            return '系统出错!';  
        }  
        $ipSeek = implode('', unpack('L', $ipSeek.chr(0)));  
        fseek($fd, $ipSeek);  
        $ipFlag = fread($fd, 1);  
    }  
    if($ipFlag == chr(2)) {  
        $AddrSeek = fread($fd, 3);  
        if(strlen($AddrSeek) < 3) {  
            fclose($fd);  
            return '系统出错!';  
        }  
        $ipFlag = fread($fd, 1);  
        if($ipFlag == chr(2)) {  
            $AddrSeek2 = fread($fd, 3);  
            if(strlen($AddrSeek2) < 3) {  
                fclose($fd);  
                return '系统出错!';  
            }  
            $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));  
            fseek($fd, $AddrSeek2);  
        } else {  
            fseek($fd, -1, SEEK_CUR);  
        }  
        while(($char = fread($fd, 1)) != chr(0))  
        $ipAddr2 .= $char;  
        $AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));  
        fseek($fd, $AddrSeek);  
        while(($char = fread($fd, 1)) != chr(0))  
        $ipAddr1 .= $char;  
    } else {  
        fseek($fd, -1, SEEK_CUR);  
        while(($char = fread($fd, 1)) != chr(0))  
        $ipAddr1 .= $char;  

        $ipFlag = fread($fd, 1);  
        if($ipFlag == chr(2)) {  
            $AddrSeek2 = fread($fd, 3);  
            if(strlen($AddrSeek2) < 3) {  
                fclose($fd);  
                return '系统出错!';  
            }  
            $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));  
            fseek($fd, $AddrSeek2);  
        } else {  
            fseek($fd, -1, SEEK_CUR);  
        }  
        while(($char = fread($fd, 1)) != chr(0)){  
            $ipAddr2 .= $char;  
        }  
    }  
    fclose($fd);  
    if(preg_match('/http/i', $ipAddr2)) {  
        $ipAddr2 = '';  
    }  
    $ipaddr = "$ipAddr1 $ipAddr2";  
    $ipaddr = preg_replace('/CZ88.Net/is', '', $ipaddr);  
    $ipaddr = preg_replace('/^s*/is', '', $ipaddr);  
    $ipaddr = preg_replace('/s*$/is', '', $ipaddr);  
    if(preg_match('/http/i', $ipaddr) || $ipaddr == '') {  
        $ipaddr = '未知';  
    }  
    $ipaddr = iconv('gbk', 'utf-8//IGNORE', $ipaddr);   
    if( $ipaddr != '  ' )  
        return $ipaddr;  
    else 
        $ipaddr = '评论者来自火星,无法或者其所在地!';  
        return $ipaddr;  
}
?>

3、在需要显示评论者IP地址的地方,插入如下代码

<?php echo getaddress($comment['ip']);?>

4、下载纯真IP数据库并安装到本地电脑,将安装目录里的qqwry.dat文件提取出来,上传到网站根目录

5、打开任意文章页,测试评论即可

二、原理解析

其实就是将文章页链接上的post替换为其他你需要的字符而已,比如emlog、article等等你喜欢的任意字符

三、注意事项

1、本教程中所必须的qqwry.dat文件放置的目录必须和网站的index.php在同一目录中

2、本教程第2步中,显示留言者IP的地址可以在module.php上,也可以在echo_log.php上

3、本教程中所必须的qqwry.dat已放置在底部附件上,可直接下载,也可以选择在纯真IP数据库上提取最新版本

四、附件下载

EMLOG显示评论者IP大小:5.1M | 密码:无 | 来源:本站下载

博客志 发布于  2019-9-4 08:10 

EMLOG在文章评论时将邮箱设置为必填项 emlog教程

不管是EMLOG的原生模板还是市面上流行的大多数模板,都将邮箱这一选项设置为非必填项,但这一操作未必适用于所有站长,现在就来为大家分享一个EMLOG在文章评论时将邮箱设置为必填项的方法。

一、操作步骤

1、打开文件include/controller/comment_controller.php

2、大概在第40行,找到如下代码

} elseif (empty($name)) {
            emMsg('评论失败:请填写姓名');
        } elseif (strlen($name) > 20) {
            emMsg('评论失败:姓名不符合规范');

3、在上述代码后面,粘贴如下代码

} elseif (empty($mail)){
            emMsg('评论失败:请填写邮箱','javascript:history.back(-1);');

4、打开模板文件module.php,将邮箱选项的选填修改为必填即可

二、注意事项

1、本教程中的代码必须严格执行,切勿少粘或多粘一个字符,否则会报错

2、本教程中第4步,将选填修改为必填项时,部分模板还需要修改css样式,请根据模板自行调整


博客志 发布于  2019-9-4 08:10 

EMLOG让所有的文章在新窗口打开的方法 emlog教程

不管是EMLOG原生模板,还是市面上绝大部分流行的模板,当我们在列表页点击文章标题时都会在站内跳转,很显然这不是所有站长都想要的结果,现在就来为大家分享一些EMLOG实现所有的文章在新窗口打开的方法。

一、全站所有链接新窗口打开

1、打开模板文件header.php

2、在标签前粘贴如下代码

<base target="_blank">

3、保存上传覆盖,查看效果

二、列表页文章链接新窗口打开

1、打开模板文件list_log.php,找到如下代码

<a href="<?php echo $value['log_url']; ?>">

2、将上面的代码替换为如下代码

<a href="<?php echo $value['log_url']; ?>" target="_blank">

3、保存上传覆盖,查看效果

三、原理解析

第一种方法其实是在网站上加入了全站所有的链接都通过新窗口打开的代码,实施起来相对比较简单

第二种方法则是在列表页模板上插入新窗口打开的代码,仅实现点击列表页上的文章标题通过新窗口打开的效果

三、注意事项

1、本教程基本适用于市面上任何的网站系统


博客志 发布于  2019-9-4 08:10