現在、カスタムモジュールを開発中です。今、それはこのようになりますので、 私がしたいことは、素敵なURLを持つことです。私はすでにカスタムモジュールにリンクするために新しいページを追加しましたPrestashop 1.6のカスタムモジュールのURLリンク
domain.com/flower-deliveries?city=Hamburg&id_country=1&country=Germany
、ページ名は、私はまだ花の配達ですが、私は "隠す"必要があるパラメータを持っている。
代わりに、そのリンクの私はこのようなURLたい上:
domain.com/flower-deliveries-1-Hamburg-Germany.html
私は2つの方法を試してみましたが、それらのどれもが働いていない..
最初のものを、hookModuleRoutesを追加しました私のコントローラでは、単に以下のように:
public function hookModuleRoutes($params)
{
return array(
'module-vpages-dpage' => array(
'controller' => 'dpage',
'rule' => 'flower-deliveries{-:id_country}{-:country}{-:city}.html',
'keywords' => array(
'id_country' => array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'id_country'),
'city' => array('regexp' => '[\w]+', 'param' => 'city'),
'country' => array('regexp' => '[\w]+', 'param' => 'country')
),
'params' => array(
'fc' => 'module',
'module' => 'vpages',
'controller' => 'dpage'
)
)
);
}
そして、コントローラにインストール:
を'module-vpages-dpage' => array(
'controller' => 'dpage',
'rule' => 'flower-deliveries{-:id_country}{-:country}{-:city}.html',
'keywords' => array(
'id_country' => array('regexp' => '[0-9]+', 'param' => 'id_country'),
'city' => array('regexp' => '[\w]+', 'param' => 'city'),
'country' => array('regexp' => '[\w]+', 'param' => 'country'),
),
'params' => array(
'fc' => 'module',
'module' => 'vpages',
'controller' => 'dpage'
)
),
そのカスタムルールを使用する場合は、リンクhttp://domain.com/flower-deliveries?city=Hamburg&id_country=1&country=Germany
がhttp://domain.com/flower-deliveries?module_action=list
にtranformedたし、それはdidnの:働いていたので、私はディスパッチャクラスを上書きしようとした、カスタムモジュールのルートを追加していなかった
私は最初のページにリダイレクトされました。
私が間違っていることを教えてくれる人もいますか? 私はそれを行うべき方法を何時間も読んだことがあり、それは上記のものと同じでなければなりません。
ありがとう!
最初の方法は問題ありませんが、コントローラにないモジュールクラスにある必要があります。あなたのルールでは、 ''ルール '=>'フラワーデリバリー{ - :id_country} { - :country} { - :city} .html''を定義しました。 -Germany'。あなたは国の前に都市を使用していますが、ルールは異なる順序で定義されています。 – TheDrot
ええ、知っている、私は、モジュールファイル内のフックを持っているが、まだ何も..それは想定通りに表示されません.. – rosuandreimihai
このようなあなたのルールを定義する '=' '花 - {:id_country} - {:country} - {:city} .html''を実行し、それが動作するかどうかを確認します。私はあなたの最初のソリューションをテストし、PrestaShopは例外をスローアウトしかし、この方法は私のために働いた。 – TheDrot