EC-CUBEのモバイルページでキーワード等のMETAタグを有効化する。
EC-CUBEの公式開発コミュニティに投稿されていたのですが、2.4.0以降のモバイルサイトで、テンプレートにはちゃんとMETAタグと値をはめ込むSmartyタグが記載されているのに、モバイルページが出力されると反映されていないバグがあった様です。
いずれ自分でも直さないといけないバグなので、修正してみました。
mobileProcess()を修正
このバグの原因はモバイルページが呼び出されるロジックで、データベースから適切な情報を持って来ていないのが原因です。
EC-CUBEのPCページはそのページの基本的な情報をデータベースに保存し、データベースの内容とテンプレートの情報を組み合わせて表示しているのですが、モバイルページの場合はその基本的な情報(レイアウトやSEO項目)をデータベースから取得していません。
なのでモバイルページを出力する際も、PCページと同様にデータベースから基本的な情報を取得してきてあげます。
この基本的なページ情報はデータベースのdtb_pagelayoutというテーブルに保存されています。
SC_Helper_PageLayoutというクラスに、その情報を取得するメソッドがあるので、コレを使います。
LC_Page_Index.phpのmobileProcess()の様なモバイルページの処理をしている箇所で、
$objView = new SC_MobileView();
の前あたりに以下のコードを追記します。
// レイアウトデザインを取得 $layout = new SC_Helper_PageLayout_Ex(); $ret = $layout->lfgetPageData('page_id = ?', array("1")); $this->arrPageLayout = $ret[0];
この
lfgetPageData('page_id = ?', array("1"))
がデータベースから基本的なページの情報を取得してくるメソッドです。
ここで引数に指定している「page_id」は、データベースのdtb_pagelayoutのidです。データベースの値を見れば、どのidを取得すれば良いかは解ります。
標準だとindexページがid1です。
ここで出力されるMETAタグのkeyword等の内容は、管理画面のSEO管理から設定できます。
クロスキューブでネットショップを構築する際は、ここをもっと拡張して、商品毎のキーワードやタイトルを出力する様にカスタマイズしています。
モバイルサイトだとカタカナが全部半角カタカナになっちゃうんですが、SEO的にどうなんでしょうかね?