动手制作一个杰奇2.X,sitemap插件

杰奇的1.7版本,对于sitemap.xml的生成插件,已经有人制作了,但是1.8及以上版本还没有人去做。比较sitemap对于站长而言,是一种省时省力的网站链接提交方式,可是杰奇官方的所有版本都没有这个功能,而我对于php非常不熟悉,但是思考一段时间后,发现sitemap文件的生成,完全可以全部依靠杰奇已有功能来实现,甚至不需要懂什么编程,但是还是需要稍微转换一下思路。

测试sitemap插件的程序为杰奇2.3

首先要明确sitemap的规则

1.sitemap地址格式为txt或xml
2.每个地址文件最多5万个网址
3.文件大小不能超过10MB

可以利用的杰奇原文件:

/index.php   //首页php文件
/indexs.php    //静态首页生成文件
/lang/lang_index.php    //首页语言包文件
/configs/blocks.php    //区块定义文件(可不用)

主要原理如下

1.定义几个区块,调用最新更新文章,小说分类,只调用链接(最好伪静态)
2.参考index.php自定义一个杰奇单页sitemap.php,再设置完全参考sitemap的格式的模板文件。
3.参考indexs.php文件,创建sitemaps.php,使其可以对自定义的单页进行静态生成xml
4.修改后台栏目,使生成sitemap功能出现在后台

制作流程如下

一.在网站根目录新建一个sitemap.php,代码如下:

<?php
define('JIEQI_MODULE_NAME', 'system');
require_once('global.php');
jieqi_getconfigs(JIEQI_MODULE_NAME, 'blocks', 'jieqiBlocks');
include_once(JIEQI_ROOT_PATH.'/header.php');
$jieqiTpl->assign('jieqi_indexpage',1);  
$jieqiTset['jieqi_page_template'] = JIEQI_ROOT_PATH.'/templates/sitemap.html';
$jieqiTpl->setCaching(0);
include_once(JIEQI_ROOT_PATH.'/footer.php');
?>

二.在/modules/article/templates/blocks文件夹新增sitemap_block.html,代码如下:

{?section name=i loop=$articlerows?}
    <url>
        <loc>{?$articlerows[i].url_articleinfo?}</loc>
        <lastmod>{?$articlerows[i].lastupdate|date:'Y-m-d'?}T{?$articlerows[i].lastupdate|date:'H:i:s'?}Z</lastmod>
        <changefreq>always</changefreq>
        <priority>0.5</priority>
    </url>
{?/section?}

可能typecho无法正确显示代码,所以截图如下:
动手制作一个杰奇2.X,sitemap插件

三.在templates文件夹里新增sitemap.html文件,代码如下:

<?xml version="1.0" encoding="{?$jieqi_charset?}"?>
<?xml-stylesheet type='text/xsl' href='{?$jieqi_url?}/sitemap.xsl'?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{?block bid="0" module="article" filename="block_articlelist" classname="BlockArticleArticlelist" side="0" title="区块" vars="lastupdate,10000,0,0,0,0" template="sitemap_block.html" contenttype="4" custom="0" publish="3" hasvars="1"?}
</urlset>

注意我的设置里面,只让它显示最新的一万条,这个数字随意修改,不过静态模式下,其实没什么影响

四.参考indexs.php,在根目录新建sitemaps.php(本博客分享了解密工具),代码如下:

<?php

define("JIEQI_MODULE_NAME", "system");
require_once ("global.php");
jieqi_loadlang("sitemap", JIEQI_MODULE_NAME);   //引用sitemap语言包

if ($jieqiUsersStatus != JIEQI_GROUP_ADMIN) {
    jieqi_printfail(LANG_NEED_ADMIN);
}

if (JIEQI_CHAR_SET != JIEQI_SYSTEM_CHARSET) {
    jieqi_printfail(sprintf($jieqiLang["system"]["sindex_need_charset"], JIEQI_CHAR_SET));
}

