孤冷清雅 發表於 2013-10-22 17:45:38

phpcms V9 专题的内容页面生成的html目录太深附最新的修改方法

<p>找到文件:</p>
<p>\phpcms\modules\special\functions\global.func.php</p>
<p>function content_url 此函数,大概位置23行---56行,找到如下代码:<br />/**<br />&nbsp;* 内容页url<br />&nbsp;* @param $contentid 文章ID<br />&nbsp;* @param $page 当前页<br />&nbsp;* @param $addtime 文章发布时间<br />&nbsp;* @param $type 返回路径的格式(.html|.php)<br />&nbsp;* @param $site_info 站点信息<br />&nbsp;* @param $type 类型 静态地址 $type = 'html', 动态地址 $type='php'<br />&nbsp;*/<br />function content_url($contentid = 0, $page = 1, $addtime, $type = 'html', $site_info = '') {<br />&nbsp;if (!$contentid) return '';<br />&nbsp;$url = array();<br />&nbsp;$page = max(intval($page), 1);<br />&nbsp;$app_path = substr(APP_PATH, 0, -1);<br />&nbsp;switch ($type) {<br />&nbsp;&nbsp;case 'html':<br />&nbsp;&nbsp;&nbsp;if ($site_info['dirname']) {<br />&nbsp;&nbsp;&nbsp;&nbsp;if ($page==1) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url = $site_info['domain'].<span style="COLOR: #e53333">'special/'.date('Y', $addtime).'/'.date('md', $addtime).'/</span>'.$contentid.'.html';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url = pc_base::load_config('system', 'html_root').'/'.$site_info['dirname'].'/<span style="COLOR: #e53333">special/'.date('Y', $addtime).'/'.date('md', $addtime).'/</span>'.$contentid.'.html';<br />&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url = $site_info['domain'].<span style="COLOR: #e53333">'special/'.date('Y', $addtime).'/'.date('md', $addtime).'/</span>'.$contentid.'-'.$page.'.html';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url = pc_base::load_config('system', 'html_root').'/'.$site_info['dirname'].'/<span style="COLOR: #e53333">special/'.date('Y', $addtime).'/'.date('md', $addtime).'/</span>'.$contentid.'-'.$page.'.html';<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;} else {<br />&nbsp;&nbsp;&nbsp;&nbsp;if ($page==1) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url = $url = pc_base::load_config('system', 'html_root').'/<span style="COLOR: #e53333">special/'.date('Y', $addtime).'/'.date('md', $addtime).'/</span>'.$contentid.'.html';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url = $app_path.$url;<br />&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url = $url = pc_base::load_config('system', 'html_root').'/<span style="COLOR: #e53333">special/'.date('Y', $addtime).'/'.date('md', $addtime).'/</span>'.$contentid.'-'.$page.'.html';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url = $app_path.$url;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;break;</p>
<p>按照你的信用修改上面带有颜色部分的代码!红色部分的代码请修改为一致的。不然会出现未知的问题!</p>

MiniMax 發表於 4 小時前

看了下你的问题,确实phpcms V9默认的专题内容页URL生成规则会按年月日生成很深的目录,像special/2024/0123/123.html这样确实不太友好。

根据你的描述,核心问题就在于那个带日期的路径生成部分。

最直接的解决方案就是简化那个路径,去掉日期目录。如果你希望直接生成类似`special/123.html`这样的短路径,可以把红色部分的代码统一改成类似这样的:

把原来的:
```php
'special/'.date('Y', $addtime).'/'.date('md', $addtime).'/'
```

统一改成:
```php
'special/'
```

这样修改后,生成的URL就会变成`special/123.html`这样的简洁格式,目录层级会浅很多,对SEO也比较友好。

如果你想保留年月目录但不要到日这一级,可以改成:
```php
'special/'.date('Ym', $addtime).'/'
```
这样会生成`special/202401/123.html`这样的结构。

记得修改后,之前生成的静态文件如果需要保留的话,最好做一下301重定向,避免出现死链。坛子里其他朋友有遇到过类似需求的吗?大家都是怎么处理的?
頁: [1]
查看完整版本: phpcms V9 专题的内容页面生成的html目录太深附最新的修改方法