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

本文阅读 5 分钟
广告

杰奇的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无法正确显示代码,所以截图如下:
1.png

三.在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">点击这里开始生成sitemap.xml</a>';
$jieqiLang['system']['make_static_success']='恭喜您,sitemap.xml已经重新生成!<br /><br /><a href="%s">点击这里查看</a>';
$jieqiLang['system']['make_static_failure']='对不起,sitemap.xml生成失败,请检查 %s 是否有可写的权限!';
$jieqiLang['system']['get_content_failure']='对不起,获取sitemap内容失败,可能服务器禁止PHP获取URL内容!';
?>

做完这一步的时候,可以访问域名/sitemaps.php测试生成效果,比如我的效果如下:
2.png

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

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

这时去后台就可以看到功能了:
3.png

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

教程已加入百度熊掌号原创保护,转载注明来源

本文来自投稿,不代表本站立场,如若转载,请注明出处:https://www.ruletree.club/archives/511/
杰奇cms通过js代码,实现微信访问自动登录
« 上一篇 02-10
关于linux下,杰奇vip章节的显示问题
下一篇 » 02-13
广告

发表评论

V注册会员 L评论等级
R3 条回复
  1. 得分王Lv.1 说道:
    2020-04-12     Win 10 /    Chrome

    2.4厕所生成 友情提示:对不起,获取sitemap内容失败,可能服务器禁止PHP获取URL内容!
    这个大概什么原因

    1. 不暇VLv.6 说道:
      2020-05-02     Win 10 /    Chrome

      @得分王

      可以用新的方式吧,直接php呈现,就不生成了

  2. DonicLv.1 说道:
    2020-04-07     Win 10 /    Chrome

    学习了 谢谢

没有更多评论了

作者信息

热门文章

标签TAG

热评文章