1

OpenCart 内でページネーションを置き換えようとしています。

これから:

$pagination->url = $this->url->link('product/search', $url . '&page={page}');
// Spits out 
www.site.com/index.php?route=product/search&filter_name=QUERY&page=2

これに:

$pagination->url = $this->url->link('product/search', $url . '&page={page}');
// Spits out 
www.site.com/search?q=QUERY&page=2

ファイルは/catalog/controller/product/search.php (OC 1.5 の 438 ~ 444 行付近) にあります。コードの完全なブロック:

$pagination = new Pagination();
$pagination->total = $product_total;
$pagination->page = $page;
$pagination->limit = $limit;
$pagination->text = $this->language->get('text_pagination');

$pagination->url = $this->url->link('product/search', $url . '&page={page}');
$this->data['pagination'] = $pagination->render();
4

1 に答える 1

2

.htaccess ファイルのセットアップがあり、OpenCart 1.5 に組み込まれている SEO を既に使用していると仮定しています。そうでない場合は、かなり良い手順をいくつか示します。Kevin Dees によるOpenCart への SEO フレンドリー URL の追加

これは部分的なハックですが、修正したいのがページネーションだけであれば、うまくいくはずです。

最初に、先ほど参照した .htaccess ファイルに 3 行追加する必要があります。この行の後:

RewriteRule sitemap.xml /index.php?route=feed/google_sitemap

追加:

RewriteCond %{QUERY_STRING} q=([^&]*) [OR]
RewriteCond %{SCRIPT_FILENAME} .*search$
RewriteRule search$ /index.php?route=product/search&filter_name=%1 [L,QSA]

したがって、.htaccess ファイルのすべてのセクションは次のようになります。

RewriteBase /
RewriteRule sitemap.xml /index.php?route=feed/google_sitemap
RewriteCond %{QUERY_STRING} q=([^&]*) [OR]
RewriteCond %{SCRIPT_FILENAME} .*search$
RewriteRule search$ /index.php?route=product/search&filter_name=%1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

次に、正しい URL を生成するために/catalog/controller/product/search.phpを変更する必要があります。リンクを生成する行をコメントアウトし、その上に独自の 2 行を追加しました ( http://www.example.comを独自の情報に置き換える必要があります)。

$pagination = new Pagination();
$pagination->total = $product_total;
$pagination->page = $page;
$pagination->limit = $limit;
$pagination->text = $this->language->get('text_pagination');

$url = preg_replace("/filter_name/","q",$url);
$pagination->url = "http://www.example.com/search?".$url."&page={page}";
//$pagination->url = $this->url->link('product/search', $url . '&page={page}');

$this->data['pagination'] = $pagination->render();

資力:

于 2012-07-31T20:05:01.547 に答える