hodakaの居場所Xoops実験室

  • カテゴリ モジュール の最新配信
  • RSS
  • RDF
  • ATOM

XOOPSTips集 - モジュールカテゴリのエントリ

tinyDでトップページなのにprevボタン?

カテゴリ : 
モジュール
執筆 : 
hodaka 2005/2/7 16:54
tinyDというのは大変良くできていて、通常homepage指定と表示順を正しく設定していれば標題のようなケースは起こらない。どういうわけかお悩みの方もおられるので、罠をかけて一つずつ調べていったらどうだろうか。 第一ステップ:sql文をちょっと変更。
// Page Navigation
if( ! empty( $xoopsModuleConfig['tc_display_pagenav'] ) ) {
  $whr_sub = $xoopsModuleConfig['tc_display_pagenav'] == 2 ? "submenu=1" : "1" ;
  $result = $xoopsDB->query("SELECT storyid,title,link FROM ".$xoopsDB->prefix( \
  "tinycontent{$mydirnumber}" )." WHERE $whr_sub AND visible ORDER BY \
  homepage DESC,blockid" ) ;
これでうまくいかない場合は、第二ステップ:$prev_arrayの中身がなぜ壊れるのか?を確認するため。
// Page Navigation
if( ! empty( $xoopsModuleConfig['tc_display_pagenav'] ) ) {
  $whr_sub = $xoopsModuleConfig['tc_display_pagenav'] == 2 ? "submenu=1" : "1" ;
  $result = $xoopsDB->query("SELECT storyid,title,link FROM ".$xoopsDB->prefix( \
  "tinycontent{$mydirnumber}" )." WHERE $whr_sub AND visible ORDER BY   homepage DESC,blockid" ) ;
  $prev_array = $next_array = array();
  while( $tmp_array = $xoopsDB->fetchArray( $result ) ) {
    if( $tmp_array['storyid'] == $id ) {
      $next_array = $xoopsDB->fetchArray( $result ) ;
      break ;
    }
    $prev_array = $tmp_array ;
  }
}
var_dump($prev_array);
var_dump($next_array);
redirect_header("index.php",30,"check variables");
if( ! empty( $prev_array ) ) {
通常$prev_arrayが空だけど、その場合は別の罠をかけなければいけない。 もしここにprevページの表示が表示されていたらそれがヒント。

MultiMenuテンプレート変更

カテゴリ : 
モジュール
執筆 : 
hodaka 2005/2/3 11:44
05.02.24追) ver.1.14からモジュールにデフォルト組み込みになったのでこの項はdepricatedです。 マルチメニューがどんどん進化している。これを元にすればパン屑モジュールも簡単に作れるかもしれないな。 それはおいといて。今回は、multiMenuで作られた各ブロックの先頭行のclassを変更する話。system/blocks/system_blocks.phpが吐き出すメニューブロックを受けて、テンプレートは先頭行(デフォルトではホーム)のclassはmenuTop、その他はmenuMainとなっている。したがって、デフォルトをベースとしたテーマに付随するcssファイルにも両方が記述されるのが普通。 これに対しmultiMenuは全部menuMainなんだ。 だからcssでborder-topまたはborder-bottomなどを使う場合、区別できない問題が発生する。 そこで先頭行のみclassをmenuTopとする場合のテンプレートハック。
<{foreach item=imenu from=$block.contents}>
<{foreach name=menuloop item=imenu from=$block.contents}>
  <{if $imenu.link != ""}>
    <a class="menuMain" href="<{$imenu.link}>" target="<{$imenu.target}>"><{$imenu.title}></a>
    <{if $smarty.foreach.menuloop.first}>
      <a class="menuTop" href="<{$imenu.link}>" target="<{$imenu.target}>">
    <{else}>
      <a class="menuMain" href="<{$imenu.link}>" target="<{$imenu.target}>">
    <{/if}>
    <{$imenu.title}></a>
最後の行の場合は$smarty.foreach.menuloop.lastとすればOK。

tinyDの各ページ一覧表を生成する

カテゴリ : 
モジュール
執筆 : 
hodaka 2005/1/26 22:44
tinyDをエッセイ用途などに使ってるとページ数が相当増えてくる。 すると見たいページを現在の「prev/next」ナビで探すのは一苦労。もちろんカテゴリー化すればサブメニューで整理できるのだが。 そんなときに全ページの一覧リストでもあると非常に親切かもしれない。 ということでチャレンジ。

...続きを読む

新メニューに「new.gif」を添付する

カテゴリ : 
モジュール
執筆 : 
hodaka 2005/1/26 19:06
XOOPSのリデザインを参考に、新着メニュー欄に画像を添付してみる。 メインメニュ用テンプレートファイルsystem_block_mainmenu.htmlをちょいと加工。
<!-- start module menu loop -->
<{foreach item=module from=$block.modules}><a class="menuMain" href="<{$xoops_url}>/modules/<{$module.directory}>/">
<{$module.name|replace:"/new":"<img src='$xoops_url/uploads/new.gif' alt='新メニューです' />"}>
<!--<{$module.name}>-->
</a>
続いてモジュール管理で新モジュール名の後ろに「/new」を追加。 正規表現を知らなくてもreplaceで大丈夫。 さらにmultiMenuの場合は$module.nameでなくて$imenu.title。

simplelogのコメント投稿dateを付加する

カテゴリ : 
モジュール
執筆 : 
hodaka 2004/3/5 15:10
[追伸]以下は最新バージョンでは解消されている。 どうやらunixtimeをmysqlに書き込んでいるようだが、どうもうまく日付変換できないのでmysqltimeに変更。 変更箇所は: simpleblog.php simpleblog_view.html

...続きを読む

フォーラムの既読管理関連

カテゴリ : 
モジュール
執筆 : 
hodaka 2003/12/24 12:38
1.viewforum.phpのデフォルトでは100日経過したものは表示しないものをすべて表示するように。投稿が少ないので、既投稿はすべて貴重です(笑) viewforum.phpの156行目くらいを次のように変更した。
$sortsince = !empty($HTTP_GET_VARS['sortsince']) ?intval($HTTP_GET_VARS['sortsince']) : 1000;
2.関連してcookieの4KB制限があり、およそ150スレッドを超えると既読管理不能になる問題があるらしく、当座100スレッドまで保存して、かつ新規分については既読管理できるよう暫定対策版を導入。 参考サイト:http://ryus.biz/modules/bwiki/index.php?XOOPS2%2FBugTrack%2F18 newbb/viewtopic.php の最後の方を下記のように修正。by Ryujiさん

// Update cookie
// FIXME: doesn't check if 4kB limit of cookie is exceeded!
$topic_lastread[$topic_id] = time();
// Hack start Ryuji_edit(2003-09-15) 最新100topicに制限する
//  古い順にソート
asort($topic_lastread);
while(count($topic_lastread)>100){
 //100個以内になるまでunsetで減らしていく
    unset($topic_lastread[key($topic_lastread)]);
}
// Hack end Ryuji_edit(2003-09-15) 最新100topicに制限する
投稿なんて多くないのに、なんだけど 【対象ファイル】 modules/newbb/include/search.inc.php modules/newbb/class/class.forumposts.php modules/newbb/viewtopic.php 【参考】 http://jp.xoops.org/modules/newbb/viewtopic.php?topic_id=2431&forum=11&post_id=13355#forumpost13355 [03.12.13] 不具合あり、class.forumposts.phpとviewtopic.phpは旧に戻した。

会員登録画面をユーザーにやさしく

カテゴリ : 
モジュール
執筆 : 
hodaka 2003/12/11 16:23
ぶっきらぼうなメッセージをユーザー志向の精神で変更する。 対象:   register.php   registermy.php(新規) 参考url: ryujiさんの http://xoops.s22.xrea.com:8080/modules/newbb/viewtopic.php?topic_id=69&forum=2 からたどって sakaikさんから http://xoops.s22.xrea.com:8080/modules/bwiki/index.php?CODE%2F%C5%D0%CF%BF%B3%CE%C7%A7%B2%E8%CC%CC%A4%CE%B8%AB%B1%C9%A4%A8%CA%D1%B9%B9%A5%CF%A5%C3%A5%AF
対象:   search.phpとuserinfo.phpの修正。 参考URL:ryujiさんち http://xoops.s22.xrea.com:8080/modules/newbb/viewtopic.php?viewmode=flat&topic_id=134&forum=2

ログイン


ユーザー名:


パスワード:





パスワード紛失