XOOPSTips集 - 最新エントリー
以前にも書いたが、pm送信などのポップアップ画面のコントロール(その3)である。
通常xoopsのポップアップ画面ではbodyにはidやclassなどのセレクタは用いられない。したがって、style.cssなどで記述されるbodyのプロパティが適用される。
ここで問題が発生する。
通常xoopsのポップアップ画面ではbodyにはidやclassなどのセレクタは用いられない。したがって、style.cssなどで記述されるbodyのプロパティが適用される。
ここで問題が発生する。
ホダ塾で勉強を兼ねてinquiryspのオールcss化に挑戦してみた。
最近、cssによるレイアウトテーマの配布がぼちぼち見られるようになった。いくつかソースを見て感じたことを書いてみる。
特定のブロックについて、IDを付すことができれば、背景色・画を変えたり、特定のときに非表示にするなどスタイルを自由に変えることができる。
ただ、idにはタイトル名をそのまま使えればいいけど、日本語ではいかにも問題がありそうだ。
そこで、ブロックにユニークなIDを付ける方法を考えてみた。
cssでword-wrapをコントロールすることしか頭になかったので、Smartyの修正子でそれが可能なのを知ったときは、ミニ「目から鱗」。
cssのword-wrap属性はブラウザによって対応しないものがあるので、Smartyが使えるXOOPSならではの威力を発揮しそうだ。
暇に任せてSmartyのマニュアルをじっくり読んでみると、いろいろな機能があってなかなか飽きないものがある。
ということで、懸案だったサブメニューがカレント(active)かどうかの識別をSmartyを使って実現できたので紹介する。
modules/system/blocks/system_block_mainmenu.htmlに以下の色文字部分を追加する。
<{if $smarty.server.HTTPS}>
<{assign var=ex_http_host value="https://"}>
<{else}>
<{assign var=ex_http_host value="http://"}>
<{/if}>
<table cellspacing="0">
<tr>
<td id="mainmenu">
<a class="menuTop<{if !$xoops_dirname}> active<{/if}>" href="<{$xoops_url}>/"><{$block.lang_home}></a>
<!-- start module menu loop -->
<{foreach item=module from=$block.modules}>
<a class="menuMain<{if $module.directory == $xoops_dirname}> active<{/if}>" href="<{$xoops_url}>/modules/<{$module.directory}>/"><{$module.name}></a>
<{foreach item=sublink from=$module.sublinks}>
<a class="menuSub<{if $sublink.url == $ex_http_host|cat:$smarty.server.HTTP_HOST|cat:$xoops_requesturi}> active<{/if}>" href="<{$sublink.url}>"><{$sublink.name}></a>
<{/foreach}>
<{/foreach}>
<!-- end module menu loop -->
</td>
</tr>
</table>
あとはcssに手を入れればOK。
サーバー変数を想定通りに渡してくれないなど、環境によってはうまく行かないかもしれない。その場合は適当にアレンジしてね。
注)青字はメインメニュ、赤字はサブメニュ
2.0.10JPからカレントのモジュール名、ディレクトリ名が渡されるようになった。
これは、従来テーマ、テンプレートからphpを介して取得する手間をなくしただけでなく、テーマ、テンプレートの作成面で幅広い手段を提供したという点で大きな意味をもつ。
たとえば、トップページとそれ以外でスタイルを変えるということも簡単にできる。例として、
- 文字の修飾
- ヘッダ画像の使い分け
- 背景色の使い分け
- コンテンツ内tableサイズの使い分け
- など。。。
FFでdefaultテーマのメニュー欄をよく見ると、2,3行置きに上下のボーダーが崩れてるのが分かるよね。
これはFFのボーダーバグのようで、各行はborder-topで作成した方がいいとか聞くけど、いい対策がないみたい。
そこで、見た目のボーダーバグを隠す小賢しい技(笑)を紹介。
各行にセットされたボーダー、背景色の代わりに:
1.td#maimenu全体にボーダーをセット
2.td#mainmenuに背景色をセット
なんとか誤魔化せた。
ulボックスも同じ対策でいける。
td#usermenuも同様にして誤魔化せばよい。
XOOPSをやる者は必ずお世話になるサイト、GIJOEさん。
問題はアップデートの頻度なんだよね。
しばらく目を離していると、いくつかのモジュールがもう最新ではないということで、特に新機能が付加されてても気がつかないと日本公式の話題にもついていけない(笑)
最近ではsitemapモジュールでGoogleSitemap対応なんてのがいい例だ。
ところが今日訪問して、とうとうレポジトリを公開されたニュースを発見。
cvsでなくsvnなので、またゼロから勉強。何とかeclipse2.1にplugin追加で同期が簡単にとれるようになった。
5月のカンファレンスでお願いした2件が早々と実現できたのは大満足。
小さすぎない?
さっそく手を入れちゃう。
pmlite.phpでtextareaサイズの変更:
120行目、70文字X15行にするには、
xoopsCodeTarea("message",70,15);
readpmsg.phpで画面サイズの変更:
85行目のサイズ指定部分を、たとえば600x600pixelにするならpmlite\",600,600);'
に。
userinfo.phpの144行目でも画面サイズを変更しておこうね。
あとはいくつかのブラウザで確認しながらサイズ調整。
ふん、簡単なことだけど、案外忘れちゃうんだな。相手の立場に立たなきゃね。