rolleiです。ひさびさの投稿、例によって困ったときだけの投稿を笑ってゆるしてやってくださいませ
お尋ねしたいのは、tinyDのサブメニュー表示です。自分の場合、通常は非表示にしています。xoops標準のメインメニューを使用していると、そこにズラーっとサブメニューが並ぶのはなんともバランスが悪いからです。
しかしサブメニューを非表示にすると、sitemapモジュールにもそれが反映され、ページが表示されませんね(当たり前ですが)。
つまり、メインメニューブロックには表示したくないが、サイトマップには表示したいという、なんとも悩ましい問題に直面しているわけです。マルチメニューを使用せず、xoops_version.phpのSubmenu itemsあたりをハックして、このわがままをかなえることは可能でしょうか。お知恵を貸してください。
GIJOEさん、こんにちは。回答ありがとうございます。
sitemap用のプラグインに挑戦してみようと思います。
他のモジュールのプラグインからコピペで作れそうな気がしたものですから〜
Quote:
あと一息のような気もして諦められません。なにかヒントでもよいので、アドバイスをお願いします。
残念ながら、まだまだ努力が必要だと思いますよ。
sitemap_get_categoires_map() はカテゴリーをツリー形式に表示するための関数なので、そもそもカテゴリーという概念を持たないTinyDには使えません。
むしろ、xhld用プラグインの方が、構造としては近いと思います。
(私が作れば数分でしょうが、あえて作りません
)
GIJOEさん、こんにちは。
Quote:
残念ながら、まだまだ努力が必要だと思いますよ。
sitemap_get_categoires_map() はカテゴリーをツリー形式に表示するための関数なので、そもそもカテゴリーという概念を持たないTinyDには使えません。
たしかに、categoryがないのになーと思っていました。
Quote:
むしろ、xhld用プラグインの方が、構造としては近いと思います。
ふむふむxhldですか、早速のぞいてみます(謝
Quote:
私が作れば数分でしょうが、あえて作りません
わかってますよー
今度こそ素人のコピペ魂をお見せしますぞ
GIJOEさん、こんにちは。懲りないrolleiです
教えて戴いたxhldのサイトマップ用プラグインを元に作ってみました。なんとかローカルで動作するところまでは漕ぎ着けました。とはいえコピペですからちっとも安心できません。どこかにポカや齟齬はないでしょうか? 大変恐縮ですがチェックして戴けると枕を高くして寝られそうです
function b_sitemap_tinyd(){
$db =& Database::getInstance();
$myts =& MyTextSanitizer::getInstance();
$result = $db->query( "SELECT storyid, title FROM ".$db->prefix("tinycontent")." ORDER BY blockid" ) ;
$ret = array() ;
while( list( $id , $name ) = $db->fetchRow( $result ) ) {
$ret["parent"][] = array(
"id" => $id ,
"title" => $myts->makeTboxData4Show( $name ) ,
"url" => "index.php?id=$id"
) ;
}
return $ret ;
}
Rolleiさん、こんにちは。
コードのチェックは、新規作成よりも高くつきますよ
とりあえず、表示ON/OFFの処理が欠けてますね。
function b_sitemap_tinyd(){
$db =& Database::getInstance();
$myts =& MyTextSanitizer::getInstance();
$result = $db->query( "SELECT storyid, title FROM ".$db->prefix("tinycontent")." WHERE visible=1 ORDER BY blockid" ) ;
$ret = array() ;
while( list( $id , $name ) = $db->fetchRow( $result ) ) {
$ret["parent"][] = array(
"id" => $id ,
"title" => $myts->makeTboxData4Show( $name ) ,
"url" => "index.php?id=$id"
) ;
}
return $ret ;
}
ただ、これだと、sitemap側に入れるプラグインであり、複製分それぞれについて、
-ファイル名の変更
-関数名の変更
-$db->prefix("tinycontent") 部分の変更
の3作業を行う羽目になります。
xhld自体、モジュール側プラグインのはずです。
というわけで、modules/*/include/sitemap.plugin.php として、
<?php
if( ! defined( 'XOOPS_ROOT_PATH' ) ) exit ;
$mydirname = basename( dirname( dirname( __FILE__ ) ) ) ;
if( ! preg_match( '/^(\D+)(\d*)$/' , $mydirname , $regs ) ) echo ( "invalid dirname: " . htmlspecialchars( $mydirname ) ) ;
$mydirnumber = $regs[2] === '' ? '' : intval( $regs[2] ) ;
eval( '
function b_sitemap_'.$mydirname.'(){
$db =& Database::getInstance();
$myts =& MyTextSanitizer::getInstance();
$result = $db->query( "SELECT storyid,title FROM ".$db->prefix("tinycontent'.$mydirnumber.'")." WHERE visible=1 ORDER BY blockid" ) ;
$ret = array() ;
while( list( $id , $name ) = $db->fetchRow( $result ) ) {
$ret["parent"][] = array(
"id" => $id ,
"title" => $myts->makeTboxData4Show( $name ) ,
"url" => "index.php?id=$id"
) ;
}
return $ret ;
}
' ) ;
?>
と、こんな感じでしょうか。(まったくチェックしてませんので、typoがあったらごめんなさい)
本当は、mod_rewrite用の処理も加えなければなりませんが、それは必要な人がやればいいってことで。
あと、ソースコードを書くときは、[ code][/ code]タグで囲ってあげると見やすいですよ。
GIJOEさん、こんにちは。
Quote:
コードのチェックは、新規作成よりも高くつきますよ
ひえぇ〜、今回はお見逃しを〜
Quote:
とりあえず、表示ON/OFFの処理が欠けてますね。
表示しないコンテンツがゼロだったので、そこまで頭がまわりませんでした。
Quote:
参考にしたのは、オリジナルのsitemapを作者さんが最初に公開した頃の、GIJOEさんの公式への書き込みだと思います。ずいぶん昔の!
Quote:
というわけで、modules/*/include/sitemap.plugin.php として、
<---勝手に中略--->
と、こんな感じでしょうか。
ていうか、書かないって言って書いてるし〜
ひとまず前のやつを使って、それからこれにもトライしてみますね。
Quote:
あと、ソースコードを書くときは、[ code][/ code]タグで囲ってあげると見やすいですよ。
失礼しましたぁ。次回(そんなにないと思うけど)から気をつけます!!
本当にありがとうございました。