PHPCMS V9 全站 Sitemaps生成实现代码[服务器端版]
<p><span>需求: </span><br><span>通过服务器的定时任务自动更新网站全站的所有文章,并生成sitemaps </span><br><br><span>以下代码为sitemaps crontab for phpcms v9,以下代码保存到phpcms 根目录下,配置cronTab定时生成即可 </span><br><br><span>代码:</span></p>
<div>
<p>
<span>PHP Code</span><span>复制内容到剪贴板</span></p>
<div id="code_5617">
<ol>
<li>
<p>
<span><?php </span></p>
</li>
<li>
<p>
<span>/** </span></p>
</li>
<li>
<p>
<span><span> * sitemap.php PHPCMS V9 sitemaps入口 </span> </span></p>
</li>
<li>
<p>
<span><span> * </span> </span></p>
</li>
<li>
<p>
<span><span> * @copyright (C) 2015-2018 piaoyun.cc </span> </span></p>
</li>
<li>
<p>
<span><span> * @license http://piaoyun.cc </span> </span></p>
</li>
<li>
<p>
<span><span> * @lastmodify 2015-05-06 </span> </span></p>
</li>
<li>
<p>
<span><span> */</span><span> </span></span></p>
</li>
<li>
<p>
<span>if</span><span>(PHP_SAPI != </span><span>'cli'</span><span>) </span></p>
</li>
<li>
<p>
<span>{ </span></p>
</li>
<li>
<p>
<span> header(</span><span>'location: sitemaps.xml'</span><span>); </span></p>
</li>
<li>
<p>
<span> </span><span>exit</span><span>; </span></p>
</li>
<li>
<p>
<span>} </span></p>
</li>
<li>
<p>
<span>define(</span><span>'SITEMAP_SIZE'</span><span>, 10000); </span><span>//sitemaps中最大输出数量 </span><span> </span></p>
</li>
<li>
<p>
<span>define(</span><span>'MODEL_SIZE'</span><span>, 3000); </span><span>//每个模型中最大输出数量 </span><span> </span></p>
</li>
<li>
<p>
<span>$model_arr</span><span> = </span><span>array</span><span>(1=></span><span>'资讯'</span><span>, 2=></span><span>'图片'</span><span>, 3=></span><span>'下载'</span><span>); </span><span>//定义需要生成sitemaps的模型 </span><span> </span></p>
</li>
<li>
<p>
<span> </span></p>
</li>
<li>
<p>
<span>define(</span><span>'PHPCMS_PATH'</span><span>, dirname(</span><span>__FILE__</span><span>).DIRECTORY_SEPARATOR); </span></p>
</li>
<li>
<p>
<span>include</span><span> PHPCMS_PATH.</span><span>'/phpcms/base.php'</span><span>; </span></p>
</li>
<li>
<p>
<span> </span></p>
</li>
<li>
<p>
<span>$param</span><span> = pc_base::load_sys_class(</span><span>'param'</span><span>); </span></p>
</li>
<li>
<p>
<span> </span></p>
</li>
<li>
<p>
<span>$model_arr</span><span> = </span><span>empty</span><span>empty</span><span>(</span><span>$model_arr</span><span>) ? getcache(</span><span>'model'</span><span>,</span><span>'commons'</span><span>) : </span><span>$model_arr</span><span>; </span></p>
</li>
<li>
<p>
<span> </span></p>
</li>
<li>
<p>
<span>$map</span><span> = </span><span>array</span><span>(); </span></p>
</li>
<li>
<p>
<span>foreach</span><span> (</span><span>$model_arr</span><span> </span><span>as</span><span> </span><span>$modelid</span><span> => </span><span>$model</span><span>) </span></p>
</li>
<li>
<p>
<span>{ </span></p>
</li>
<li>
<p>
<span> </span><span>$tablename</span><span> = </span><span>$model</span><span>[</span><span>'tablename'</span><span>]; </span></p>
</li>
<li>
<p>
<span> </span></p>
</li>
<li>
<p>
<span> </span><span>$db</span><span> = pc_base::load_model(</span><span>'content_model'</span><span>); </span></p>
</li>
<li>
<p>
<span> </span><span>$db</span><span>->set_model(</span><span>$modelid</span><span>); </span></p>
</li>
<li>
<p>
<span> </span></p>
</li>
<li>
<p>
<span> </span><span>if</span><span>(</span><span>$db</span><span>-></span><span>count</span><span>() && </span><span>count</span><span>(</span><span>$map</span><span>) < SITEMAP_SIZE) </span></p>
</li>
<li>
<p>
<span> { </span></p>
</li>
<li>
<p>
<span> </span><span>$order</span><span> = </span><span>'id desc'</span><span>; </span></p>
</li>
<li>
<p>
<span> </span><span>$arc</span><span> = </span><span>$db</span><span>->select(</span><span>array</span><span>(</span><span>'status'</span><span>=>99), </span><span>'url,updatetime'</span><span>, MODEL_SIZE, </span><span>$order</span><span>); </span></p>
</li>
<li>
<p>
<span> </span><span>$map</span><span> = </span><span>array_merge</span><span>(</span><span>$map</span><span>, </span><span>$arc</span><span>); </span></p>
</li>
<li>
<p>
<span> } </span></p>
</li>
<li>
<p>
<span>} </span></p>
</li>
<li>
<p>
<span> </span></p>
</li>
<li>
<p>
<span>/* 遍历生成 */</span><span> </span></p>
</li>
<li>
<p>
<span>$html</span><span> = </span><span>'<?xml version="1.0" encoding="utf-8"?> </span></p>
</li>
<li>
<p>
<span><span><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'</span><span>; </span></span></p>
</li>
<li>
<p>
<span> </span></p>
</li>
<li>
<p>
<span>foreach</span><span> (</span><span>$map</span><span> </span><span>as</span><span> </span><span>$row</span><span>) </span></p>
</li>
<li>
<p>
<span>{ </span></p>
</li>
<li>
<p>
<span> </span><span>if</span><span>(</span><span>empty</span><span>empty</span><span>(</span><span>$row</span><span>) || </span><span>empty</span><span>empty</span><span>(</span><span>$row</span><span>[</span><span>'url'</span><span>])) </span><span>continue</span><span>; </span></p>
</li>
<li>
<p>
<span> </span></p>
</li>
<li>
<p>
<span> </span><span>$date</span><span> = </span><span>date</span><span>(</span><span>"Y-m-d"</span><span>, </span><span>$row</span><span>[</span><span>'updatetime'</span><span>]); </span></p>
</li>
<li>
<p>
<span> </span><span>$url</span><span> = </span><span>str_replace</span><span>(</span><span>array</span><span>(</span><span>'&'</span><span>, </span><span>'\''</span><span>, </span><span>'"'</span><span>, </span><span>'>'</span><span>, </span><span>'<'</span><span>), </span><span>array</span><span>(</span><span>'&'</span><span>, </span><span>'''</span><span>, </span><span>'"'</span><span>, </span><span>'>'</span><span>, </span><span>'<'</span><span>), </span><span>$row</span><span>[</span><span>'url'</span><span>]); </span></p>
</li>
<li>
<p>
<span> </span><span>$html</span><span> .= " </span></p>
</li>
<li>
<p>
<span><url> </span></p>
</li>
<li>
<p>
<span> <loc>{</span><span>$url</span><span>}</loc> </span></p>
</li>
<li>
<p>
<span> <lastmod>{</span><span>$date</span><span>}</lastmod> </span></p>
</li>
<li>
<p>
<span> <changefreq>daily</changefreq> </span></p>
</li>
<li>
<p>
<span> <priority>0.8</priority> </span></p>
</li>
<li>
<p>
<span></url>"; </span></p>
</li>
<li>
<p>
<span>} </span></p>
</li>
<li>
<p>
<span> </span></p>
</li>
<li>
<p>
<span>$html</span><span> .= </span><span>'</urlset>'</span><span>; </span></p>
</li>
<li>
<p>
<span>file_put_contents</span><span>(</span><span>'./sitemaps.xml'</span><span>, </span><span>$html</span><span>); </span></p>
</li>
<li>
<p>
<span>?> </span></p>
</li>
</ol>
</div>
</div>
<p>
</p>
頁:
[1]