Emlog开发 之 实现阅读与评论数字格式化,每三位加逗号

2016-5-30 lonewolf 教程

这个功能主要应该用作在金额方面吧,看到好玩于是就在Emlog上面搞了以下,代码如下,具体如何操作就不多说了。

function format($num){
    if(!is_numeric($num)){
        return false;
    }
    $rvalue='';
    $num = explode('.',$num);
    $rl = !isset($num['1']) ? '' : $num['1'];
    $j = strlen($num[0]) % 3;
    $sl = substr($num[0], 0, $j);
    $sr = substr($num[0], $j);
    $i = 0;
    while($i <= strlen($sr)){
        $rvalue = $rvalue.','.substr($sr, $i, 3);
        $i = $i + 3;
    }
    $rvalue = $sl.$rvalue;
    $rvalue = substr($rvalue,0,strlen($rvalue)-1);
    $rvalue = explode(',',$rvalue);
    if($rvalue[0]==0){
        array_shift($rvalue);
    }
    $rv = $rvalue[0];
    for($i = 1; $i < count($rvalue); $i++){
        $rv = $rv.','.$rvalue[$i];
    }
    if(!empty($rl)){
        $rvalue = $rv.'.'.$rl;
    }else{
        $rvalue = $rv;
    }
    return $rvalue;
}


标签: 格式化

评论(2) 浏览(1013)

Emlog开发 之 Coding授权登录

2016-5-27 lonewolf 教程

目前Emlog已经支持腾讯QQ,github,百度,支付宝,新浪微博,Github,中国开源中心这几家网站授权登录了,最近也忙着搞Coding的一个项目,然后看见了他们的开放平台,看见了其中的Oauth授权,然后忍不住的就把Emlog支持Coding登录的给搞了下来,以下是支持此登录方法。

第一步创建Coding应用:

    1、登录coding官网(没有账户可以注册一个)

    2、点击左侧账户 ->应用管理 -> 创建应用

    3、创建完应用您即可获取的到 Client ID 和 Client Secret 和回调地址(此地址由您自己设置)


第二步先创建以下文件:

    coding.php => Coding类

    config.php => 数据配置中心

    callback.php => 授权回调页面

    index.php => 授权访问主页


第三步将以下代码放入至coding.php中:

<?php
/**
 * Coding API client for PHP
 *
 */
class Coding{
    public $api_url='https://coding.net/';

    public function __construct($client_id, $client_secret, $access_token=NULL){
        $this->client_id=$client_id;
        $this->client_secret=$client_secret;
        $this->access_token=$access_token;
    }

    //生成授权网址
    public function login_url($callback_url, $scope=''){
        $params=array(
            'response_type'=>'code',
            'client_id'=>$this->client_id,
            'redirect_uri'=>$callback_url,
            'scope'=>$scope
        );
        return 'https://coding.net/oauth_authorize.html?'.http_build_query($params);
    }

    //获取access token
    public function access_token($callback_url, $code){
        $params=array(
            'grant_type'=>'authorization_code',
            'code'=>$code,
            'client_id'=>$this->client_id,
            'client_secret'=>$this->client_secret
        );
        $url='https://coding.net/api/oauth/access_token';
        return $this->http($url, http_build_query($params), 'POST');
    }

    //获取登录用户信息
    public function me(){
        $params=array();
        return $this->api('api/account/current_user', $params);
    }   //调用接口
    public function api($url, $params=array(), $method='GET'){
        $url=$this->api_url.$url;
        $params['access_token']=$this->access_token;
        if($method=='GET'){
            $result=$this->http($url.'?'.http_build_query($params));
        }else{
            $result=$this->http($url, http_build_query($params), 'POST');
        }
        return $result;
    }

    //提交请求
    private function http($url, $postfields='', $method='GET', $headers=array()){
        $ci=curl_init();
        curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE); 
        curl_setopt($ci, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);
        curl_setopt($ci, CURLOPT_TIMEOUT, 30);
        if($method=='POST'){
            curl_setopt($ci, CURLOPT_POST, TRUE);
            if($postfields!='')curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
        }
        $headers[]='User-Agent: Coding.PHP(ThemesField)';
        curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ci, CURLOPT_URL, $url);
        $response=curl_exec($ci);
        curl_close($ci);
        $json_r=array();
        if($response!='')$json_r=json_decode($response, true);
        return $json_r;
    }
}


