PbootCMS实现详情页链接不带父级目录直接ID访问教程
时间:2024年01月27日
/来源:网络
/编辑:佚名
因为博客有时候不同时间段想法不一样,会考虑栏目层级的变化,这时候文章详情链接如果带了父级目录名称那么链接也会随之变化,对于被收录的文章就打不开了。
那么实现详情页链接不带父级目录直接ID访问具体是什么样的,这是原来的详情链接xxx.com/industry/7.html,优化完之后xxx.com/7.html
下面来讲解下在PbootCMS具体的实现方法:
总共修改两个文件,在同一个目录里。修改的位置做了标注,关键字:@mk-detail
/apps/home/controller/IndexController.php
/apps/home/controller/ParserController.php
IndexController.php里修改两处
1、在地址分隔符的上一行
$path_num = is_numeric($path[0]); // @mk-detail
// 地址分隔符
$url_break_char = $this->config('url_break_char') ?: '_';
截图:
PbootCMS实现详情页链接不带父级目录直接ID访问教程
2、在 if (count($path) > 1) { 下面位置增加elseif判断
if (count($path) > 1) {
if (! ! ($data = $this->model->getContent($path[1])) && ($data->scode == $scode || $data->sortfilename == $scode)) {
$this->getContent($data);
} else {
_404('您访问的内容不存在,请核对后重试!');
}
} elseif ($path_num) { // @mk-detail
if (! ! ($data = $this->model->getContent($path[0]))) {
$this->getContent($data);
} else {
_404('您访问的内容不存在,请核对后重试!');
}
} else {
if (! ! $sort = $this->model->getSort($scode)) {
if ($sort->type == 1) {
$this->getAbout($sort);
} else {
$this->getList($sort);
}
} else {
_404('您访问的栏目不存在,请核对后重试!');
}
}
截图:
PbootCMS实现详情页链接不带父级目录直接ID访问教程
ParserController.php修改一处
在这个代码的下面新增,原来的注释掉 $link = Url::home('home/Index/' . $sortfilename . '/' . $id, true);
if ($sortfilename && $contentfilename) {
$link = Url::home('home/Index/' . $sortfilename . '/' . $contentfilename, true);
} elseif ($sortfilename) {
// $link = Url::home('home/Index/' . $sortfilename . '/' . $id, true);
$link = Url::home('home/Index/' . $id, true); // @mk-detail
} elseif ($contentfilename) {
$link = Url::home('home/Index/' . $urlname . $url_break_char . $scode . '/' . $contentfilename, true);
} else {
$link = Url::home('home/Index/' . $urlname . $url_break_char . $scode . '/' . $id, true);
}
截图:
PbootCMS实现详情页链接不带父级目录直接ID访问教程
至此ojbk了。
上面操作完后后天点击查看时还是带目录的链接,前台查看sitemap.html发现链接也没修改过来。
所以还要下面再操作两个地方修改
1、后台模板代码修改,找到/apps/admin/view/default/content/content.html
//原来的
$link = homeurl('home/Index/' . $sortfilename . '/' . $id, true);
//替换成下面
$link = homeurl('home/Index/' . $id, true);
2、网站地图生成文件,找到/apps/home/controller/SitemapController.php
//原来的
$link = Url::home('home/Index/' . $value2->sortfilename . '/' . $value2->id, true);
//替换成下面
$link = Url::home('home/Index/' . $value2->id, true);
那么实现详情页链接不带父级目录直接ID访问具体是什么样的,这是原来的详情链接xxx.com/industry/7.html,优化完之后xxx.com/7.html
下面来讲解下在PbootCMS具体的实现方法:
总共修改两个文件,在同一个目录里。修改的位置做了标注,关键字:@mk-detail
/apps/home/controller/IndexController.php
/apps/home/controller/ParserController.php
IndexController.php里修改两处
1、在地址分隔符的上一行
$path_num = is_numeric($path[0]); // @mk-detail
// 地址分隔符
$url_break_char = $this->config('url_break_char') ?: '_';
截图:
PbootCMS实现详情页链接不带父级目录直接ID访问教程
2、在 if (count($path) > 1) { 下面位置增加elseif判断
if (count($path) > 1) {
if (! ! ($data = $this->model->getContent($path[1])) && ($data->scode == $scode || $data->sortfilename == $scode)) {
$this->getContent($data);
} else {
_404('您访问的内容不存在,请核对后重试!');
}
} elseif ($path_num) { // @mk-detail
if (! ! ($data = $this->model->getContent($path[0]))) {
$this->getContent($data);
} else {
_404('您访问的内容不存在,请核对后重试!');
}
} else {
if (! ! $sort = $this->model->getSort($scode)) {
if ($sort->type == 1) {
$this->getAbout($sort);
} else {
$this->getList($sort);
}
} else {
_404('您访问的栏目不存在,请核对后重试!');
}
}
截图:
PbootCMS实现详情页链接不带父级目录直接ID访问教程
ParserController.php修改一处
在这个代码的下面新增,原来的注释掉 $link = Url::home('home/Index/' . $sortfilename . '/' . $id, true);
if ($sortfilename && $contentfilename) {
$link = Url::home('home/Index/' . $sortfilename . '/' . $contentfilename, true);
} elseif ($sortfilename) {
// $link = Url::home('home/Index/' . $sortfilename . '/' . $id, true);
$link = Url::home('home/Index/' . $id, true); // @mk-detail
} elseif ($contentfilename) {
$link = Url::home('home/Index/' . $urlname . $url_break_char . $scode . '/' . $contentfilename, true);
} else {
$link = Url::home('home/Index/' . $urlname . $url_break_char . $scode . '/' . $id, true);
}
截图:
PbootCMS实现详情页链接不带父级目录直接ID访问教程
至此ojbk了。
上面操作完后后天点击查看时还是带目录的链接,前台查看sitemap.html发现链接也没修改过来。
所以还要下面再操作两个地方修改
1、后台模板代码修改,找到/apps/admin/view/default/content/content.html
//原来的
$link = homeurl('home/Index/' . $sortfilename . '/' . $id, true);
//替换成下面
$link = homeurl('home/Index/' . $id, true);
2、网站地图生成文件,找到/apps/home/controller/SitemapController.php
//原来的
$link = Url::home('home/Index/' . $value2->sortfilename . '/' . $value2->id, true);
//替换成下面
$link = Url::home('home/Index/' . $value2->id, true);
新闻资讯 更多
- 【pbootcms教程】pbootcms模板制作教程-首页Banner轮播如何制作01-28
- 【pbootcms教程】Pbootcms内容轮播多图添加自定义图片名称01-28
- 【pbootcms教程】PbootCMS二开之邮件配置修改发件人信息01-27
- 【pbootcms教程】PbootCMS实现详情页链接不带父级目录直接ID访问教程01-27
- 【pbootcms教程】PbootCMS后台增加轮播图自定义分组名称01-27
- 【pbootcms教程】PbootCMS用扩展标签定制一个每日一图01-27
- 【pbootcms教程】PbootCMS会话目录写入权限不足解决办法01-27
- 【pbootcms教程】php多图片上传的实现(pbootcms多图上传)01-24
猜你需要
热门文章
- 178Moban源码谈谈免费源码与收费源码的区别
- 2帝国CMS忘记后台登陆用户名、密码、认证码的解决方法
- 3帝国CMS(EmpireCMS) v7.5后台任意代码执行漏洞及具体修复方法
- 4帝国CMS和WordPress 哪个好?哪个适合建站?
- 5如何解决Discuz的密码错误次数过多请15分钟后登陆的问题
- 6帝国cms灵动标签取得内容和栏目链接地址
- 7emlog pro 注册码“开心”教程(如果有一天,emlog官方版 或者 emlog免费版 跑路了,那用户怎么办?)
- 8织梦CMS在nginx下设置伪静态方法(附nginx伪静态规则)
- 9帝国cms后台登录出现”您还未登录”怎么解决?
- 10帝国cms7.5忘记登录密码 和忘记登录认证码以及多次登录 失败被锁定解决办法