EC-CUBE EC-CUBEのカスタマイズ・制作会社 強いネットショップ構築します|EC-Orange

EC-Orange とは

EC-CUBE カスタマイズ

EC-CUBEインストール

EC-CUBE 環境構築ノウハウ

EC-CUBE 基本構成理解

ソースコード読解

EC-CUBE カスタマイズ:初歩

EC-CUBE カスタマイズ:基礎

EC-CUBE カスタマイズ:応用

EC-CUBE 機能拡張ノウハウ

EC-CUBE カスタマイズ    検索エンジンからどんどん集客、SEO対策

    EC-CUBE カスタマイズ  >  EC-CUBE 機能拡張ノウハウ  >  SEO強化方法

機能拡張ノウハウ/SEO強化方法

管理画面の商品登録時、および編集時に、metaタグのkeyword、descriptionの編集項目を作るカスタマイズです。

楽天市場やYahoo!shoppingなどのショッピングモールに出店するのではなく、独自に開発したECサイトは、
集客の8割を検索エンジンに頼っていると言われています(EC-Orangeスタッフブログ 『EC-CUBE公式集客サービスがリリースされました!』『Twitterでマーケティング』)。
SEO対策を実施し、検索順位を上げることが、売上アップの第一歩です!

    システム開発でお悩みの方は、ネットショップ構築パッケージ EC-Orange にお問い合わせください


テンプレートファイルを変更する

入力用画面を変更する。

data/Smarty/templates/default/admin/products/product.tpl

  1. <tr>
  2.     <td bgcolor="#f2f1ec" width="160" class="fs12n">検索ワード<br />※複数の場合は、カンマ( , )区切りで入力して下さい</td>
  3.     <td bgcolor="#ffffff" width="557" class="fs10n">
  4.     <span class="red12"><!--{$arrErr.comment3}--></span>
  5.     <textarea name="comment3" cols="60" rows="8" class="area60" maxlength="<!--{$smarty.const.LLTEXT_LEN}-->" style="<!--{$arrErr.comment3|sfGetErrorColor}-->"><!--{$arrForm.comment3|escape}--></textarea><br /><span class="red"> (上限<!--{$smarty.const.LLTEXT_LEN}-->文字)</span></td>
  6. </tr>
  7. <!--以下を追加-->
  8. <tr>
  9.     <td bgcolor="#f2f1ec" width="160" class="fs12n">keyword</td>
  10.     <td bgcolor="#ffffff" width="557" class="fs10n">
  11.     <span class="red12"><!--{$arrErr.keyword}--></span>
  12.     <input type="text" name="keywords" value="<!--{$arrForm.keywords|escape}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{if $arrErr.keywords != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}--><!--{/if}-->" size="60" class="box60" /></td>
  13. </tr>
  14. <tr>
  15.     <td bgcolor="#f2f1ec" width="160" class="fs12n">ディスクリプション</td>
  16.     <td bgcolor="#ffffff" width="557" class="fs10n">
  17.     <span class="red12"><!--{$arrErr.description}--></span>
  18.     <input type="text" name="description" value="<!--{$arrForm.description|escape}-->" maxlength="50" style="<!--{if $arrErr.description != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}--><!--{/if}-->" size="60" class="box60" /></td>
  19. </tr>
  20. <!--ここまで-->
  21. <tr>
  22.     <td bgcolor="#f2f1ec" width="160" class="fs12n">一覧-メインコメント<span class="red"> *</span></td>
  23.     <td bgcolor="#ffffff" width="557" class="fs10n">
  24.     <span class="red12"><!--{$arrErr.main_list_comment}--></span>
  25.     <textarea name="main_list_comment" maxlength="<!--{$smarty.const.MTEXT_LEN}-->" style="<!--{if $arrErr.main_list_comment != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}--><!--{/if}-->" cols="60" rows="8" class="area60"><!--{$arrForm.main_list_comment|escape}--></textarea><br /><span class="red"> (上限<!--{$smarty.const.MTEXT_LEN}-->文字)</span></td>
  26. </tr>

確認画面を変更する

data/Smarty/templates/default/admin/products/confirm.tpl

  1. <tr>
  2.     <td bgcolor="#f2f1ec" width="160" class="fs12n">検索ワード</td>
  3.     <td bgcolor="#ffffff" width="557" class="fs12n">
  4.     <!--{$arrForm.comment3|escape}-->
  5.     </td>
  6. </tr>
  7. <!--以下を追加-->
  8. <tr>
  9.     <td bgcolor="#f2f1ec" width="160" class="fs12n">keyword</td>
  10.     <td bgcolor="#ffffff" width="557" class="fs12n">
  11.         <!--{$arrForm.keywords|escape}-->
  12.     </td>
  13. </tr>
  14. <tr>
  15.     <td bgcolor="#f2f1ec" width="160" class="fs12n">ディスクリプション</td>
  16.     <td bgcolor="#ffffff" width="557" class="fs12n">
  17.         <!--{$arrForm.description|escape}-->
  18.     </td>
  19. </tr>
  20. <!--ここまで-->
  21. <tr>
  22.     <td bgcolor="#f2f1ec" width="160" class="fs12n">一覧-メインコメント</td>
  23.     <td bgcolor="#ffffff" width="557" class="fs12n">
  24.     <!--{$arrForm.main_list_comment|escape|nl2br}-->
  25.     </td>
  26. </tr>

この時点で画面には表示されます。ただし、データベース内にはまだカラムが存在しないので登録はできません。

データベースのdtb_productsテーブルにカラムを追加する

dtb_productsテーブルのstatusカラムの下に、keywords,descriptionカラムを追加する。
両方とも型は、text型にしておく。

