ホーム > フォーラム > 開発 > デザイン開発 > コンテンツの上にも下にも中央ブロックを・・・

コンテンツの上にも下にも中央ブロックを・・・
投稿者: cinnamons | 投稿日時: 2006/12/22 14:16 | 閲覧: 19126回
cinnamons
 既出だったらすいません(一応検索してみましたけど・・・)。
 中央ブロックの表示方法で、たとえば、トップページで[中央の中央]-[中央左、中央右]-[中央の中央]といったような表示ができないかということが発端でテンプレート変数の$block.weightが実装されたと記憶してますが、中央ブロックを一塊で表示するようにデザインされているテーマが多いので、中央ブロックに関してはコンテンツの上か下かのどちらかの選択になっているかと思います(つまり、テーマ次第)。
 モジュールの表示でコンテンツの上にも下にも任意に中央ブロックの表示を割り当てるというのはどこでもトラックバック以外では見かけません(私の視野が狭いだけかも???)。
 ですが、モジュールで中央ブロックを上に表示できる状態でコンテンツの下にも表示したいという需要はあるなぁと思っていたのです。つまり、モジュール別に中央ブロックを上に表示したりとか、下に表示したりとか・・・。ざっくりいうと、[中央の中央]-[コンテンツの内容]-[中央の中央]というレイアウトです。
 で、ふと、とある質問の回答を書いている途中で「なんだぁ、簡単にできるじゃん」って思いついてしまいました。
 つまり、$block.weightの参照だけでできる。実装方法を簡単に書くとこんな感じ。


<{if $xoops_showcblock == 1}>
    <{foreach item=block from=$xoops_ccblocks}>
        <{if $block.weight < 10 }>
            // 中央中央ブロックの表示順で10未満の表示処理
        <{/if}>
    <{/foreach}>

    <{foreach item=block from=$xoops_clblocks}>
        //中央左ブロックの表示処理
    <{/foreach}>

  <{foreach item=block from=$xoops_crblocks}>
        //中央右ブロックの表示処理
  <{/foreach}>
<{/if}>

//モジュールの表示処理
<{if $xoops_contents == "" }>
<{else}>
	<{$xoops_contents}>
<{/if}>

<{if $xoops_showcblock == 1}>
    <{foreach item=block from=$xoops_ccblocks}>
        <{if $block.weight >= 10 }>
            // 中央中央ブロックの表示順で10以上の表示処理
        <{/if}>
    <{/foreach}>
<{/if}>


$block.weightって便利ですね(笑

(foreach書くの忘れてたので追記しておきました(17:42)。それと、長くなるので中央中央のことしか書いてませんが、中央左、中央右も同様に書けば対応できますよ。)

コメント(7)

Re: コンテンツの上にも下にも中央ブロックを・・・ 
投稿者: cinnamons | 投稿日時: 2006/12/22 17:59
cinnamons
よ〜く検索してみたら、GIJOEさんの案がありました。凄過ぎ・・・。
でも、私はテンプレートにはPHPのコードは入れたくないので、そういう方のためということでご勘弁を・・・。
Re: コンテンツの上にも下にも中央ブロックを・・・ 
投稿者: Marijuana | 投稿日時: 2006/12/23 0:29
Marijuana
引用:
中央左、中央右も同様に書けば対応できますよ。

これ使うとさらに楽と言ってみるテスト
#リンク切れたらご愛嬌ってことで
Re: コンテンツの上にも下にも中央ブロックを・・・ 
投稿者: himek | 投稿日時: 2007/1/6 17:30
himek
cinnamonsさん、教えてください。

私もやりたいのですが、どこをどう修正すればいいのか具体的に教えてください。
theme.htmlですよね?

素人につき、具体的にどの部分に何を追加、挿入、変更するのか教えて頂けると助かります。
Re: コンテンツの上にも下にも中央ブロックを・・・ 
投稿者: cinnamons | 投稿日時: 2007/1/6 18:23
cinnamons
himekさん、すいませんがこれ以上の話はテーマに依存することですので、これ以上詳しいことは書けません。
簡単に言うと、theme.htmlの中にセンターブロックに関するIF文があるはずですから、そこが変更箇所になります。以下のような記述です。


<{if $xoops_showcblock == 1}>
//ここの間が中央ブロックとコンテンツの表示部分
//つまり変更箇所
<{if $xoops_showrblock == 1}>


ポイントは$xoops_contentsの記述の上と下に$block.weightで判定してセンターブロックの表示処理を行うように記述すればよいだけのことです。あとは前の書き込みのコードをよーく見てください。
Re: コンテンツの上にも下にも中央ブロックを・・・ 
投稿者: himek | 投稿日時: 2007/1/6 23:00
himek
なるほど!(なんて・・・)

前置きしましたとおり「素人」なので、わかりません。。。諦めます。

詳しく書けない理由の意味すらわからなド素人でした^^;
スレッド中にあったGIJOEさんの案でやったところ、うまくいかなかったので、こちらの手法のほうが簡単かなと思って聞いてみました。

お手数おかけしました。
ありがとうございます。
Re: コンテンツの上にも下にも中央ブロックを・・・ 
投稿者: cinnamons | 投稿日時: 2007/1/7 1:07
cinnamons
もうちょっと整理してみましょう。一般的なテーマだと

//中央ブロックの表示処理
<{if $xoops_showcblock == 1}>
    <{foreach item=block from=$xoops_ccblocks}>
    <{/foreach}>

    <{foreach item=block from=$xoops_clblocks}>
        //中央左ブロックの表示処理
    <{/foreach}>

  <{foreach item=block from=$xoops_crblocks}>
        //中央右ブロックの表示処理
  <{/foreach}>
<{/if}>

//モジュールの表示処理
<{if $xoops_contents == "" }>
<{else}>
	<{$xoops_contents}>
<{/if}>

//右ブロックの表示処理
<{if $xoops_showrblock == 1}>


となっっていると思いますが、それを


<{if $xoops_showcblock == 1}>
    <{foreach item=block from=$xoops_ccblocks}>
        <{if $block.weight < 10 }>	//追加
            // 中央中央ブロックの表示順で10未満の表示処理
        <{/if}>				//追加
    <{/foreach}>

    <{foreach item=block from=$xoops_clblocks}>
        //中央左ブロックの表示処理
    <{/foreach}>

  <{foreach item=block from=$xoops_crblocks}>
        //中央右ブロックの表示処理
  <{/foreach}>
<{/if}>

//モジュールの表示処理
<{if $xoops_contents == "" }>
<{else}>
	<{$xoops_contents}>
<{/if}>

//この部分を追加
<{if $xoops_showcblock == 1}>
    <{foreach item=block from=$xoops_ccblocks}>
        <{if $block.weight >= 10 }>
            // 中央中央ブロックの表示順で10以上の表示処理
        <{/if}>
    <{/foreach}>
<{/if}>
//ここまで

//右ブロックの表示処理
<{if $xoops_showrblock == 1}>


というようにするということです。
こうすると、中央中央ブロックで表示順を10以上に設定しているブロックはコンテンツの下に表示されるわけです。
Smartyがわからないとちょっと難しいかもね。
Re: コンテンツの上にも下にも中央ブロックを・・・ 
投稿者: himek | 投稿日時: 2007/1/8 12:51
himek
ありがとうございました。

テーマの設定が微妙に違い、そのままではうまくいかなかったのですが、仕組みがだいぶ理解できたいので、試行錯誤の末、なんとかできました。

ありがとうございました!

    投票(0)

    新しいものから | 古いものから | RSS feed
     
    To Top