OELOVE:模版内传参+XHook+PHP开发SEO伪静态插件

OELOVE:模版内传参+XHook+PHP开发SEO伪静态插件_第1张图片
在昨天的开发基础上,阅读了OELOVE的官方宣传介绍文档后,开发出了能够传递参数并实现绝大部分PHP功能的OE插件:大超超OE伪静态助手

开发思路:主要运用了系统预留的XHook钩子类,由于OE源代码加密无从得之其具体实现方法。

安装方法:将源代码保存为dv_rewrite.php,在/source/plugin/下建立dv_rewrite文件夹,将dv_rewrite.php复制到新建立的文件夹下,然后在后台插件和应用里找到插件列表,启用大超超OE伪静态助手即可。

调用方法:在模版相应输出位置调用XHook::doAction并传入参数,分别是插件内添加的识别名传入的参数(多参数传递尚未尝试),将分页动态链接替换为静态链接的示例调用方法如下。


插件源代码:

 $_GET['s_dist1']+0,
        'cityid'     => $_GET['s_dist2']+0
    );
    // 生成list-type,共用替换函数
    $rw_type = dv_rewrite_getSpreadnameById($arr);
    dv_rewrite_replacePagination($p, $rw_type);

}

// 向文本后添加第几页(如果有)
function dv_rewrite_fixTitle($s){
    if( $_GET['page'] ){
        $page = '第'.$_GET['page'].'页';
        // 是标题
        if( strpos($s, '-') ){
            $tmparr = explode('-', $s);
            $end = end($tmparr);
            $tmparr[count($tmparr)-1] = $page.'-'.$end;
            $s = join('-', $tmparr);
        }
        // 是关键词和描述
        else{
            $s = $s.','.$page;
        }
    }
    echo $s;
}

// 根据地区id生成附近地区链接 @ 2014-01-27 15:52:13
function dv_rewrite_generateAreaLinks($provinceid){
    $sql = "select areaname,spreadname from ".DB_PREFIX."area where rootid=$provinceid";
    $res = mysql_query($sql);
    while( $r=mysql_fetch_array($res, MYSQL_ASSOC) ){
        extract($r);
        $s .= ''.$areaname.'*';
    }
    echo $s;
}

// 添加绑定事件
// 列表页(用户、日记、招聘共用)替换静态链接
XHook::addAction('dv_rewrite_page', 'dv_rewrite_replacePagination');
// 详细信息页地区静态链接
XHook::addAction('dv_rewrite_spreadname', 'dv_rewrite_spread');
// 地区模版列表替换静态链接
XHook::addAction('dv_rewrite_morepage', 'dv_rewrite_locationPagination');
// 分页时便于SEO需要修改标题、关键词和描述
XHook::addAction('dv_rewrite_pageSEO', 'dv_rewrite_fixTitle');
// 生成附近地区链接
XHook::addAction('dv_rewrite_arealinks', 'dv_rewrite_generateAreaLinks');
?>

开发这个插件的同时在做一个WEB项目,时间相对较紧迫,难免有些疏忽和不高效之处,欢迎指正。
项目为大,插件为小,开发插件权当练手,一点一点积累基础才能出大成绩,加油。

原文地址:http://www.thinkful.cn/archives/400.html

你可能感兴趣的:(php,插件,安全,seo,二次开发)