Prestashop - 模块,SEO&网址和参数?

时间:2014-05-14 15:50:03

标签: seo prestashop

我为Prestashop制作了一个模块,它将根据参数(& id = X)中的给定ID显示内容。

我想为这个模块设置一个不错的网址。

使用SEO和URLS,我发现这是可能的,但它会将?id = X保留在网址中。

例如,如果我将模块的url定义为

/pretty-module

我将拥有相同的链接但具有不同的ID:

/pretty-module?id=1
/pretty-module?id=23

我想做的是以下内容:

/pretty-module => will set id to 1
/even-prettier-module => will set id to 23

我没有在SEO&中看到“参数”选项。 Backoffice中的URLS页面,所以我想知道是否可以这样做。

1 个答案:

答案 0 :(得分:6)

你需要挂钩到moduleRoutes,

1)在您的模块安装方法中:

if (!parent::install()           
    || !$this->registerHook('moduleRoutes')
    || !$this->registerHook('displayFooter'))
       return false;

2)创建相应的钩子

public function hookmoduleRoutes($params) {
    $routes = array();
    $routes['module-examplemodule-handler'] = array(
        'controller'=>'handler',
        'rule'=>'promo{/:code}',
        'keywords'=>array(
            'code'=>array(
                'regexp'=>'[\w]+',
                'param'=>'short_code'
            )
        ),
        'params'=>array(
            'fc'=>'module',
            'module'=>'examplemodule',
            'controller'=>'handler'
        )
    );

    return $routes;
}

模块可能有多条路线。  惯例是模块 - [MODULE_NAME] - [MODULE_CONTROLLER_NAME]

数组解释:

controller - handler (modules / examplemodule / controllers / front / handler.php)

规则 - 花括号是params ..你可以从http://example.com/admin/index.php?controller=AdminMeta

得到一个想法

keywords - 在这里配置规则中定义的params(花括号)。

用法示例:http://example.com/promo/ADSGD

在控制器'处理器':

$short_code = Tools::getValue('short_code');

在prestashop 1.6上测试

参考:https://books.google.co.il/books?id=BsSiBQAAQBAJ&pg=PT134&lpg=PT134&dq=prestashop+module+Routes+hook&source=bl&ots=JCb_4oz6el&sig=JwoQfIsOnJ49VJ752fEb01ivMZ8&hl=en&sa=X&ei=vH0QVePiDoXPaNSxgrAP&ved=0CEIQ6AEwBA#v=onepage&q=prestashop%20module%20Routes%20hook&f=false