非表示のカテゴリーをつくる Zen Cart [hideCategories]

カテゴリーリストから見えないカテゴリーをつくるモジュール。

例えば、メール会員用の商品カテゴリーを作って、普通にアクセスした場合はカテゴリーリストに表示されず、メールマガジンなどに記載された「商品ページへの直リンク」でアクセスさせるなどができます。

あまり、一般的には使われないモジュールかもしれませんね。

今回、受注しているサイトがこんな機能が必要だったので、日本語ファイルを作ってみました。

hideCategories (本家ZenCart.com)

モジュール概要

  • カテゴリー編集画面にラジオボタン追加(管理画面)
    カテゴリー編集画面の下に「標準」「メインメニューから非表示」「非表示(おすすめ、新商品リストからも非表示(直リンクのみ有効))」の3つのラジオボタンが追加されます。

Ci081030210718

  カテゴリーBOX おすすめ、新商品 直リンク
標準
メインメニューから非表示 ×
非表示
(おすすめ、新商品リストからも非表示(直リンクのみ有効))
× ×

なお、検索結果には表示されます。

今回使用したのは、「医薬品の個人輸入代行」のECサイトです。

薬事法の関連上、サイト上に「医薬品の広告」が禁止されているので、「医薬品名で検索」または、「問い合わせがあった」場合のみ商品を提供することが許可されるとの事でした。

[dm]2[/dm]

まったく一からカスタマイズを行わないといけないかなーと思ってたら、海外では既に実用化されていたり、もっともっと勉強しないといけないですね。

2009-3-12 追記::

このモジュールでは、サイトマップのリストに非表示のカテゴリーが表示されてしまうバグがあります。

includes/classes/site_map.php ファイルの下記部分を修正して下さい。
function zen_SiteMapTree 内のコードを下記の様に書き換えます。

 

function zen_SiteMapTree($load_from_database = true) {
global $languages_id, $db;
$this->data = array();
$categories_query = "select c.categories_id, cd.categories_name, c.parent_id
from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd
where c.categories_id = cd.categories_id
and cd.language_id = '" . (int)$_SESSION['languages_id'] . "'
and c.categories_status != '0'
order by c.parent_id, c.sort_order, cd.categories_name";
$categories = $db->Execute($categories_query);
while (!$categories->EOF) {

// Begin hideCategories code
$hide_status = $db->Execute("select visibility_status
FROM " . TABLE_HIDE_CATEGORIES . "
WHERE categories_id = " . $categories->fields['categories_id'] . "
LIMIT 1");
if ($hide_status->fields['visibility_status'] < 1) {
// End hideCategories code
$this->data[$categories->fields['parent_id']][$categories->fields['categories_id']] = array('name' => $categories->fields['categories_name'], 'count' => 0);
// Begin hideCategories code
}
// End hideCategories code
$categories->MoveNext();
}
}


コメントを残す

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