web-dev-qa-db-ja.com

どのようにSEOのページネーションURLビューを書き換えますか?

私はビューのURLページネーションを書き換えようとしています:

/ mypath/cat?page = 1

/ mypath/cat/1または>/mypath/cat/page/1または/ mypath/cat-1

猫は分類用語です。

Drupal\seo\PathProcessorでURL​​を書き換えようとしましたが、実際には成功しませんでした...

/ mypath/cat?page = 1を/ mypath/cat-1に書き換えるコード:

    public function processInbound($path, Request $request) {

        $page = \Drupal::request()->query->get('page');

        if($path == '/mypath/cat' && $page>0) {
            \Drupal::request()->query->set('page', $page);
            return $path.'-'.$page;
        }

        return $path;
    }

    public function processOutbound($path, &$options = [], Request $request = NULL, BubbleableMetadata $bubbleable_metadata = NULL) {
        return $path;
    }

これは/ mypath/cat-1?page = 1。にリダイレクトされます

それもビューフィルターを壊しました、それは正常です。

「-」を削除するためにビューフィルターを変更できますが、URIから?page = 1をどのように削除しますか?

これはURLビューのページネーションを変更する正しい方法ですか?

2
Kevin

Drupal 7では、 Query Parameters To URL を使用できますが、 D8ポートにはさらに作業が必要です 。コースでそれを助けることができますあなたの現在のプロジェクトの仕事の?

これは Clean Pagination と同様で、特にページネーションをクリーンアップします。D8にはさらに作業が必要です。

それまでの間、公開されたビューフィルタの一部をコンテキストフィルタに置き換えることができます。それらは/で区切られた引数を取ります。

コンテキストフィルターを使用すると、用語名を含む公開されたフィルターの代わりに、ビュー(またはその問題の任意の領域)の上部に分類用語名の概要を表示できます。こうすると、用語のリストがビューの上部にリンクとして表示され、リンクパスはmypath/catのようになります。

改ページは引き続き?page=1を追加するため、Clean Paginationを実行しない限り、mypath/cat?page=1になります。

2
prkos