第四步将以下代码存放至config.php中:

<?php
//配置文件
define('Client_ID','应用ID');
define('Client_Secret','应用私钥');
define('Callback_Url','授权回调网址');


第五步将以下代码存放至callback.php中:

<?php
session_start();
require_once('config.php');
require_once('coding.php');
if(isset($_GET['code']) && $_GET['code']!=''){
	$o=new Coding(Client_ID,Client_Secret);
	$result=$o->access_token($callback_url, $_GET['code']);
}
if(isset($result['access_token']) && $result['access_token']!=''){
	$_SESSION['Coding_t']=$result['access_token'];
	$Coding_t=isset($_SESSION['Coding_t'])?$_SESSION['Coding_t']:'';
	$Coding=new Coding(Client_ID,Client_Secret, $Coding_t);
	print_r($Coding->me());
}else{
	echo '授权失败';
}
echo '<br/><a href="index.php">返回</a>';


第六步将以下代码存放至index.php中:

<?php
session_start();
require_once('config.php');
require_once('coding.php');
$Coding_t=isset($_SESSION['Coding_t'])?$_SESSION['Coding_t']:'';
$Coding=new Coding(Client_ID,Client_Secret);
if(ISLOGIN){
    emDirect(BLOG_URL);
}else{
    $login_url=$Coding->login_url(Callback_Url,'user');
    echo "<a href=\"{$login_url}\" target=\"_blank\">点击登录</a>";
}

完成以上六步骤即可将Emlog支持Coding登录了,至于数据库操作那块我就不写上了,赶紧去试试吧。

标签: 授权

评论(0) 浏览(2578)

Emlog模板制作 之 面包屑导航2.0版

2016-5-25 lonewolf 教程

以前发布过一次,但程序代码感觉不是很完善嘛,反正我这里有蛮多人是和我这样说的,于是我就考虑是不是可以尝试一个函数就能实现。想了好多种方法,有尝试过写成类的方式,但感觉很累,还是默认的来着吧。代码为以下:



<?php
/*!
 * Emlog 面包屑导航 v2.0
 *
 * Copyright 2016 ThemesField
 *
 * http://themesfield.com.cn/emlog-add-a-breadcrumb-2
 *
 */

