サイドボックスのカテゴリーを開きっぱなしにしたい。  【解決済み】

困った時はこちらで質問してください。回答を担当する人は特に決まっていませんので、分かる方は回答をお願いします。
アバター
moitaro
記事: 85
登録日時: 2015/10/27 11:10

サイドボックスのカテゴリーを開きっぱなしにしたい。

投稿記事by moitaro » 2016/2/24 11:01

度々お世話になっております。

Zencart1.5でのcategories_allは
kinoさんは公開していらっしゃらないようなので
作成方法を伺いたいので表記させて頂きます。

\sideboxes\tpl_categories.php
のデフォルトのままでは
ココに来た時点で
$box_categories_arrayで表示するメニュー数が決まっているので
こちらだけではないと理解出来るのですが
$box_categories_arrayをドコで設定しているのかとGrepしてみると
sideboxes\categories.php
だったのですが
枝分かれしているかどうかは
includes\classes\category_tree.php
--------
if (zen_has_category_subcategories($counter)) {
$this->box_categories_array[$ii]['has_sub_cat'] = true;
} else {
$this->box_categories_array[$ii]['has_sub_cat'] = false;
}
--------
だと思って
--------
if (zen_has_category_subcategories($counter)) {
$this->box_categories_array[$ii]['has_sub_cat'] = true;
} else {
// $this->box_categories_array[$ii]['has_sub_cat'] = false;
$this->box_categories_array[$ii]['has_sub_cat'] = true;
}
--------
と変更したのですが駄目でした……

甘すぎると言われるのを承知で伺います。

どのようにしたら
サイドボックスのカテゴリーをを開きっぱなしに出来るのでしょうか?。
アバター
yama
記事: 296
登録日時: 2005/9/18 01:32
お住まい: 福岡県福岡市早良区
連絡を取る:

サイドボックスのカテゴリーを開きっぱなしにしたい。

投稿記事by yama » 2016/2/24 15:42

ファイルはincludes/classes/category_tree.phpで合ってると思います。
たぶん$db->Execute()でカテゴリー情報を取得する時点ですでにフィルタリングされちゃってる気がします。
アバター
moitaro
記事: 85
登録日時: 2015/10/27 11:10

サイドボックスのカテゴリーを開きっぱなしにしたい。

投稿記事by moitaro » 2016/2/25 17:59

yama様コメントありがとうございます。

ZenCartの開発者に
どうして全てカテゴリー開きっぱなしのフラグを作成しなかったのか
小一時間問い詰めたいです……

ZenCart1.5で全てカテゴリーを開いて表示する場合の実装は
皆様はどのようにしているのでしょうか?(T_T)
includes/classes/category_tree.php
を弄るより
\sideboxes\tpl_categories.phpで新規に
‘categories‘と'categories_description'に接続して
categoriesのparent_idの低いものから
それを親にもつ'categories_status'が0では無いもののみ表示
と実装しようかと思います……

実際の表示
--------
`categories_description`のcategories_idが低いの(例えば1)
  `categories`のparent_idが1のものを表示して そのcategories_idの値の`categories_description`のcategories_name を表示
  `categories`のparent_idが1のものを次のもの表示して そのcategories_idの値の`categories_description`のcategories_name を表示



`categories_description`のcategories_idが次に低いの(例えば2)
  `categories`のparent_idが2のものを表示して そのcategories_idの値の`categories_description`のcategories_name を表示
  `categories`のparent_idが2のものを次のもの表示して そのcategories_idの値の`categories_description`のcategories_name を表示
--------
とやろうとしておりましたが
ZenCartでは一々接続せずに
値がどこかに上記テーブルの値が入っていると以前kimono様にお伺いした気がしているのですが
上記のやり方で良いのでしょうか?
アバター
yama
記事: 296
登録日時: 2005/9/18 01:32
お住まい: 福岡県福岡市早良区
連絡を取る:

サイドボックスのカテゴリーを開きっぱなしにしたい。

投稿記事by yama » 2016/2/26 17:11

moitaro さんが書きました:Source of the post ZenCartでは一々接続せずに
値がどこかに上記テーブルの値が入っていると以前kimono様にお伺いした気がしているのですが
上記のやり方で良いのでしょうか?

それが$box_categories_arrayじゃないかな?と思います。結局、必要なカテゴリー情報としては足りてないので、自前で組み立てる必要がありますね。
要は、categoriesテーブルとcategories_descriptionテーブルから得られる情報を加工して配列を組み立てるだけなので、基本的な考え方としては難しくないと思います。表示しているページが所属しているカテゴリーの情報は$cPath・$cPath_arrayで参照できます。
category_tree.phpの処理が分かりにくいので、整理したものを添付しておきます。これを参考に処理を組み立てて、tpl_categories.phpなどに移植するのもよいのではと思います。
添付ファイル
category_tree.zip
(1.82 KiB) ダウンロード数: 196 回
アバター
moitaro
記事: 85
登録日時: 2015/10/27 11:10

サイドボックスのカテゴリーを開きっぱなしにしたい。

投稿記事by moitaro » 2016/3/02 16:31

yama様
お世話になっております。
moitaroです。

サンプルありがとうございます。

参考にして全てのcategoryの値を返す関数を
zen_category_treeを参考にして作成しようとしております……

