您的位置:首页 > 运维架构 > 网站架构

kphp框架网站开发之利用smarty模版生成网站地图sitemap全解

2015-08-22 12:05 821 查看
作为一名合格的网站开发者,你不但要保证程序的完美,而且你还要考虑网站优化和推广,所以我们在做网站的时候一定要考虑网站优化和推广所需要用到的功能模块,今天讲一个简单模块即生成网站地图sitemap,网站地图sitemap的作用非常重要,当企业建站完毕丰富网站内容后我们需要把企业网站通知搜索引擎的蜘蛛,来抓取我们企业网站的信息,这时候,需要我们企业网站优化的工作人员去各大搜索引擎网站去提交sitemap,告知搜索蜘蛛,我们网站的情况,引导蜘蛛来抓取数据,收录我们的网站。

虽然网上有很多sitemap生成器,但是本人都下载或网上直接生成用过,发现有些生成器存在一些问题:

第一、操作繁琐而且还需要手动上传到空间。

第二、不够安全,有的程序带着暗链。

考虑众多原因本人利用kphp框架自己开发了小巧而且非常实用的网站地图sitemap生成功能模块。

我们需要了解的是sitemap的几种形式即各大搜索引擎需要sitemap的形式,经过百度查找发现有三种形式的sitemap文件格式:

第1种、html形式即sitemap.html

第2种、xml 形式即sitemap.xmlwww.kphp.org/sitemap.html

第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>


显示效果如下图:



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文件代码如下:

<?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);

}

/**
* 将sql语句指定的结果集,传递到视图中
*
* @param string $sql
* @param string $viewname
*
*/
function addArray($vname,$sql)
{
global $data,$view;
$array=$data->sqlArray($sql);
$view->add($vname,$array);
}

/**
* 传递任何变量
*
* @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代码如下:

<?php
include 'base.bo.php';
//编码转换
$code="utf-8";
//热卖排行
$kphp_list = array();
$i = 0;
$faqsql = "select id,title_time,news_title FROM news_info order by news_hit desc,id desc ";
$faq_list = $data->sqlArray($faqsql);
foreach($faq_list as $fk=>$fv)
{
$kphp_list[$i]["title"] = $fv["news_title"];
$kphp_list[$i]["url"] =  "http://www.kphp.org/?faq-show-".$fv["id"].".html";
}
$sitemap_time = date("Y-m-d H-i-s");
addValue("kphp_list",$kphp_list);
addValue("sitemap_time",$sitemap_time);
addValue("sitemap_num",$i);
$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网站地图就制作完成了,涉及的文件和代码我会打包保存上传到网站供大家下载。

代码下载地址:php网站开发kphp框架sitemap网站地图生成代码.rar

原文转自kphp开源框架:http://www.kphp.org/?faq-show-53.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息