function breadcrumb($params,$type,$sortid,$logid,$log_title,$tws){
    
    $breadcrumb = "<div class=\"breadcrumbs\"><span class=\"text-muted\"><i class=\"fa fa-bar-chart-o\"></i></span> <a href=\"".BLOG_URL."\">网站首页</a> ";
    
    if( $params[1]=='page' ){
        
        $breadcrumb .= "<small>&gt;</small> <span class=\"text-muted\">第".htmlspecialchars(urldecode($params[2]))."页</span>";
        
    }elseif( $params[1] =='sort' ){
        /*
         * Detect whether the page is classified
         *
         * Category Name:__Have_Sort($sortid);
         * Category Url:Url::sort($sortid);
         *
         */
        
        $sort_url = Url::sort($sortid);
        
        $breadcrumb .= "<small>&gt;</small> <a href=\"{$sort_url}\">".__Have_Sort($sortid)."</a> ";
        
        if( $params[4]=='page' ){
            
            $breadcrumb .= "<small>&gt;</small> <span class=\"text-muted\">第".htmlspecialchars(urldecode($params[5]))."页</span>";
            
        }
        
    }elseif($params[1]=='record'){
        /*
         * Detect whether the page is the archive page
         *
         * Archive Url:Url::record($params[2]);
         *
         */
        
        $breadcrumb .= "<small>&gt;</small> <a href=\"".Url::record($params[2])."\">{$params[2]}的文章</a> ";
        
        if( $params[4]=='page' ){
            
            $breadcrumb .= "<small>&gt;</small> <span class=\"text-muted\">第".htmlspecialchars(urldecode($params[5]))."页</span>";
            
        }
        
    }elseif( $params[1] == 'author' ){
        /*
         * Detect whether the page is a list of authors page
         *
         * Author Name:__Have_User($params[2]);
         * Author Url:Url::author($params[2]);
         *
         */
        
        $author_url = Url::author($params[2]);
        
        $breadcrumb .= "<small>&gt;</small> <a href=\"{$author_url}\">作者 ".__Have_User($params[2])." 的文章</a> ";
        
        if( $params[4]=='page' ){
            
            $breadcrumb .= "<small>&gt;</small> <span class=\"text-muted\">第".htmlspecialchars(urldecode($params[5]))."页</span>";
            
        }
        
    }elseif( $params[1] == 'tag' ){
        /*
         * Detect whether the page is a list of tags page
         *
         * Tag Name:htmlspecialchars(urldecode($params[2]));
         * Tag Url:Url::tag($params[2]);
         *
         */
        
        $tag_url = Url::tag($params[2]);
        
        $breadcrumb .= "<small>&gt;</small> <a href=\"{$author_url}\">标签:".htmlspecialchars(urldecode($params[2]))."</a> ";
        
        if( $params[4]=='page' ){
            
            $breadcrumb .= "<small>&gt;</small> <span class=\"text-muted\">第".htmlspecialchars(urldecode($params[5]))."页</span>";
            
        }
        
    }elseif( $params[1] == 'keyword' ){
        /*
         * Detecting whether the search page
         *
         * Search Name:htmlspecialchars(urldecode($params[2]));
         *
         */
        
        $breadcrumb .= "<small>&gt;</small> <span class=\"text-muted\">".htmlspecialchars(urldecode($params[2]))."的搜索结果</span> ";
        
        if( $params[4]=='page' ){
            
            $breadcrumb .= "<small>&gt;</small> <span class=\"text-muted\">第".htmlspecialchars(urldecode($params[5]))."页</span>";
            
        }
        
    }elseif( $type=='blog' ){
        /*
         * Detect whether the page is the article page
         *
         * Article Name:$log_title;
         * Article Url:Url::log($logid);
         *
         */
        
        if( __Chick_Blog_Sort($logid) ){
            $breadcrumb .= __Have_Blog_Sort_id($logid);
        }
        
        $Blog_url = Url::log($logid);
        
        $breadcrumb .= "<small>&gt;</small> <span class=\"text-muted\"><a href=\"{$Blog_url}\">{$log_title}</a></span>";
        
    }elseif( $type=='page' ){//自定义文章
        /*
         * Detect whether the page is the page
         *
         * Article Name:$log_title;
         * Article Url:Url::log($logid);
         *
         */
        
        $breadcrumb .= "<small>&gt;</small> <span class=\"text-muted\"><a href=\"".Url::log($logid)."\">{$log_title}</a></span>";
        
    }
    
    $breadcrumb .= "</div>";
    echo $breadcrumb;
}

function __Have_User($id){
    global $CACHE;
    $user_cache = $CACHE->readCache('user');
    return $user_cache[$id]['name'];
}

function __Have_Sort($id){//分类获取
    global $CACHE;
    $sort_cache = $CACHE->readCache('sort');
    return $sort_cache[$id]['sortname'];
}

function __Have_Blog_Sort_id($blogid){//根据文章ID获取文章所属分类
    global $CACHE; 
    $log_cache_sort = $CACHE->readCache('logsort');
    if(!empty($log_cache_sort[$blogid])){
        //分类名称:$log_cache_sort[$blogid]['name']
        //分类链接:Url::sort($log_cache_sort[$blogid]['id'])
        return "<small>&gt;</small> <a href=\"".Url::sort($log_cache_sort[$blogid]['id'])."\">{$log_cache_sort[$blogid]['name']}</a> ";
    }
}

function __Chick_Blog_Sort($blogid){//判断文章是否存在分类
    global $CACHE; 
    $log_cache_sort = $CACHE->readCache('logsort');
    if(!empty($log_cache_sort[$blogid])){
        return true;
    }else{
        return false;
    }
}

