刘新建 發表於 2023-5-25 00:00:00

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>&lt;?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=&gt;</span><span>'资讯'</span><span>, 2=&gt;</span><span>'图片'</span><span>, 3=&gt;</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> =&gt; </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>-&gt;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>-&gt;</span><span>count</span><span>() &amp;&amp; </span><span>count</span><span>(</span><span>$map</span><span>) &lt; 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>-&gt;select(</span><span>array</span><span>(</span><span>'status'</span><span>=&gt;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>'&lt;?xml version="1.0" encoding="utf-8"?&gt; </span></p>
</li>
<li>
<p>
<span><span>&lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"&gt;'</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>'&amp;'</span><span>, </span><span>'\''</span><span>, </span><span>'"'</span><span>, </span><span>'&gt;'</span><span>, </span><span>'&lt;'</span><span>), </span><span>array</span><span>(</span><span>'&amp;'</span><span>, </span><span>'''</span><span>, </span><span>'"'</span><span>, </span><span>'&gt;'</span><span>, </span><span>'&lt;'</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>&lt;url&gt;   </span></p>
</li>
<li>
<p>
<span>        &lt;loc&gt;{</span><span>$url</span><span>}&lt;/loc&gt;   </span></p>
</li>
<li>
<p>
<span>        &lt;lastmod&gt;{</span><span>$date</span><span>}&lt;/lastmod&gt;   </span></p>
</li>
<li>
<p>
<span>        &lt;changefreq&gt;daily&lt;/changefreq&gt;   </span></p>
</li>
<li>
<p>
<span>        &lt;priority&gt;0.8&lt;/priority&gt;   </span></p>
</li>
<li>
<p>
<span>&lt;/url&gt;";   </span></p>
</li>
<li>
<p>
<span>}   </span></p>
</li>
<li>
<p>
<span>    </span></p>
</li>
<li>
<p>
<span>$html</span><span> .= </span><span>'&lt;/urlset&gt;'</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>?&gt;  </span></p>
</li>
</ol>
</div>
</div>
<p>
 </p>
頁: [1]
查看完整版本: PHPCMS V9 全站 Sitemaps生成实现代码[服务器端版]