作为一名合格的网站开发者,你不当要保证程序的完美,而且你还要考虑网站优化和推广,所以我们在做网站的时候一定要考虑网站优化和推广所需要用到的 功能模块,今天讲一个简单模块即生成网站地图sitemap,网站地图sitemap的作用非常重要,当企业建站完毕丰富网站内容后我们需要把企业网站通 知搜索引擎的蜘蛛,来抓取我们企业网站的信息,这时候,需要我们企业网站优化的工作人员去各大搜索引擎网站去提交sitemap,告知搜索蜘蛛,我们网站 的情况,引导蜘蛛来抓取数据,收录我们的网站。
虽然网上有很多sitemap生成器,但是本人都下载或网上直接生成用过,发现有些生成器存在一些问题:
第一、操作繁琐而且还需要手动上传到空间。
第二、不够安全,有的程序带着暗链。
考虑众多原因我们利用kphp框架自己开发了小巧而且非常实用的网站地图sitemap生成功能模块。
开发之前我们需要了解的是sitemap的几种形式即各大搜索引擎需要sitemap的形式,经过百度查找我们发现有三种形式的sitemap文件格式
第1种、html形式即sitemap.html
第2种、xml 形式即sitemap.xml
第3种、txt 形式即sitemap.txt
为此我们需要制作2个模版sitemap.html和sitemap.xml而sitemap.txt不需要样式直接写入链接即可。
1.sitemap.html模版:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>kphpstemap - Kphp开源框架 - 可能是最好的php开源框架</title> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> {literal}<style type="text/css"> body { background-color: #DDD; font: normal 80% "Trebuchet MS", "Helvetica", sans-serif; margin:0; text-align:center; } #cont{ margin:auto; width:800px; text-align:left; } a:link,a:visited { color: #0180AF; text-decoration: underline; } a:hover { color: #666; } h1{ background-color:#fff; padding:20px; color:#00AEEF; text-align:left; font-size:32px; margin:0px; } h3{ font-size:12px; background-color:#AFFFAF; margin:0px; padding:10px; } h3 a{ float:right; font-weight:normal; display:block; } th{ text-align:center; background-color:#00AEEF; color:#fff; padding:4px; font-weight:normal; font-size:12px; } td{ font-size:12px; padding:3px; text-align:left; } tr{background: #fff} tr:nth-child(odd) {background: #f0f0f0} #footer { background-color:#AFFFAF; padding:10px; } .pager,.pager a { background-color:#00AEEF; color:#fff; padding:3px; } .lhead { background-color:#fff; padding:3px; font-weight:bold; font-size:16px; } .lpart { background-color:#f0f0f0; padding:0px; } .lpage { font:normal 12px verdana; } .lcount { background-color:#00AEEF; color:#fff; padding:2px; margin:2px; font:bold 12px verdana; } a.aemphasis { color:#009; font-weight:bold; } {/literal} </style> </head> <body> <div id="cont"> <h1>kphp开源框架网站地图</h1> <h3><a href="http://www.kphp.org">网站首页</a> 更新时间:{$sitemap_time} </h3> <table cellpadding="0" cellspacing="0" border="0" width="100%"> <tr valign="top"> <td class="lpart" colspan="100"><div class="lhead">/ <span class="lcount">一共{$sitemap_num}条</span></div> <table cellpadding="0" cellspacing="0" border="0" width="100%"> {foreach item=row key=rowid from=$kphp_list} <tr><td class="lpage"><a href="{$row.url}" title="{$row.title} - Kphp开源框架 - 可能是最好的php开源框架">{$row.title}</a></td></tr> {/foreach} </table> </td> </tr> </table> <div id="footer"> Page generated by www.kphp.org - <a target="_blank" href="http://www.kphp.org">kphp开源框架sitemap</a> | Copyright © 2008-2015 </div> </div> </body> </html>
模版预览如下图
如:kphp开源框架网站地图:www.kphp.org/sitemap.html
2.sitemap.xml模版如下:
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <url> <!--注释:这里是专门写你网站上的网址。--> <loc>http://www.kphp.org/</loc> <!--注释:这里是说明这个网址的优先权比值,其中的值可以设置为1.0、0.9、0.8甚至更低都可以。 --> <priority>1.0</priority> <!--注释:这里表示这个网址的内容的最后更新时间,什么时候最后跟新就写什么时间都ok。--> <lastmod>2015-08-20T12:02:52+00:00</lastmod> </url> </urlset>
当绑定时候只需要循环url标签对即可。
前面我们了解的sitemap的几种形式接下需要我们去制作sitemap网站地图,kphp框架的mvc模式,采用的是smarty模版,而生成静态 html页面我们是利用smarty的输出滤镜的特性来实现的,下面介绍一下kphp框架如何生成sitemap静态页面:
这里我们需要kphp框架的视图类即View类和数据类Data。Date类不做解释,kphp框架是使用者都知道,而View类是继承了smarty类
只有mvc模式开发才会用到,这里我们需要对View类进行实例化,建立一个base.bo.php文件
base.bo.php文件代码如下:
include_once "ini.php"; $code="gbk"; //全局功能 $data=new Data(); $view=new View(); globalInit(); // 向视图传递全局变量 function globalInit() { global $view,$data,$template,$webinfo,$column,$user; //传递全局变量 $view->add("template",$template); $view->add("column",$column); $view->add("islogin",$islogin); $view->add("user",$user); $view->add("base",$webinfo); } /** * 传递任何变量 * * @param string $vname * @param Object $object */ function addValue($vname,$object) { global $data,$view; $view->add($vname,$object); } /** * 通用调用台 * * @param var $var */ function debug($var) { if(is_array($var)) print_r($var); else echo $var; die(); } /** * 调用View层 * * @param array $vo_array * @param array $fname_array */ function html($vo_array,$fname_array) { $vo_count = count($vo_array); for($i=0;$i<$vo_count;$i++) { global $view,$filename,$template; $filename = $fname_array[$i]; $vo = $vo_array[$i]; $view->register_outputfilter("makehtml"); $view->show("{$vo}"); } } //生成静态页方法 function makehtml($str, &$smarty) { global $view,$filename,$code; $link = fopen($filename,"w+"); $new_str = $str; fwrite($link,$new_str); fclose($link); echo "{$filename}已生成<br/>"; }
我们需要网站后台触发这个生成的过程,所有后台文件需要有生成的列表页,文件名static_list.php,需要有生成sitemap需要的数据,即sitemap.php页面。
static_list.php代码如下:
<TABLE class=member-table id=list-table cellspacing=1 cellpadding=3 width="100%"> <tr > <th width="100%" class="add_title" colspan="2">网站地图生成静态页</th> </tr> <tr> <td ><!--信息内容开始--> <table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#b5d6e6" class="table_add" > <tr> <th>页面名称</th> <td bgcolor="#FFFFFF"> <a href="sitemap.php" target="inframe01">生成网站地图</a> </td> </tr> <tr> <th width="15%">生成情况</th> <td width="85%" bgcolor="#FFFFFF"> <iframe width="200" height="150" scrolling="no" name="inframe01"></iframe> </td> </tr> </table> </td> </tr> </table>
文件sitemap.php代码如下:
include 'base.bo.php'; //编码转换 $code="utf-8"; //$nav_list需要根据你网站案例情况遍历数据信息。 global $nav_list; $kphp_list = array(); $i = 0; foreach($nav_list as $k=>$v) { if($v["child"]==1) { $kphp_list[$i]["title"] = $v["name"]; $kphp_list[$i]["url"] = $v["url"]; $i++; } else { foreach($v["child_arr"] as $kk=>$vv) { $kphp_list[$i]["title"] = $vv["name"]; $kphp_list[$i]["url"] = $vv["url"]; $i++; } } } addValue("kphp_list",$kphp_list); $vo_array = array("sitemap.html","sitemap.xml","sitemap.txt"); $filename_array = array("../../sitemap.html","../../sitemap.xml","../../sitemap.txt"); html($vo_array,$filename_array);
因为sitemap.php中代码涉及到企业网站表和栏目信息处于对企业的保密性和安全性这里不会公开,kphp框架使用者可以根据自己网站客户网站情况读取数据。
至此简单的sitemap网站地图就制作完成了,涉及的文件和代码我会打包保存上传到kphp开源框架网上供大家下载.
支持原创,原文来自kphp开源框架,转载请注明出处:http://www.kphp.org/?faq-show-53.html