在你需要的地方写上:<?php echo breadcrumb($params,$type,$sortid,$logid,$log_title,$tws); ?>即可,CSS自行改动

标签: 面包屑

评论(0) 浏览(147)

Themesfield 5月您关心的都在这里了

2016-5-21 lonewolf

首先,欢迎各位emer和广大网友对themesfield的支持,下半年将主打原创主题,当然了,有时候也会免费分享分享优质主题给各位。


这里先说下大家比较关心的Themia和Gae主题了,这2款主题是在本月29日发布,Themia主题作为免费分享,Gae主题作为首款原创主题将以收费模式发布,如有喜欢者可以入手购买哟。

评论(0) 浏览(111)

Emlog模板制作 之 面包屑导航

2016-5-11 lonewolf 教程

几天前,突然想到了为Gae主题写一下面包屑导航的,然后又问了下群里面的人但有写的都不是很全面吧,所以今天抽时间来搞了下。其实呢,这次写出来我也不知道这是不是很全面吧,不过我估计能有的我都给写进去了。

使用方法:

1、首先创建一个名为 breadcrumb-template.php 的PHP文件,将以下代码让如其中


<?php
/*!
 * Emlog 面包屑导航 v1.0
 * Copyright 2016 ThemesField
 * http://themesfield.com.cn/emlog-add-a-breadcrumb
 */
if(!defined('EMLOG_ROOT')) {exit('error!');}

$breadcrumb = "首页";

if( $params[1]=='page' ){
    $breadcrumb .= htmlspecialchars(urldecode($params[2]));//获取第某页
}

function __breadcrumb_Sort_Cache($id){
    global $CACHE;
    $sort_cache = $CACHE->readCache('sort');
    return $sort_cache[$id]['sortname'];
}

function __breadcrumb_User_Cache($id){
    global $CACHE;
    $user_cache = $CACHE->readCache('user');
    return $user_cache[$id]['name'];
}

function __breadcrumb_Blog_Sort_Cache_Check($blogid){
    global $CACHE; 
    $log_cache_sort = $CACHE->readCache('logsort');
    if(!empty($log_cache_sort[$blogid])){
        return true;
    }else{
        return false;
    }
}

function __breadcrumb_Blog_Sort_Cache($blogid){
    global $CACHE; 
    $log_cache_sort = $CACHE->readCache('logsort');
    if(!empty($log_cache_sort[$blogid])){
        //分类名称:$log_cache_sort[$blogid]['name']
        //分类链接:Url::sort($log_cache_sort[$blogid]['id'])
        return $log_cache_sort[$blogid]['name'];
    }
}

if( $params[1]=='sort' ){//分类
    //分类名称:_cache_breadcrumb_Sort_Cache($sortid)
    //分类链接:$sort_url = Url::sort($sortid);
    $breadcrumb .= __breadcrumb_Sort_Cache($sortid);
    if( $params[4]=='page' ){
        $breadcrumb .= htmlspecialchars(urldecode($params[5]));//获取第某页
    }
}elseif($params[1]=='record'){//归档
    $breadcrumb .= $params[2];
    if( $params[4]=='page' ){
        $breadcrumb .= htmlspecialchars(urldecode($params[5]));//获取第某页
    }
}elseif( $params[1] == 'author' ){//文章
    //作者名称:_cache_breadcrumb_User_Cache($params[2])
    //作者链接:$author_url = Url::author($params[2]);
    $breadcrumb .= __breadcrumb_User_Cache($params[2]);
    if( $params[4]=='page' ){
        $breadcrumb .= htmlspecialchars(urldecode($params[5]));//获取第某页
    }
}elseif( $params[1] == 'tag' ){//标签
    //标签名称:htmlspecialchars(urldecode($params[2]));
    //标签链接:$tag_url = Url::tag($params[2]);
    $breadcrumb .= htmlspecialchars(urldecode($params[2]));
    if( $params[4]=='page' ){
        $breadcrumb .= htmlspecialchars(urldecode($params[5]));//获取第某页
    }
}elseif( $params[1] == 'keyword' ){//搜索
    $breadcrumb .= htmlspecialchars(urldecode($params[2]));
    if( $params[4]=='page' ){
        $breadcrumb .= htmlspecialchars(urldecode($params[5]));//获取第某页
    }
}elseif( $type=='blog' ){//自定义文章
    
    //判断文章是否存在分类
    if( __breadcrumb_Blog_Sort_Cache_Check($logid) ){
        $breadcrumb .= __breadcrumb_Blog_Sort_Cache($logid);
    }
    
    //文章名称:$log_title
    //文章链接:Url::log($logid);
    $breadcrumb .= $log_title;
}elseif( $type=='page' ){//自定义文章
    $breadcrumb .= $log_title;
}elseif( $tws ){
    
    preg_match_all('|^.*/\?(page)=(\d+)([\?&].*)?$|',Dispatcher::setPath(),$Preferred);
    if( $Preferred[1][0]=='page' ){
        $breadcrumb .= htmlspecialchars(urldecode($Preferred[2][0]));
    }
    
    $breadcrumb .= '微语';
}


