EC-CUBE sitemap.phpにshoppingフォルダが含まれてしまう

img_ec-cube_sitemap
EC-CUBE2.13.3を使っているのですが、EC-CUBE標準で搭載されているsitemap.phpをGoogle Search Console(ウェブマスターツール)にサイトマップ送信していたのですが、気がつけばエラーが出ていました。
詳細をスクリーンショットするの忘れていたのですが、要約すると
「sitemap.phpに記載されている”shopping/”となっているページが見つかりません。」という事でした。
スポンサーリンク

shoppingフォルダとは?

shopping配下は購入情報のページです。つまりお届け先やお支払方法等の入力画面です。
実際にshopping配下ページに飛んでみると、「不正なアクセスです」と表示されてしまいます。
カートに商品も入っていないですし、EC-CUBEとしては当然の処理ですね。
しかしこれをGoogle Search Consoleはエラーと認識してしまうのです。
これも当然と言えば当然の話ですね、Googleさんにしたら
「せっかくクロールしてやってんのに不正アクセスてなんじゃコラアアアア」となります。
じゃ誰が悪いの?そう、sitemap.phpさんです。

sitemap.phpの修正

Google Search Consoleに送信しているsitemap.phpにそもそもshopping配下のページが羅列されてるのが問題だと思いますのでちょっと改造してshopping配下ページを表示させないようにしてあげることにしました。修正すべきはLC_Page_Sitemap.phpです。

LC_Page_Sitemap.php

/data/class/pages の LC_Page_Sitemap.php を編集しました。
汎用的に対応してもいいのですが、特にこの後触る事もないだろうと思いますし、既に動いてるシステムの為、なるだけ修正個所は少なくしたいと思ってかなり横着しました。(面倒だっただけというウワサも)
php部分に変数追加して配列に値放り込んで条件分岐させてごにょごにょ・・・・とか正直面倒すぎたので、SQLに条件を1つ追加してみました。
たぶんプログラム的にはキレイな方法ではありません、本当に横着の極みです。
システム会社でこんな事したら先輩に怒られるタイプです。
でもSQLだけなのでphpをよくわかってない人でも出来る技です。

実際にLC_Page_Sitemap.phpを修正

※あくまで個人的にカスタマイズしただけです、動作保証はできませんので修正する時は自己責任でお願いします。
/data/class/pages の LC_Page_Sitemap.php
273行目
$sql .= ' WHERE ' . $where;
$sql .= ' WHERE NOT url LIKE \'%shopping%\' and ' . $where;
実際ためしてみたところ、これでshopping配下ページをsitemap.phpから除外する事ができました。
内容解説するほどでもないと思いますが、dtb_pagelayoutというテーブルにurlという項目を持っているのですが、そのurlという項目には実際の表示されるURLが値として保持されています。なのでそのurlという項目に対してshoppingという文字列が入ってるデータを除外するように条件を設定してあげればshopping配下以外のページだけ取得してくるという内容です。
※もし標準のshopping配下以外に独自にshoppingほにゃらら等の独自ページや独自フォルダ構成を作っていると、それも除外されてしまうので注意してください。
もし同じ事で困ってる人がいたら参考にどうぞ!
※しつこいようですが、あくまで個人的にカスタマイズしただけです、動作保証はできませんので修正する時は自己責任でお願いします。私は全く責任持ちませんからね!

まとめ

この問題にぶつかって少し調査してみたんですが、同じ事で悩んでる人があまりいなかった事に驚きました。
理由はわかりませんが、きっとこんな理由だと思います。
1.実はEC-CUBEのこのバージョン特有の現象。
2.実はちゃんと対応するプラグインがあったりする。
3.EC-CUBEを使ってる人が全員スーパーエンジニアだから自分で楽勝で解決している。
4.Google Search Console上でエラーになっている事に気付いてない。
じっくり調べたわけではないのでわかりませんが、逆にみなさんどう対応してるのでしょう?きっともっと良い対応方法があるのかもしれませんね。
謎の残る一件でした。
最近肩こりが非常に辛いので良いアイテムがないかと探していたらこんなのを発見!
スポンサーリンク
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>