2016-03-05 79 views
0

我創建了一個自定義路線的藝術家頁面:與重寫模塊路由重定向到產品。Prestahop

public function hookModuleRoutes($params) 
{ 
    return [ 
     'module-artists-artist' => [ 
      'controller' => 'artist', 
      'rule' => 'artists/{id_artist}', 
      'keywords' => [ 
       'id_artist' => ['regexp' => '[0-9]+', 'param' => 'id_artist'], 
      ], 
      'params' => [ 
       'fc' => 'module', 
       'module' => 'artists', 
       'controller' => 'artist' 
      ], 
     ], 
    ]; 
} 

如果我/artists/1測試,這個工程。但是我想添加link_rewrite屬性。所以我修改這樣的結構:

public function hookModuleRoutes($params) 
{ 
    return [ 
     'module-artists-artist' => [ 
      'controller' => 'artist', 
      'rule' => 'artists/{id_artist}-{rewrite}', 
      'keywords' => [ 
       'id_artist' => ['regexp' => '[0-9]+', 'param' => 'id_artist'], 
       'rewrite' => ['regexp' => '[_a-zA-Z0-9\pL\pS-]*'], 
      ], 
      'params' => [ 
       'fc' => 'module', 
       'module' => 'artists', 
       'controller' => 'artist' 
      ], 
     ], 
    ]; 
} 

但是當我嘗試/artists/1-baxter,我重定向到產品的產品頁面ID 1。我的藝術家控制器從未被調用。

[Debug] This page has moved 
Please use the following URL instead: http://localhost:8000/fr/estampes/1-est-ce-que-etre 

我該如何解決?

回答

0

這是因爲您的模式生成的網址也與產品網址格式相匹配,該格式具有較高的優先級。 PrestaShop不檢查產品是否存在,它只是直接重定向到ProductController。 PrestaShop中的頁面模式各不相同,因此URL可以被快速識別爲與X控制器相關聯。您可以通過檢查默認模式來確認。

您可以查看後臺的產品網址格式:SEO &網址或DispatcherCore類。無論如何,如果你想要一個簡單的辦法,我建議做這種模式:

artists/{id_artist}/{rewrite}

+0

謝謝,這是這個!但我認爲自定義網址將在默認網址之前。因此,我爲產品頁面創建了一個'p- {id} - {rewrite}',爲藝術家頁面創建了'a- {id} - {rewrite}'。非常好,謝謝! – Soullivaneuh