2、在模板的 header.php 当中加载此文件即可:require_once View::getView('breadcrumb-template');


最后在你需要的位置放入<?php echo $breadcrumb; ?>即可完工,至于CSS什么的,自己折腾吧。

标签: 主题制作 面包屑导航

评论(1) 浏览(1189)

Emlog主题制作 之 添加自动检测更新功能

2016-5-9 lonewolf 教程

作为Emlog模板的开发者们通常都会有一个问题需要考虑,那就如何让用户在第一时间知道此模板需要更新升级,往往Emlog模板开发者都是QQ通知或者开发者建立一个客户群将用户拉进去然后在通知,虽然这样也可以让用户第一时间知道,如果在Emlog模板中开启一个自动检测是否更新的功能不是很好嘛。

本文针对Emlog主题制作者,如果你不弄主题,就没必要往下看了。


设置远程检测服务

1、在你的主机空间上创建一个文件,比如我在 www.xxx.com 的根目录下创建一个名为 tpl 的文件夹

将新版主题的zip压缩包和 info.json 一起上传到刚才创建目录中,那么他们对应的访问地址就分别为:

    http://www.xxx.com/tpl/theme.zip

    http://www.xxx.com/tpl/info.json


打开 info.json 按照里面的提示填写信息,样式如下

{
  "required": true,//主题是否需要更新 true(需要) false(不需要)
  "version": "主题版本",
  "details_url": "http://www.xxx.cn/details.html",
  "download_url": "http://www.xxx.cn/tpl/example-theme.zip"
}
然后将 info.json 也上传到上面的 tpl 文件夹中,它的访问地址为:

    http://www.xxx.com/tpl/info.json

为主题添加检测功能:

1、首先在模板文件夹中创建一个为 inc 命名的文件夹

2、将 theme.php 文件放入其中,代码如下:

<?php
/*
 *  主题版本检测
 *
 */
if(!defined('EMLOG_ROOT')){exit('error!');}

define('Theme_Info_Url' , 'http://www.xxx.com/tpl/info.json' );

function __D($content){
	die($content);
}

if (substr(PHP_VERSION, 0, 1) < '5'){
    __D('您的php版本过低,请选用支持PHP5的环境配置。');
    exit();
}

if (!function_exists("file_get_contents")) {
	exit(__D("file_get_contents() 函数未开启!"));
}

if (!function_exists("fopen")) {
	exit(__D("fopen() 函数未开启!"));
}

$nonce_templet = Option::get('nonce_templet');
$nonceTplData = @implode('', @file(TPLS_PATH.$nonce_templet.'/header.php'));
preg_match("/Template Name:(.*)/i", $nonceTplData, $tplName);
preg_match("/Version:(.*)/i", $nonceTplData, $tplVersion);

$ch = curl_init();
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_URL,Theme_Info_Url);
$Value_Info = json_decode(curl_exec($ch));

	
define('Theme_Name', !empty($tplName[1]) ? trim($tplName[1]) : $nonce_templet );
define('Theme_Version' , !empty($tplVersion[1]) ? $tplVersion[1] : '' );
define('Theme_Required_Version' , $Value_Info->version );
define('Theme_Required' , $Value_Info->required );
define('Theme_Download' , $Value_Info->download_url );

