DrupalのGoogle検索エンジンへのSEO調整はモジュール:Metatagをよく利用します。Viewsで生成したページのMetatagを生成したり、Tokenを利用してページのタイトル、各種キーワードをMetatagに入れることをMatatag:viewsサブモジュールで行います。
問題点:Viewsで生成さいたページのMetatagの翻訳はできない
マルチ言語(i18nモジュールの使用)サイトでは、サイトのTitle、Descriptionなどの重要なMetatagをサイト言語選択に応じて自動変更することが必要となります。
- Viewsで生成したページにあるMetatagの翻訳するモジュールはあまりないです。
- 現状ではMetatag:viewsのサブモジュールがの翻訳機能はありません
- Googleで検索してみたが、代表的な解決方法はいくつかあります:
解決: Metatag:Viewsサブモジュールの修正
よくMetatag:Viewsサブモジュールのソースコードを読んで、実際にMetatagの翻訳機能(i18nモジュールの利用)がありまして、ただ機能はしていないです。
- 使用しているモジュール: Metatag:7.x-1.19、 i18n:7.x-1.14
- MetataのMetatag:Viewsサブモジュールにバグがあります:
- 問題点:metatag_views.moduleに116行にあるタグ翻訳セット取得ロジックに言語コードを入れていなかったです。
metatag_translate_metatags($metatags[LANGUAGE_NONE], 'metatag_views:' . $view->name . METATAG_VIEWS_CONTEXT_SEPARATOR . $view->current_display, NULL, FALSE);
- 以下の修正を行います:
$langcode = $GLOBALS['language_content']->language;
metatag_translate_metatags($metatags[LANGUAGE_NONE], 'metatag_views:' . $view->name . METATAG_VIEWS_CONTEXT_SEPARATOR . $view->current_display, $langcode, FALSE);
- また、Viewsで生成したページのMetatagを作成するcontext(i18n_stringテーブル)のキーを修正する必要はあります
- 問題点:metatag_views_plugin_display_extender_metatags.incの77行目(キーのSeparatorが間違っています)
metatag_translations_update($metatags[LANGUAGE_NONE], 'metatag_views:' . $this->view->name . '_' . $this->display->plugin_name);
- 以下の修正を行います:
metatag_translations_update($metatags[LANGUAGE_NONE], 'metatag_views:' . $this->view->name . METATAG_VIEWS_CONTEXT_SEPARATOR . $this->view->current_display );
Viewsで生成したページのMetatag翻訳手順
- Viewsで通常ページ生成を行います
- Viewsで生成されたページの管理画面で「Meta Tag」をクリック、Title、Descriptionなどのタグを適切に設定します
- 生成したページにアクセスし、設定した言語を切り替えるよりi18nのインターフェース翻訳セットが自動的に生成されます。
- サイトの管理画面(Home » Administration » Configuration » Regional and language » Translate interface)でインターフェース翻訳を開きます
- Viewsで生成したMetatagの内容をキーにして設定いたMetatagの翻訳セットを検索すると、翻訳セットが表示されます。
- サイトの言語に応じて適切にMetatagの内容を翻訳します。
- 再度Viewsで生成したページにアクセスし、ページのプロパティから、Metatagの内容がサイト言語選択より自動的に変更されたことを確認します