QQ扫一扫联系
因需要老网站迁移,须保持迁移前后url的一致性,所以特别需求内容页url全自定义。今日2.9升级后发现还是无法完全实现url保持一致,因此特立此帖求助大神一起改造。
现有2.9的
这个功能好是好,但是还是没有满足我迁移网站保持url一致性的要求,解决这个问题我有2个思路,
思路一,使用 /a/{id}模式,把前面的a/去掉,然后解决内容页别名带/的问题
思路二,使用/栏目url/{id},把二级栏目url去掉只保留一级栏目的url,也要解决内容页别名带/的问题
实施思路一的时候去掉a/会导致网站栏目页均无法打开,
实施思路二的时候,会出现设置页面500报错,其他页面正常
因对程序没啥基础,特立此贴求大神协助完成功能改造
改造文件路径\module\Cms\Type\ContentUrlMode.php
<?php namespace Module\Cms\Type; use ModStart\Core\Type\BaseType; use Module\Cms\Util\CmsCatUtil; /*use Module\Cms\Util\CmsModelUtil;*/ class ContentUrlMode implements BaseType { const A = 'a'; const CAT = 'cat'; /* const MODEL = 'model';*/ public static function getList() { return [ self::A => '/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的链接兼容问题,敬请期待。
v3.0.0 已上上线,通过 https://modstart.com/m/CmsUrlMix 可以实现任意历史链接无缝迁移的功能