if( Theme_Required && Theme_Required_Version > Theme_Version ){
	echo '<style>.concept-title{background: #eee;margin: 0px;margin-bottom: 20px;padding: 3px 20px;border-left: 5px solid #00A1EE;}</style><blockquote class="concept-title"><p>XXXX主题目前已有最新版本,请尽快获取最新主题包并升级为最新版本!<a href="'.Theme_Download.'" target="_blank" >下载最新主题</a></p></blockquote>';
}

3、确保主题模板下存有 options.php 文件,打开此文件将已下代码放入其中:

if( Option::get('nonce_templet') == '主题名称' ){
	require_once (TPLS_PATH.Option::get('nonce_templet').'/inc/theme.php');//主题检测
}
完成以上步骤即可实现让Emlog后台支持自动检测主题是否需要更新了。


标签: 主题制作 主题更新

评论(0) 浏览(349)

Emlog网站的标题、关键词、描述改动

2016-4-22 lonewolf 教程

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

global $CACHE;

$Have_Sort_Cache = $CACHE->readCache('sort');
$Have_User_Cache = $CACHE->readCache('user');
$Have_Options_Cache = $CACHE->readCache('options');
$Have_Log_Cache_Tags = $CACHE->readCache('logtags');
$Have_Log_Cache_Sort = $CACHE->readCache('logsort');

$Log_Model = new Log_Model();

if($type=='blog'){
    extract($Log_Model->neighborLog($timestamp));
}

$Body_Title = $Have_Options_Cache['site_title'] ? $Have_Options_Cache['site_title'] : $Have_Options_Cache['blogname'];

if( $params[1]=='page' ){
    $Body_Page = '第'.htmlspecialchars(urldecode($params[2])).'页_';
}

if( $params[4]=='page' ){
    $Body_Page = '第'.htmlspecialchars(urldecode($params[5])).'页_';
}

if($tws){
    preg_match_all('|^.*/\?(page)=(\d+)([\?&].*)?$|',Dispatcher::setPath(),$Preferred);
    $emDispatcher = Dispatcher::setPath();
    if( $Preferred[1][0]=='page' ){
        $Body_Page = '第'.htmlspecialchars(urldecode($Preferred[2][0])).'页_';
    }
}

if (!empty($Have_Log_Cache_Tags[$logid])) {
    foreach ($Have_Log_Cache_Tags[$logid] as $value) {
        $Have_Log_key .= $value['tagname'].',';
    }
}

if(!empty($Have_Log_Cache_Sort[$logid])){
    $Log_Sort_Name = $Have_Log_Cache_Sort[$logid]['name'];
}

if(empty($Have_Log_key)){
    $Log_KeyWords = stripslashes($Log_Sort_Name);
}else{
    $Log_KeyWords = $Have_Log_key;
}

