Сокращение адреса блога в браузере - PullRequest
0 голосов
/ 07 мая 2019

Мне нужно сократить адрес в браузере в PrestaShop с " csblog / post " до " blog ". Клиент использует плагин блога "CS Blog", который генерирует как ссылки, так и адреса.

csblog является модулем, post является контроллером.

схема адреса: / csblog / post / friendly-name

Уже пытался изменить схемы ссылок и адресов в файлах плагинов и нашел, где именно это делается, но после смены модуля и контроллера - он ломается. Он не может найти сообщения или нет страницы показывает ошибки.

Уже пробовал различные .htaccess переписывать предложения в основном приложении (в папке и в главной папке модуля. Никаких эффектов. Нет никакой помощи в интернете, так как этот плагин не очень популярен.

Это мой текущий код в .htaccess:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ csblog/post/([^&\]+)
RewriteRule ^blog/%1? [L]

Как я могу сделать этот короткий адрес, должен ли он быть сделан с .htaccess или управляться только через плагин?

Функция, которая генерирует ссылки:

    {
        if (!$id_lang)
            $id_lang = Context::getContext()->language->id;
        $id_shop = Context::getContext()->shop->id;
        $url = Context::getContext()->link->getBaseLink($id_shop).$this->getLangLink($id_lang, null, $id_shop);
        $params['module'] = $module;
        $params['controller'] = $controller ? $controller : 'default';
        $dispatcher = Dispatcher::getInstance();
        $dispatcher->addRoute('cs_blog_post', '{module}{/:controller}/{id_cs_blog_post}-{category_parent}-{rewrite}.html', null, 1, array(//{module}{/:controller}
                'module' =>         array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'module'),
                'controller' =>     array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'controller'),
                'category_parent' =>        array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'category_parent'),
                'id_cs_blog_post' =>                array('regexp' => '[0-9]+', 'param' => 'id_cs_blog_post'),
                'rewrite' =>        array('regexp' => '[_a-zA-Z0-9-\pL]*'),
            ), array('fc' => 'module',));

        // If the module has its own route ... just use it !
        if ($dispatcher->hasRoute('module-'.$module.'-'.$controller, $id_lang))
            return Context::getContext()->link->getPageLink('module-'.$module.'-'.$controller, $ssl, $id_lang, $params);
        else
            return $url.$dispatcher->createUrl('cs_blog_post', $id_lang, $params);
    }

Функция создания адреса блога:

public function hookModuleRoutes($params){
'cs_blog_post' => array(
            'controller' => null,
            'rule' =>       '{module}{/:controller}/{id_cs_blog_post}-{category_parent}-{rewrite}.html',
            'keywords' => array(
                'module' =>         array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'module'),
                'controller' =>     array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'controller'),
                'category_parent' =>        array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'category_parent'),
                'id_cs_blog_post' =>                array('regexp' => '[0-9]+', 'param' => 'id_cs_blog_post'),
                'rewrite' =>        array('regexp' => '[_a-zA-Z0-9-\pL]*'),
            ),
            'params' => array(
                'fc' => 'module',
            ),
        ),
}

Ответы [ 2 ]

0 голосов
/ 07 мая 2019

Маршрутизация находится в главном файле вашего модуля.

найдите функцию hookModuleRoutes в вашем файле (вероятно, csblog.php). Тогда вы можете изменить свой маршрут

0 голосов
/ 07 мая 2019

Возможно, вы захотите проверить это выражение , чтобы убедиться, что это будет перенаправление, которое вы хотите сделать. Затем вы хотите добавить RewriteRul в ваш файл htaccess. Может быть, что-то похожее на это будет работать:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI} csblog\/post [NC]
    RewriteRule ^(.*)csblog\/post$ $1blog [NE,R=301,L]

</IfModule>
Options -Indexes -MultiViews 

enter image description here

Каждый раз, когда вы меняете свой htaccess, вы можете захотеть очистить историю посещенных страниц и протестировать ее, чтобы увидеть, работает ли она.

...