admin 发表于 2023-3-12 15:01:47

[新功能改造]结合今日更新的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>
页: [1]
查看完整版本: [新功能改造]结合今日更新的2.9版本,内容url定义改造