if( blog_tool_ishome() ){

    $web_title = $Have_Options_Cache['site_title'];
    $web_keywords = $Have_Options_Cache['site_key'];
    $web_description = $Have_Options_Cache['site_description'];
    
}elseif( $params[1]=='sort' ){
    
    $web_title = $Have_Sort_Cache[$sortid]['sortname'].'_'.$Body_Page.$Body_Title;
    $web_keywords = $Have_Sort_Cache[$sortid]['sortname'];
    $web_description = $Have_Sort_Cache[$sortid]['description'];
    
}elseif( $params[1]=='tag' ){
    
    $web_title = stripslashes($tag).'_'.$Body_Page.$Body_Title;
    $web_keywords = stripslashes($tag);
    $web_description = $Have_Options_Cache['blogname']."'".stripslashes($tag)."'";
    
}elseif( $params[1]=='keyword' || $params[1]=='?keyword=' ){
    
    $web_title = '搜索结果    '.$keyword.'_'.$Body_Page.$Body_Title;
    $web_keywords = stripslashes($keyword);
    $web_description = $Have_Options_Cache['blogname'].": '".stripslashes($keyword)."' 的搜索結果";
    
}elseif( $params[1]=='author' ){
    
    $web_title = $Have_User_Cache[$author]['name'].'_'.$Body_Page.$Body_Title;
    $web_keywords = $Have_User_Cache[$author]['name'];
    $web_description = $Have_Options_Cache['blogname']."'".$Have_User_Cache[$author]['name']."'";
    
}elseif( $params[1]=='record' ){
    
    $web_title = stripslashes($params[2]).'_'.$Body_Page.$Body_Title;
    $web_keywords = stripslashes($params[2]);
    $web_description = $Have_Options_Cache['blogname'].": '".stripslashes($params[2])."' 的文章列表";
    
}elseif( $type == 'blog' ){
    
    $web_title = stripslashes($log_title).'_'.$Body_Title;
    $web_keywords = $Log_KeyWords;
    $web_description = extractHtmlData($log_content, 90);

    if($prevLog){
        $web_prev = "<link rel='prev' title='{$prevLog['title']}' href='".Url::log($prevLog['gid'])."' />";
    }
    
    if($nextLog && $prevLog){
        
    }
    
    if($nextLog){
        $web_next = "<link rel='next' title='{$nextLog['title']}' href='".Url::log($nextLog['gid'])."' />";
    }
    
    $web_canonical = "<link rel='canonical' href='".URL::log($logid)."' />";
    $web_shortlink = "<link rel='shortlink' href='".BLOG_URL."?post={$logid}' />";
    
}elseif( $type == 'page' ){
    
    $web_title = stripslashes($log_title).'_'.$Body_Title;
    $web_keywords = stripslashes($log_title);
    $web_description = extractHtmlData($log_content, 90);
    
}elseif( $tws ){
    
    $web_title = '微语_'.$Body_Page.$Body_Title;
    $web_keywords = stripslashes($log_title);
    $web_description = extractHtmlData($log_content, 90);
    
}

echo "<title>{$web_title}</title>\n<meta name=\"generator\" content=\"Emlog ".Option::EMLOG_VERSION."\" />";

if( $type == 'blog' ){
    if($prevLog){
        echo "\n".$web_prev;
    }
    
    if($nextLog && $prevLog){
        
    }
    
    if($nextLog){
        echo "\n".$web_next;
    }
    echo "\n".$web_canonical."\n".$web_shortlink;
}

echo "\n<meta name=\"keywords\" content=\"{$web_keywords}\" />\n<meta name=\"description\" content=\"{$web_description}\" />";

?>

评论(1) 浏览(270)

Emlog 快速替换文章/评论的某些文字内容

2016-4-21 lonewolf 教程

function _replace_text($text){
    $replace = array(
        // '原始文字' => '替换为这些'
        'themesfield' => 'ThemesField',
        'ThemesField' => '<a href="http:/themesfield.com.cn/">ThemesField</a>'
        );
    $text = str_replace(array_keys($replace), $replace, $text);
    return $text;
}

评论(1) 浏览(170)

评论列表显示用户IP所属地

2016-4-21 lonewolf 教程

function convertip($ip){
    $dat_path = EMLOG_ROOT . '/content/ip.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;
}

评论(0) 浏览(113)

非插件实现文章是否被百度收录

2016-4-21 lonewolf 教程

function baidu($url){
	$url='http://www.baidu.com/s?wd='.$url;
	$curl=curl_init();
	curl_setopt($curl,CURLOPT_URL,$url);
	curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
	$rs=curl_exec($curl);
	curl_close($curl);
	if(!strpos($rs,'没有找到')){
		return 1;
	}else{
		return 0;
	}
}
function check_baidu($id){
	$url=Url::log($id);
	if(baidu($url)==1){
		echo "<span class=\"item\">百度已收录</span>";
	}else{
		echo "<span class=\"item\"><a style=\"color:red;\" rel=\"external nofollow\" title=\"点击提交收录!\" target=\"_blank\" href=\"http://zhanzhang.baidu.com/sitesubmit/index?sitename=$url\">百度未收录</a></span>";
	}
}

评论(0) 浏览(129)

Powered by emlog