方法和之前说的生成TXT地图差不多。
1:我们先复制一个模型文件,具体的路径如图,如果之前做过txt的,则直接复制TXT的模型文件即可,否则复制sitmapxmodel.php并改名为:SitehtmlModel.php,请注意大小写。
2:复制之后,需要对此文件进行修改。 一是CLASS后面调用的模型名称,改成本文件的名称。
第二步是增加 a.title,这个一共加两处,第二处在下面一点。一看就懂的。这个很重要。因为如果这里不添加的话,后面在生成HTML的时候无法引用到文章的标题出来。
3:控制器里面复制一个文件。如图并修改名称。
4:打开SitehtmlController.php
醉顶部增加一个网站手页的标题。不加也可以。这里。
在列表位置处。每一个$link = 的下面增加一行: $title2 (此处名字自取,我为了方便记和容易识别,采用了标题加数字。)
同时将下面的字符串连接处改为:
$str .= $this->makeNode($link, $title2);
对于内容区内容,我修改为:
醉后,将节点位置改成:title2
5: 添加自定义路由. 我用的是: sitehtml.html ,这里请记住不能使用:sitemap.html,至于是什么原因,我也没有研究过。可能是因为和上面sitemap有重复,所以打开:sitemap.html会也打开XML格式。不重要
6: 此时,已经大功完成了。但是我们发现它太丑了,不像是一个HTML应该有的样子。好吧。那我们再给它加的CSS样式吧。并且加上HTML的头部和尾部。
7: 我们在上面位置添加HTML标题输出。
在醉底部添加HTML页面的尾部并写上CSS样式。
刷新一下看看效果吧。
到此,完全结束。相信你已经会了。
由于SitehtmlController.php代码修改比较多,为了帮大家省点时间。故贴出代码,可直接复制过去。
<?php namespace apphomecontroller; use core/basic/Controller; use app/home/model/SitehtmlModel; use core/basicUrl; class SitehtmlController extends Controller { protected $model; public function __construct() { $this->model = new SitehtmlModel(); } public function index() { echo '<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>网站地图</title> </head> <body> <div> '; $str .= $this->makeNode('', '网站首页'); // 根目录 $url_break_char = $this->config('url_break_char') ?: '_'; $sorts = $this->model->getSorts(); foreach ($sorts as $value) { if ($value->outlink) { continue; $title2 = $value->name; } elseif ($value->type == 1) { $value->urlname = $value->urlname ?: 'list'; if ($value->filename) { $link = Url::home('/home/Index/' . $value->filename); $title2 = $value->name; } else { $link = Url::home('/home/Index/' . $value->urlname . $url_break_char . $value->scode); $title2 = $value->name; } $str .= $this->makeNode($link, $title2); } else { $value->urlname = $value->urlname ?: 'list'; if ($value->filename) { $link = Url::home('home/Index/' . $value->filename); $title2 = $value->name; } else { $link = Url::home('home/Index/' . $value->urlname . $url_break_char . $value->scode); $title2 = $value->name; } $str .= $this->makeNode($link,$title2); $contents = $this->model->getSortContent($value->scode); foreach ($contents as $value2) { if ($value2->outlink) { // 外链 continue; $title2 = $value2->title; } else { $value2->urlname = $value2->urlname ?: 'list'; if ($value2->filename && $value2->sortfilename) { $link = Url::home('home/Index/' . $value2->sortfilename . '/' . $value2->filename, true); $title2 = $value2->title; } elseif ($value2->sortfilename) { $link = Url::home('home/Index/' . $value2->id, true); $title2 = $value2->title; } elseif ($value2->contentfilename) { $link = Url::home('home/Index/' . $value2->urlname . $url_break_char . $value2->scode . '/' . $value2->filename, true); $title2 = $value2->title; } else { $link = Url::home('home/Index/' . $value2->urlname . $url_break_char . $value2->scode . '/' . $value2->id, true); $title2 = $value2->title; } } $str .= $this->makeNode($link, $title2); } } } echo $str . " </urlset>"; } // 生成结点信息 private function makeNode($link,$title2) { $node = '<a href="' . get_http_url() . $link.'" target="_blank" style="display:block"> ' . $title2.'</a> '; return $node; } } echo '</div></body></html>'; echo '<style> html,body{margin:0; padding:0; font-size:14px; line-height:24px;} a{text-decoration:none; color:#000;} .main{width:1200px; margin:50px auto; border:1px solid #ddd; padding:30px;} </style> ';