因需要老网站迁移,须保持迁移前后url的一致性,所以特别需求内容页url全自定义。今日2.9升级后发现还是无法完全实现url保持一致,因此特立此帖求助大神一起改造。
现有2.9的
23160_1jbf_3265.png
这个功能好是好,但是还是没有满足我迁移网站保持url一致性的要求,解决这个问题我有2个思路,
思路一,使用 /a/{id}模式,把前面的a/去掉,然后解决内容页别名带/的问题
思路二,使用/栏目url/{id},把二级栏目url去掉只保留一级栏目的url,也要解决内容页别名带/的问题
23424_5kgu_7724.png
实施思路一的时候去掉a/会导致网站栏目页均无法打开,
实施思路二的时候,会出现设置页面500报错,其他页面正常
因对程序没啥基础,特立此贴求大神协助完成功能改造
改造文件路径\module\Cms\Type\ContentUrlMode.php
'/a/{id}',
self::CAT => '/栏目url/{id}',
/* self::MODEL => '/模型url/{id}',*/
];
}
public static function url($content)
{
if (empty($content['alias'])) {
$content['alias'] = $content['id'];
}
$url = modstart_web_url('a/' . $content['alias']);
if (modstart_config('Cms_ContentUrlMode') == ContentUrlMode::CAT) {
$cat = CmsCatUtil::get($content['catId']);
/* public static function root($catId)
{
$id = $catId;
for ($i = 0; $i < 10; $i++) {
$cat = self::get($id);
if (!$cat['pid']) {
return $cat;
}
$id = $cat['pid'];
}
return null;
}*/
if (!empty($cat['url'])) {
$url = modstart_web_url($cat['url'] . '/' . $content['alias']);
/* if (modstart_config('Cms_ContentUrlMode') == ContentUrlMode::MODEL) {
$model = CmsModelUtil::get($content['modelId']);
if (!empty($cat['url'])) {
$url = modstart_web_url($model['name'] . '/' . $content['alias']);*/
}
}
return $url;
}
}
以下是回复内容:
v3.0.0即将上线「CMS链接增强」模块,用于解决其他系统迁移到ModStart的链接兼容问题,敬请期待。
采集网址: https://modstart.com/thread/677 |