LOGIN ID Password Auto Login Register Now! Lost Password?
Xoops Q&A

picoのサブカテゴリをそのサブカテゴリにぶら下がるカテゴリorコンテンツを見ているときだけ表示する

  • ログインせずに、この質問カテゴリに投稿できません
  • Xoops Q&A ではゲスト投稿が禁止されています。登録はこちらからどうぞ
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-2-6 15:30
MAMEMARU  2nd Class 登録日: 2009-1-30   投稿数: 18
とても分かりにくいタイトルなのですが、実現したいことはこのような感じです。

【パターンA】
TOP
+--MainCat 1(*現在の位置)
     +--SubCat 1-1
     +--SubCat 1-2
     +--SubCat 1-3
+--MainCat 2
+--MainCat 3


【パターンB】
TOP
+--MainCat 1
     +--SubCat 1-1(*現在の位置)
          +--SubsubCat 1-1-1
          +--SubsubCat 1-1-2
          +--SubsubCat 1-1-3
     +--SubCat 1-2
     +--SubCat 1-3
+--MainCat 2
+--MainCat 3

【パターンC】
TOP
+--MainCat 1
     +--SubCat 1-1
          +--SubsubCat 1-1-1(*現在の位置)
                +--SubsubsubCat 1-1-1-1
                +--SubsubsubCat 1-1-1-2
          +--SubsubCat 1-1-2
          +--SubsubCat 1-1-3
     +--SubCat 1-2
     +--SubCat 1-3
+--MainCat 2
+--MainCat 3

上記のように、カテゴリが4階層まで存在し、あるカテゴリ内のコンテンツを見ているときに、同じ階層のカテゴリと親カテゴリの階層のみ一覧表示させ、なおかつ現在のカテゴリの直下カテゴリも一覧表示させたいと思っています。

そもそも深すぎる階層に問題があるのですが、このような複雑な設定をすることはできるのでしょうか。
pico_subcattreeプラグインを使えばできるのかもしれないと思ったのですが、subsubcategoryまでしか取得できない?ようなので、なかなか難しい状況になってしまい、質問させていただきました。

何か良い解決方法がありましたら教えていただきたいです。よろしくお願いいたします。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-2-6 21:41 | 最終変更
MAMEMARU  2nd Class 登録日: 2009-1-30   投稿数: 18
自己レスです。
色々試行錯誤をした結果、以下のようなコードで実現いたしました。

picoのmain_viewcontent.htmlに追加したコード
//親カテゴリを取得
<{foreach from=$category.paths_raw key=key item=item name=parent}>
	<{if $smarty.foreach.parent.iteration == 1}>
		<{assign var=depth_1 value=$key}>
	<{elseif $smarty.foreach.parent.iteration == 2}>
		<{assign var=depth_2 value=$key}>
	<{/if}>
<{/foreach}>

//現在の階層に応じて表示させるサブカテゴリを制御
<{xugj_block file="modules/xxx/blocks/blocks.php" func="b_pico_subcategories_show" opt="xxx,0" item="block"}>
<ul style="margin-left:2em;">
<{foreach item=category from=$block.categories}>
	<li>
		<a href="<{$block.mod_url}>/<{$category.link}>">
			<{$category.title}>
		</a>
	</li>
	
	<{if $depth_1 == $category.id}>
	<{xugj_block file="modules/xxx/blocks/blocks.php" func="b_pico_subcategories_show" opt="xxx,$depth_1" item="block"}>
	<ul style="margin-left:2em;">
	<{foreach item=category from=$block.categories}>
		<li>
			<a href="<{$block.mod_url}>/<{$category.link}>">
				<{$category.title}>
			</a>
		</li>
		
		<{if $depth_2 == $category.id}>
		<{xugj_block file="modules/xxx/blocks/blocks.php" func="b_pico_subcategories_show" opt="xxx,$depth_2" item="block"}>
		<ul style="margin-left:2em;">
		<{foreach item=category from=$block.categories}>
			<li>
				<a href="<{$block.mod_url}>/<{$category.link}>">
					<{$category.title}>
				</a>
			</li>
		<{/foreach}>
		</ul>
		<{/if}>
	
	<{/foreach}>
	</ul>
	<{/if}>

<{/foreach}>
</ul>

しかし、これだと仮想パスでリンクURLが表示されず、
category0001.htmlとなってしまいます。
仮想パスで表示される良い方法がありましたら教えていただきたいです。
よろしくお願いいたします。

《追記》
利用しているpicoは1.77で、HD1.0.2で運用しています。
他のサイトでインストールしたpico(ただし1.74)では、サブカテゴリ一覧でも正常に仮想パスでのリンクが表示されました。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2009-2-9 5:23
GIJOE  Admiral 登録日: 2006-3-20   投稿数: 3708
MAMEMARUさん、こんにちは。

おそらく原因は
http://www.xugj.org/modules/QandA/index.php?topic_id=1222
と同じなので、そっちにレスつけて、こっちは「解決」扱いにしておきます。
投票数:0 平均点:0.00

  条件検索へ


Back to Page Top
MainMenu
Manuals
Search
XOOPS Official & Dev.
XOOPS Communities