if (empty($_REQUEST["confirm"])) {
    jieqi_msgwin(LANG_NOTICE, sprintf($jieqiLang["system"]["sindex_confirm_notice"], jieqi_addurlvars(array("confirm" => 1))));
}

if (empty($_REQUEST["target"]) || (32 < strlen($_REQUEST["target"])) || !preg_match("/^\w+\.xml?$/", $_REQUEST["target"])) {   //设置生成的文件形式为xml
    $_REQUEST["target"] = "sitemap.xml";    //生成sitemap.xml
}

$pagecontent = @file_get_contents(JIEQI_LOCAL_URL . "/sitemap.php");   //选择到sitemap.php
if (($pagecontent == false) || ($pagecontent == "")) {
    jieqi_printfail($jieqiLang["system"]["get_content_failure"]);
}

$ret = jieqi_writefile(JIEQI_ROOT_PATH . "/" . $_REQUEST["target"], $pagecontent);

if ($ret) {
    jieqi_msgwin(LANG_DO_SUCCESS, sprintf($jieqiLang["system"]["make_static_success"], JIEQI_URL . "/" . $_REQUEST["target"]));
}
else {
    jieqi_printfail(sprintf($jieqiLang["system"]["make_static_failure"], $_REQUEST["target"]));
}

?>

五.参考/lang/lang_index.php,新增lang_sitemap.php文件,代码如下:

<?php
$jieqiLang['system']['index']=1;
$jieqiLang['system']['make_sindex_success']='恭喜您,sitemap.xml已经重新生成!';
$jieqiLang['system']['make_sindex_failure']='对不起,sitemap.xml生成失败,请检查 %s 是否有可写的权限!';
$jieqiLang['system']['sindex_need_cache']='系统未启用缓存,不支持生成sitemap.xml!';
$jieqiLang['system']['sindex_need_charset']='当前字符集为 %s ,不支持生成sitemap.xml!';
$jieqiLang['system']['sindex_confirm_notice']='生成sitemap.xml文件用于搜索引擎提交,但无法实时更新数据,生成后通过域名/sitemap.xml访问! <br /><br /><a href="%s" rel="external nofollow"  rel="external nofollow" >点击这里开始生成sitemap.xml</a>';
$jieqiLang['system']['make_static_success']='恭喜您,sitemap.xml已经重新生成!<br /><br /><a href="%s" rel="external nofollow"  rel="external nofollow" >点击这里查看</a>';
$jieqiLang['system']['make_static_failure']='对不起,sitemap.xml生成失败,请检查 %s 是否有可写的权限!';
$jieqiLang['system']['get_content_failure']='对不起,获取sitemap内容失败,可能服务器禁止PHP获取URL内容!';
?>

做完这一步的时候,可以访问域名/sitemaps.php测试生成效果,比如我的效果如下:
动手制作一个杰奇2.X,sitemap插件

六.将功能加入后台,修改configs/adminmenu.php,找到大概86行开始,加入如下代码:

$jieqiAdminmenu['tools'][] = array('layer' => 0, 'caption' => '生成sitemap', 'command'=>JIEQI_URL.'/sitemaps.php', 'target' => 0, 'publish' => 1);

这时去后台就可以看到功能了:
动手制作一个杰奇2.X,sitemap插件

以上就是制作这个插件的全部过程,完全利用杰奇已有文件,不需要自己做任何开发。但是我举出来的是非常简单的例子,只是调用小说的最新更新,并没有做更加多样的东西,但是通过这样的思路可以变得更加复杂。文件我就不提供下载了,各位自己去尝试制作吧。

 

本文由网友投稿或「聚码源码网」整理自网络,如转载请注明出处:https://www.jumaniu.com/14052/

本站发布的内容若侵犯到您的权益,请邮件联系 zhangqy2022#yeah.net 删除,我们将及时处理!

从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!

本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。

本站资源仅供学习和交流使用,版权归原作者所有,请在下载后24小时之内自觉删除。

若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。

常见问题
  • 本站所有资源解压密码为:www.jumaniu.com 或 www.tdji.cn
查看详情

相关文章

评论
暂无评论