【EC-CUBE】SEO対策。メタの記載内容を個別ページごとに入れ替える。
EC-CUBEでは、METAタグは、基本設定で一括して決められてしまう(現状仕様)が、商品の個別ページなどは、その商品向けにそれぞれ別途登録したいことも多い。
んで、個別のキーワードやディスクリプションを設定できるようにカスタマイズする。
1)/data/Smarty/templates/site_frame.tpl の<title>タグと、<description>タグと、<keyword>タグを置き換える。
- トップページ
<title>ショップ名 | 基本設定:SEO管理で入力したトップページ用description</title>
<description>基本設定:SEO管理で入力したトップページ用description</description>
<keyword>基本設定:SEO管理で入力したトップページ用keyword</keyword> - 商品一覧ページ(カテゴリ未選択時)
<title>基本設定:SEO管理で入力した商品一覧用description | ショップ名</title>
<description>基本設定:SEO管理で入力した商品一覧用description</description>
<keyword>基本設定:SEO管理で入力した商品一覧用keyword</keyword> - 商品一覧ページ(カテゴリ選択時)
<title>カテゴリ名 | ショップ名</title>
<description>基本設定:SEO管理で入力した商品一覧ページ用description</description>
<keyword>基本設定:SEO管理で入力した商品一覧ページ用keyword</keyword> - 商品詳細ページ
<title>商品名 | ショップ名</title>
<description>商品登録の「一覧-メインコメント」 </description>
<keyword>商品登録の「検索ワード」 </keyword> - その他
<title>ページ名 | ショップ名</title>
<description>基本設定:SEO管理で入力したdescription</description>
<keyword>基本設定:SEO管理で入力したkeyword</keyword>
「/data/Smarty/templates/site_frame.tpl」をFTPでダウンロードし、編集。
<title>、<meta name=”description”~ 、<meta name=”keywords”~ の3項目を削除。<meta name=”author” のみ残す。(ver.2.3rc1の場合、34行目あたりから)
<title><!–{$arrSiteInfo.shop_name|escape}–>/<!–{$tpl_title|escape}–></title> ←削除
<meta name=”author” content=”<!–{$arrPageLayout.author|escape}–>” />
<meta name=”description” content=”<!–{$arrPageLayout.description|escape}–>” /> ←削除
<meta name=”keywords” content=”<!–{$arrPageLayout.keyword|escape}–>” /> ←削除
TITLEタグを削除した場所に、下記のコードを追加。
<!–{assign var=top value=”`$smarty.const.URL_DIR`index.php”}–>
<!–{assign var=list value=”`$smarty.const.URL_DIR`products/list.php”}–>
<!–{assign var=detail value=”`$smarty.const.URL_DIR`products/detail.php”}–><!–{if $smarty.server.PHP_SELF==$top}–>
<!–トップページ–>
<title><!–{$arrSiteInfo.shop_name}–> | <!–{$arrPageLayout.description|escape}–></title>
<meta name=”description” content=”<!–{$arrPageLayout.description|escape}–>” />
<meta name=”keywords” content=”<!–{$arrPageLayout.keyword|escape}–>” /><!–{elseif $smarty.server.PHP_SELF==$list}–>
<!–商品一覧ページ–>
<!–{if $tpl_subtitle != “全商品”}–>
<title><!–{$tpl_subtitle}–> | <!–{$arrSiteInfo.shop_name}–></title>
<!–{else}–>
<title><!–{$arrPageLayout.description|escape}–> | <!–{$arrSiteInfo.shop_name}–></title>
<!–{/if}–>
<meta name=”description” content=”<!–{$arrPageLayout.description|escape}–>” />
<meta name=”keywords” content=”<!–{$arrPageLayout.keyword|escape}–>” /><!–{elseif $smarty.server.PHP_SELF==$detail}–>
<!–商品詳細ページ–>
<title><!–{$tpl_title|escape}–> | <!–{$arrSiteInfo.shop_name}–></title>
<meta name=”description” content=”<!–{$arrProduct.main_list_comment|escape|regex_replace:”/[\r\t\n]/”:””}–>” />
<meta name=”keywords” content=”<!–{if $arrProduct.comment3}–><!–{$arrProduct.comment3|escape|regex_replace:”/[\r\t\n]/”:””|regex_replace:”/、/”:”,”}–>
<!–{/if}–>” /><!–{else}–>
<!–その他の場合–>
<title><!–{$tpl_title|escape}–> | <!–{$arrSiteInfo.shop_name}–></title>
<meta name=”description” content=”<!–{$arrPageLayout.description|escape}–>” />
<meta name=”keywords” content=”<!–{$arrPageLayout.keyword|escape}–>” />
<!–{/if}–>
2)/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.phpを修正する。
“vw_products_allclass_detail” に main_list_commentを追記(mySQLの場合)。
PostgreSQLの場合は、データベースに記録されるようなので、データベース上でフィールドを追加する。
(ver.2.3rc1の場合、438行目あたりから)
“vw_products_allclass_detail” => ‘
(SELECT product_id,price01_min,price01_max,price02_min,price02_max, stock_min,stock_max,stock_unlimited_min,stock_unlimited_max,del_flg, status,name,comment1,comment2,comment3,main_list_comment,deliv_fee, main_comment,main_image,main_large_image, sub_title1,sub_comment1, sub_image1,sub_large_image1,以下省略・・・(※「,」の後ろで半角スペースが入っているところは、実際は入れなくていい。ブログの表示用に便宜上いれてるだけ。)
これで、管理画面の基本情報のなかのSEO設定に入力した、全ページ共通のMETAやタイトルだけではなく、個別の商品情報の中で設定した検索用のキーワードや一覧用の商品説明も、各ページのMETA情報として追加されるようになった。
表示される内容を変えたい場合は、「/data/Smarty/templates/site_frame.tpl」のなかで、表示したい変数を埋め込むようにすればOK。
さらに、2.3バージョンでは、GOOGLE SITEMAP用にサイトマップを書き出せるようになっているので、こちらのサイトマップのURLも静的HTMLで書き出されるように編集しておく。
/data/class/pages/LC_Page_Sitemap.php
$page = array(“url” => SITE_URL . sprintf(“%sproducts/list.php?category_id=%d”, $mobile, $result[$i][‘category_id’]));
これを↓↓↓このように編集。(Ver.2.3Rc1の場合、240行目あたり)
$page = array(“url” => SITE_URL . sprintf(“%sproducts/list%d.html”, $mobile, $result[$i][‘category_id’]));
さらに、
$page = array(“url” => SITE_URL. sprintf(“%sproducts/detail.php?product_id=%d”, $mobile, $result[$i][‘product_id’]),
これを↓↓↓このように編集。(Ver.2.3Rc1の場合、264行目あたり)
$page = array(“url” => SITE_URL. sprintf(“%sproducts/detail%d.html”, $mobile, $result[$i][‘product_id’]),