実行ファイル変更

今回は直接classファイルを編集しますが、EC-CUBEを継続して使用する際に、アップデートを考えているのであれば、
page_extendsフォルダ内の***_EX.phpを編集することをお勧めします。
※アップデートの際にclassファイルが更新されるとカスタマイズ内容も上書きされてしまうためです。

以下のファイルを編集します。

data/class/pages/admin/products/LC_Page_Admin_Products_Product.php

※EXファイルの場合はこちら。

data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_Product_Ex.php

登録に必要な編集

  • 390行目付近
  1. // 配列の添字を定義
  2. $checkArray = array("name", "status", "keywords", "description", "product_flag",    //keywords,descriptionを追加
  3.                     "main_list_comment", "main_comment", "point_rate",
  4.                     "deliv_fee", "comment1", "comment2", "comment3",
  5.                     "comment4", "comment5", "comment6", "main_list_comment",
  6.                     "sale_limit", "sale_unlimited", "deliv_date_id");
  7. $arrList = SC_Utils_Ex::arrayDefineIndexes($arrList, $checkArray);
  8.  
  9. // INSERTする値を作成する。
  10. $sqlval['name'] = $arrList['name'];
  11. $sqlval['status'] = $arrList['status'];
  12. $sqlval['keywords'] = $arrList['keywords'];        //追加
  13. $sqlval['description'] = $arrList['description'];  //追加

  • 505行目付近
  1. // スポット商品
  2. $arrConvList['name'] = "KVa";
  3. $arrConvList['keywords'] = "KVa";      //追加
  4. $arrConvList['description'] = "KVa";   //追加
  5. $arrConvList['main_list_comment'] = "KVa";
  6. $arrConvList['main_comment'] = "KVa";
  7. $arrConvList['price01'] = "n";
  8. $arrConvList['price02'] = "n";
  9. $arrConvList['stock'] = "n";
  10. $arrConvList['sale_limit'] = "n";
  11. $arrConvList['point_rate'] = "n";
  12. $arrConvList['product_code'] = "KVna";
  13. $arrConvList['comment1'] = "a";
  14. $arrConvList['deliv_fee'] = "n";

  • 550行目付近
  1. $objErr = new SC_CheckError($array);
  2. $objErr->doFunc(array("商品名", "name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
  3. $objErr->doFunc(array("keywords", "keywords", 50), array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));         //追加
  4. $objErr->doFunc(array("description", "description", 50), array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));   //追加
  5. $objErr->doFunc(array("一覧-メインコメント", "main_list_comment", MTEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
  6. $objErr->doFunc(array("詳細-メインコメント", "main_comment", LLTEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
  7. $objErr->doFunc(array("詳細-メインコメント", "main_comment", $this->arrAllowedTag), array("HTML_TAG_CHECK"));
  8. $objErr->doFunc(array("ポイント付与率", "point_rate", PERCENTAGE_LEN), array("EXIST_CHECK", "NUM_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
  9. $objErr->doFunc(array("商品送料", "deliv_fee", PRICE_LEN), array("NUM_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
  10. $objErr->doFunc(array("検索ワード", "comment3", LLTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));
  11. $objErr->doFunc(array("メーカーURL", "comment1", URL_LEN), array("SPTAB_CHECK", "URL_CHECK", "MAX_LENGTH_CHECK"));
  12. $objErr->doFunc(array("発送日目安", "deliv_date_id", INT_LEN), array("NUM_CHECK"))

読み込み時のSQL編集

カラムを追加したため、呼び出す際の処理も追加追加します。

PostgreSQLの場合

ビューのvw_products_allclass_detailに抽出するカラムを追加してください。

MySQLの場合

以下のファイルを編集

data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php

function viewToSubQuery()に、該当のカラム名を足してあげてください。

商品詳細ページにキーワードやディスクリプションを設定する

以下のファイルを編集

data/Smarty/templates/default/site_frame.tpl

  • 20行目付近
  1. <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=<!--{$smarty.const.CHAR_CODE}-->" />
  4. <meta http-equiv="Content-Script-Type" content="text/javascript" />
  5. <meta http-equiv="Content-Style-Type" content="text/css" />
  6. <link rel="stylesheet" href="<!--{$smarty.const.URL_DIR}--><!--{$smarty.const.USER_DIR}-->css/common.css" type="text/css" media="all" />
  7. <link rel="alternate" type="application/rss+xml" title="RSS" href="<!--{$smarty.const.SITE_URL}-->rss/index.php" />
  8. <script type="text/javascript" src="<!--{$TPL_DIR}-->js/css.js"></script>
  9. <script type="text/javascript" src="<!--{$TPL_DIR}-->js/navi.js"></script>
  10. <script type="text/javascript" src="<!--{$TPL_DIR}-->js/win_op.js"></script>
  11. <script type="text/javascript" src="<!--{$TPL_DIR}-->js/site.js"></script>
  12. <title><!--{$arrSiteInfo.shop_name|escape}-->/<!--{$tpl_title|escape}--></title>
  13. <meta name="author" content="<!--{$arrPageLayout.author|escape}-->" />
  14. <!--以下を既存のものと置き換え-->
  15. <meta name="description" content="<!--{if $arrProduct.description}--><!--{$arrProduct.description|escape}--> <!--{/if}--><!--{$arrPageLayout.description|escape}-->" />
  16. <meta name="keywords" content="<!--{if $arrProduct.keywords}--><!--{$arrProduct.keywords|escape}--><!--{/if}--><!--{$arrPageLayout.keyword|escape}-->" />
  17. <!--ここまで-->

以上で、個別に検索キーワード設定できる。

スクリーンショット