PEAK XOOPS - サブメニューとsitemap in englishin japanese

サブメニューとsitemap

  • You cannot open a new topic into this forum
  • Guests cannot post into this forum
Previous post - Next post | Parent - Children.1 | Posted on 2006/2/3 12:04
Rollei  一等兵   Posts: 20
rolleiです。ひさびさの投稿、例によって困ったときだけの投稿を笑ってゆるしてやってくださいませ
お尋ねしたいのは、tinyDのサブメニュー表示です。自分の場合、通常は非表示にしています。xoops標準のメインメニューを使用していると、そこにズラーっとサブメニューが並ぶのはなんともバランスが悪いからです。
しかしサブメニューを非表示にすると、sitemapモジュールにもそれが反映され、ページが表示されませんね(当たり前ですが)。
つまり、メインメニューブロックには表示したくないが、サイトマップには表示したいという、なんとも悩ましい問題に直面しているわけです。マルチメニューを使用せず、xoops_version.phpのSubmenu itemsあたりをハックして、このわがままをかなえることは可能でしょうか。お知恵を貸してください。
Votes:0 Average:0.00
Previous post - Next post | Parent - Children.1 | Posted on 2006/2/3 16:10
GIJOE  先任軍曹   Posts: 4110
rolleiさん、こんにちは。
一番可用性が高いのは、sitemap用のTinyDプラグインを作ってあげることでしょうかね。

でも、メニューにこだわりたいのであれば、さっさとメインメニューの利用をやめてしまう、という方をお勧めします。
MultiMenuであれば、モジュールごとに、サブメニューの扱い方法を決定できます。

これなら、PHPコードをいっさいいじる必要はないですよ。
Votes:0 Average:0.00
Previous post - Next post | Parent - Children.1 | Posted on 2006/2/5 18:24
Rollei  一等兵   Posts: 20
GIJOEさん、こんにちは。回答ありがとうございます。
sitemap用のプラグインに挑戦してみようと思います。
他のモジュールのプラグインからコピペで作れそうな気がしたものですから〜
Votes:0 Average:0.00
Previous post - Next post | Parent - Children.1 | Posted on 2006/2/25 14:31
Rollei  一等兵   Posts: 20
GIJOEさん、こんにちは。Rolleiです。
tinyDのプラグインに挑戦してみました。結果から言うと、途中まで行って頓挫しています。

function b_sitemap_tinyd(){
$xoopsDB =& Database::getInstance();

$block = sitemap_get_categoires_map($xoopsDB->prefix("tinycontent"), "storyid", "blockid", "title", "index.php?id=", "title");

return $block;
}

と記述したプラグインを作ったのですが、tinyDの表示順の設定が「0」のものは表示され、それ以降のものは表示されません。素人が作るには無理があるとは思いますが、あと一息のような気もして諦められません。なにかヒントでもよいので、アドバイスをお願いします。
Votes:0 Average:0.00
Previous post - Next post | Parent - Children.1 | Posted on 2006/2/25 17:30
GIJOE  先任軍曹   Posts: 4110
Quote:
あと一息のような気もして諦められません。なにかヒントでもよいので、アドバイスをお願いします。
残念ながら、まだまだ努力が必要だと思いますよ。
sitemap_get_categoires_map() はカテゴリーをツリー形式に表示するための関数なので、そもそもカテゴリーという概念を持たないTinyDには使えません。
むしろ、xhld用プラグインの方が、構造としては近いと思います。
(私が作れば数分でしょうが、あえて作りません
Votes:0 Average:0.00
Previous post - Next post | Parent - Children.1 | Posted on 2006/2/26 13:56
Rollei  一等兵   Posts: 20
GIJOEさん、こんにちは。

Quote:
残念ながら、まだまだ努力が必要だと思いますよ。
sitemap_get_categoires_map() はカテゴリーをツリー形式に表示するための関数なので、そもそもカテゴリーという概念を持たないTinyDには使えません。
たしかに、categoryがないのになーと思っていました。

Quote:
むしろ、xhld用プラグインの方が、構造としては近いと思います。
ふむふむxhldですか、早速のぞいてみます(謝

Quote:
私が作れば数分でしょうが、あえて作りません
わかってますよー
今度こそ素人のコピペ魂をお見せしますぞ
Votes:0 Average:0.00
Previous post - Next post | Parent - Children.1 | Posted on 2006/2/27 19:28
Rollei  一等兵   Posts: 20
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 ;
}
Votes:0 Average:0.00

question Re: これでどうでしょう?

msg# 1.1.1.1.1.1.1.1
Previous post - Next post | Parent - Children.1 | Posted on 2006/2/28 5:53
GIJOE  先任軍曹   Posts: 4110
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]タグで囲ってあげると見やすいですよ。
Votes:0 Average:0.00

question Re: これでどうでしょう?

msg# 1.1.1.1.1.1.1.1.1
Previous post - Next post | Parent - No child | Posted on 2006/3/1 0:08
Rollei  一等兵   Posts: 20
GIJOEさん、こんにちは。

Quote:
コードのチェックは、新規作成よりも高くつきますよ
ひえぇ〜、今回はお見逃しを〜
Quote:
とりあえず、表示ON/OFFの処理が欠けてますね。
表示しないコンテンツがゼロだったので、そこまで頭がまわりませんでした。
Quote:
xhld自体、モジュール側プラグインのはずです。
参考にしたのは、オリジナルのsitemapを作者さんが最初に公開した頃の、GIJOEさんの公式への書き込みだと思います。ずいぶん昔の!
Quote:
というわけで、modules/*/include/sitemap.plugin.php として、
<---勝手に中略--->
と、こんな感じでしょうか。
ていうか、書かないって言って書いてるし〜
ひとまず前のやつを使って、それからこれにもトライしてみますね。
Quote:
あと、ソースコードを書くときは、[ code][/ code]タグで囲ってあげると見やすいですよ。
失礼しましたぁ。次回(そんなにないと思うけど)から気をつけます!!
本当にありがとうございました。
Votes:0 Average:0.00

  Advanced search


Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!