テンプレートで smarty 変数を使用するには?


投稿ツリー


前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2010/8/22 17:59 | 最終変更
OhYeah  半人前   投稿数: 24

ユーザ登録の件では、お手数をかけて申し訳ありませんでした。

d3diary のテンプレートを修正するのに、とりあえず管理人の表示だけ変更しようと思って下記のように書いても $xoops_isadmin が設定されていないため、もともとのテンプレートでしか表示されません。$xoops_isadmin を有効にするには、どうしたらよいのでしょうか?

1
2
3
4
5
<{if $xoops_isadmin}>
    管理人用テンプレート
<{else}>
    もともとのテンプレート
<{/if}>

P.S.
横スクロールバーが出る状態じゃないと、コードの行番号がうまく出ないのかな?

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/8/23 13:05 | 最終変更
なーお  長老   投稿数: 1785

OhYeahさん、こんにちは。

$xoops_isadminは、本来は、xoopsコア側がセットすべき値と思います。 モジュール側で確実に使用したい場合のみ、モジュールでアサインしている場合もありますが。

また、ブロックではこの変数を利用できないこともあるようですので、念のため。

ちなみに、d3diaryでもモジュールがメインページに表示されている状態でしたら、$xoops_isadminで振り分けが可能でした。その他のsmarty変数も同様のはずです。(但し、私の使用環境の場合の話です。)

d3diaryでは、管理者権限かどうかの判定が必要な場面はほとんどなく、編集権限を有するかどうかで表示を切り替えており、これをモジュール側から$yd_editperm変数でアサインしています。(但し使用先は限定しています。)

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010/8/23 22:28
OhYeah  半人前   投稿数: 24

う?ん、やっぱりモジュール側でアサインしないとダメなんですね…。preload.php あたりに書いておいてやれば、どこでも使えるのかな?

テンプレートを編集する場合、間違っていると表示そのものができなくなる可能性があるので、管理人だけ新テンプレートで、他のユーザは従来のテンプレートでという使い分けができると、とても便利なんです。
ブロックのテンプレートなら、複製したブロックにカスタムテンプレートを割り当てて、管理人だけ見えるようにしておくという手が使えます。が、ブロックじゃないテンプレートを編集したい場合は、それもできません。少なくとも、$xoops_isadmin だけはどこでも使えるとありがたいですね。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010/8/24 2:34
OhYeah  半人前   投稿数: 24
引用:
ブロックのテンプレートなら、複製したブロックにカスタムテンプレートを割り当てて、管理人だけ見えるようにしておくという手が使えます。が、ブロックじゃないテンプレートを編集したい場合は、それもできません。少なくとも、$xoops_isadmin だけはどこでも使えるとありがたいですね。

 アホでした(^^;。ブロックのテンプレート以外なら、そのモジュールのページで使うテンプレートなので、$xoops_isadmin はいつでも使えるってことですよね。ブロックのテンプレートでも、そのモジュールにブロックを表示しているときは $xoops_isadmin が使えるので、そこで完成させてからトップページなりに表示するようにすれば良いと…。
 まだ、XCL をインストールしてから2週間そこそこなので、いろいろと訳の分からんことを言うと思いますが、これに懲りずによろしくご指導をお願いします。

投票数:0 平均点:0.00
返信する

このトピックに投稿する

題名
ゲスト名
投稿本文
  条件検索へ