ですが
--------
function zen_category_tree_all(){
global $db, $cPath, $cPath_array;
$params = array(TABLE_CATEGORIES, TABLE_CATEGORIES_DESCRIPTION, (int)$_SESSION['languages_id']);
$query = vsprintf("SELECT c.categories_id, cd.categories_name, c.parent_id, c.categories_image
FROM %s c INNER JOIN %s cd ON c.categories_id=cd.categories_id
WHERE c.parent_id=0
AND cd.language_id='%s'
AND c.categories_status=1
ORDER BY sort_order, cd.categories_name", $params);
$categories = $db->Execute($query, '', true, 150);

--------
で同じsql文を送っても同じ値しか返って来ないので自分でやろうと四苦八苦しておりましたが
ギブアップします……

全てのカテゴリーを返すには
$query = vsprintf("SELECT c.categories_id, cd.categories_name, c.parent_id, c.categories_image
FROM %s c INNER JOIN %s cd ON c.categories_id=cd.categories_id
WHERE c.parent_id=0
AND cd.language_id='%s'
AND c.categories_status=1
ORDER BY sort_order, cd.categories_name", $params);
をどうすれば良いのでしょうか?
私は上記SQL文は全て返すように見受けられるのです……

ご助力頂けますようよろしくお願い申し上げます。
アバター
moitaro
記事: 85
登録日時: 2015/10/27 11:10

サイドボックスのカテゴリーを開きっぱなしにしたい。

投稿記事by moitaro » 2016/3/04 10:39

自己解決しました。

結局サイドに来た時点で
$cPath; が決まっているので
$getcpath = $cPath; とバッファに格納して
 $cPath=色々
として
最後に
$cPath = $getcpath;
として元に戻す方法で出来ました。

トピ汚し失礼しました。

以上 ご連絡いたします。
アバター
moitaro
記事: 85
登録日時: 2015/10/27 11:10

サイドボックスのカテゴリーを開きっぱなしにしたい。  【解決済み】

投稿記事by moitaro » 2016/5/30 13:10

お世話になっております。

下記の方法でやった方がスマートに出来ました。

viewtopic.php?f=11&t=6251
--------
・管理画面にログインする。
・追加設定・ツールのバナーの管理に入る。
・新しいバナーを作成する。
・適当に名前などを付けてバナー グループは、既存のSideBox-Bannersを使うか、新しく半角英数でつけて、HTML テキストの部分にhtmlでメニューを作って保存する。
・一般設定のレイアウトの設定にてバナー表示グループ - サイドボックス内バナーボックスにもし新しく上記で半角英数で名前をつけた場合は、その名前に変更する。バナー表示グループ - サイドボックス内バナーボックス2でも利用していない方でいい。
・追加設定・ツールのサイドボックスの表示設定にて、上記で指定したbanner_box.phpか、banner_box2.phpを表示し、好きな場所に配置する。
--------

トピ汚し大変失礼しました。

以上 ご連絡いたします。
アバター
kimono
記事: 1995
登録日時: 2005/9/27 13:30
お住まい: 大阪府大阪市天王寺区上本町
連絡を取る:

サイドボックスのカテゴリーを開きっぱなしにしたい。

投稿記事by kimono » 2016/6/06 20:46

これは一番簡単にできる方法ですね。
自動で連動しないため、リンク忘れや、リンク切れに注意すればいいかと思います。
アバター
moitaro
記事: 85
登録日時: 2015/10/27 11:10

サイドボックスのカテゴリーを開きっぱなしにしたい。

投稿記事by moitaro » 2016/6/17 17:30

Kimono様
コメントありがとうございます。

本当に度々失礼します。

現在テストで動作したものを本番に移行させようとして失敗しました。
サイドボックスの中身をバックアップ取っていなくてサイドボックスの中身が消えてしまいました。

しょうがないので
新規にバナーを下記のように作成したつもりなのですが表示されません。
--------
追加設定ツール>バナーの管理

【何もない】ので
「新しいバナー」をクリックし

バナータイトル あああ
HTMLテキスト  ああああ
バナー グループ: あああああ

として挿入

admin/banner_manager.php?page=1&bID=1

先程作成した
”あああああ”のステータスを「緑」なのを確認しても
バナーが表示されません。

sideboxes/banner_box2.php
sideboxes/banner_box.php
共に表示サイドステータスはONでシングルボックスステータスはOFF

としております……

バナーを表示される手順上記では不味いのでしょうか?

お忙しい中申し訳ないのですが
上記お問い合わせ致します。
アバター
moitaro
記事: 85
登録日時: 2015/10/27 11:10

サイドボックスのカテゴリーを開きっぱなしにしたい。

投稿記事by moitaro » 2016/6/20 13:24

メモを書いて申し訳ございません。

バナーを全て削除していたからおかしくなったようなので
新規にインストールでバナーを復活させて
もういちどやったら出来ました。

バナーを全て削除した自分のミスでトピ汚し失礼しました。
アバター
kimono
記事: 1995
登録日時: 2005/9/27 13:30
お住まい: 大阪府大阪市天王寺区上本町
連絡を取る:

サイドボックスのカテゴリーを開きっぱなしにしたい。

投稿記事by kimono » 2016/7/08 18:17

こんにちわ。kimonoです :)

バナーグループをあああああで作成した場合、一般設定のレイアウトの設定のバナー表示グループ - サイドボックス内バナーボックスなどで、その追加したバナーグループを表示できるように設定しないといけないですね。
元からあったのはここが登録されていたため表示されているということとなります。

“Zen Cart 質問コーナー” へ戻る