[新功能改造]结合今日更新的2.9版本,内容url定义改造
<p>因需要老网站迁移,须保持迁移前后url的一致性,所以特别需求内容页url全自定义。今日2.9升级后发现还是无法完全实现url保持一致,因此特立此帖求助大神一起改造。<br></p><p><br></p>
<p>现有2.9的</p>
<p></p>
<p>这个功能好是好,但是还是没有满足我迁移网站保持url一致性的要求,解决这个问题我有2个思路,<br></p>
<p>思路一,使用 /a/{id}模式,把前面的a/去掉,然后解决内容页别名带/的问题</p>
<p>思路二,使用/栏目url/{id},把二级栏目url去掉只保留一级栏目的url,也要<span>解决内容页别名带/的问题</span></p>
<p><br></p>
<p></p>
<p>实施思路一的时候去掉a/会导致网站栏目页均无法打开,<br></p>
<p><br></p>
<p>实施思路二的时候,会出现设置页面500报错,其他页面正常</p>
<p><br></p>
<p>因对程序没啥基础,特立此贴求大神协助完成功能改造</p>
<p>改造文件路径\module\Cms\Type\ContentUrlMode.php</p>
<pre><?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;
}
}</pre>
<p><br></p><hr>以下是回复内容:<br><div class="ub-html content">
<p>v3.0.0即将上线「CMS链接增强」模块,用于解决其他系统迁移到ModStart的链接兼容问题,敬请期待。</p>
</div><hr><br>采集网址:<br>https://modstart.com/thread/677
页:
[1]