Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#1 2007-09-05 01:13:42

yumi saiki
メンバー
From: 大阪府高槻市
登録日: 2007-07-27
投稿: 118
ウェブサイト

Re: アイテムの本体のところでは<%category%>しか使えないのですか?<%catdesc%>が使いたい

いつもお世話になっております。

http://www.mago.cc を作っておりますが、

こちらのお陰で、MTを使わずタダで!かなり軽い いいサイトができそうで嬉しいです。

こちらのフォーラムで教えていただいて、

SEOリンク対策でトップにテキストリンクをスキンで<%categorylist(default/index)%>と入れました。

これの順番を自在にするために、  カテゴリには <!--1-->ひだまり と名前をつけ 説明には ひだまり として

順番を数字順にし、表示には テンプレートの カテゴリー一覧の本体には

<a href="<%catlink%>" title="<%catdesc%>"><%catdesc%></a>  と入れました。

しかし、

スキンでブログの最新情報を表示させるのに、

<%blog(default/index,5)%> と書いて、

テンプレートのアイテムの本体は、

<a href="<%categorylink%>" title="カテゴリ<%category%>">
<%category%></a>
  <%date%></h6>
(サイト上では下の段右側の赤い文字になっているところにマウスオーバーしたら見えます)
   

<!--1--> となっているので、<%category%>を表示させるとページでは説明は出ません。
しかし、 マウスオーバーなどで alt とか title とかを表示させると 見えてしまいます。

  同じテンプレート上なのに、<%catdesc%> となると表示できないんですね。


このあたりのルールは体で覚えるしかないのか?

title で表示させるのをあきらめたらいいのかもしれませんが、SEO対策としては、一つでも多くのキーワードを入れたいのが人情です。
無視して表示させたままはカッコ悪いし(デザインがカッコいいわけじゃないけど)。

いや、他にもっと カテゴリを順番にするうまい方法があるのか?


アドバイスをお願いします。


yumi saiki
今日も勉強しました!
************************
教えてください。よろしくお願いします。

オフライン

#2 2007-09-05 03:43:21

yama
Administrator
登録日: 2005-07-07
投稿: 1,277
ウェブサイト

Re: アイテムの本体のところでは<%category%>しか使えないのですか?<%catdesc%>が使いたい

yumi saiki さんの発言:

同じテンプレート上なのに、<%catdesc%> となると表示できないんですね。

たしかに。このへんコアで一貫性を持たせて実装できればという感じがします。
と言いつつ解決策。NP_CatDescが使えるかも。
NP_ExtraSkinJPを利用してcatdescみたいな項目を自由に追加して利用するテもあります。
カテゴリーの並びの制御なら、NP_BlogMenuやNP_ContentsListを使うのがいいかも。

SEOということでなら、必ずしもキーワードが多いのがいいとは限らないような気がしますが。。

オフライン

#3 2007-09-05 07:17:00

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: アイテムの本体のところでは<%category%>しか使えないのですか?<%catdesc%>が使いたい

なるほど、確かにテンプレートのアイテム本体のところで、<%catdesc%>、利きませんね。スキン変数では使える、<%category(desc)%>もここではだめです。ちなみに、ITEMACTIONS.php の153行目辺りを

	function parse_category($type = 'name') {
		switch($type) {
			case 'name':
				echo $this->currentItem->category;
				break;
			case 'desc':
				global $blog;
				echo $blog->getCategoryDesc($this->currentItem->catid);
				break;
			case 'id':
				echo $this->currentItem->catid;
				break;
		}
	}

とすると、<%category(desc)%>が使えるようになります。コアへの導入、どうでしょう?>Kimitakeさん/Andyさん

ここはプラグインが使えるところなので、コアの変更jなしで対処する簡単な方法としては NP_catdesc を作れば良いのでしょうけれど、他にあったらいいなというようなテンプレート変数(スキン変数にはあるのに、テンプレート変数には無いとか)ありますか?もしあれば、まとめて一つのプラグインにすればすっきりすると思います。

オフライン

#4 2007-09-05 08:28:10

yama
Administrator
登録日: 2005-07-07
投稿: 1,277
ウェブサイト

Re: アイテムの本体のところでは<%category%>しか使えないのですか?<%catdesc%>が使いたい

<!-- l --><a class="postlink-local" href="http://japan.nucleuscms.org/bb/viewtopic.php?p=20219&highlight=#20219">viewtopic.php?p=20219&highlight=#20219</a><!-- l -->
最近だと「カテゴリー一覧やアーカイブ一覧で<%skinfile%>が使えない」というのがありました。
<%skinfile%>はどのテンプレートパーツでも使えたほうがいいと思います。

<!-- l --><a class="postlink-local" href="http://japan.nucleuscms.org/bb/viewtopic.php?p=9382#9382">viewtopic.php?p=9382#9382</a><!-- l -->
あと<%blogsetting%>とか。

オフライン

#5 2007-09-05 09:21:44

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: アイテムの本体のところでは<%category%>しか使えないのですか?<%catdesc%>が使いたい

あ、質問の仕方が悪かったかもしれません :oops:

テンプレート中でプラグインが使えるのは、アイテムとコメントのところなので、他のテンプレート(カテゴリリスト・ブログリストなど)での機能追加は無理です。実は、無理やり出来ないことは無いのですが、そういったケースでは使用にあたって一連の儀式が必要だったりするので、実用的ではありません。

なので、<%skinfile%> はちょっと無理ですね(もともと、アイテムのところでは、何もしなくても使えますよね)。

<%blogsetting%> をアイテムテンプレート・コメントテンプレートで利用できるようにすることは可能です。

オフライン

#6 2007-09-05 22:17:16

yumi saiki
メンバー
From: 大阪府高槻市
登録日: 2007-07-27
投稿: 118
ウェブサイト

Re: アイテムの本体のところでは<%category%>しか使えないのですか?<%catdesc%>が使いたい

ITEMACTIONS.php の改造ありがとうございました。 ちなみにlibs の中ですね。

[size=200:r77f6r2y]絶対に便利だと思います。

カテゴリの順番は<%category(name)%>で数字を入れて単純に操作し、表示は
<%category(desc)%>を表示させるというようにしてしまったらいいと思います。

(でも、一番いいのは数字を横に入れたら順番になるというのが楽でいいですけどね)


ちなみに、CatDesc のプラグインでは思うようにならなかったです。


yumi saiki
今日も勉強しました!
************************
教えてください。よろしくお願いします。

オフライン

#7 2007-09-08 04:26:24

yama
Administrator
登録日: 2005-07-07
投稿: 1,277
ウェブサイト

Re: アイテムの本体のところでは<%category%>しか使えないのですか?<%catdesc%>が使いたい

http://wakka.xiffy.nl/tempvars
挙動を確認してませんが、こんなのも見つけました。
これも同じ種類のプラグインのような。

オフライン

#8 2007-09-08 06:38:17

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: アイテムの本体のところでは<%category%>しか使えないのですか?<%catdesc%>が使いたい

yama.kyms さんの発言:

http://wakka.xiffy.nl/tempvars
挙動を確認してませんが、こんなのも見つけました。
これも同じ種類のプラグインのような。

なるほど、需要はありそうですね。

今考えているコードでは、テンプレートで <%SomePlugin(catdesc)%> <%SomePlugin(blogsetting)%> ではなくて <%catdesc%> <%blogsetting%> が使えるようになります。

doTemplateVar()メソッドだけを持った小さなクラスを付け足していくだけで、機能が追加できる仕組みです。

アルファー版だけど、こんな感じで

<?php 
class NP_TemplateEx extends NucleusPlugin { 
	function getName() { return 'NP_TemplateEx'; }
	function getMinNucleusVersion() { return 220; }
	function getAuthor()  { return 'Katsumi'; }
	function getVersion() { return '0.1'; }
	function getURL() {return 'http://hp.vector.co.jp/authors/VA016157/';}
	function getDescription() { return $this->getName().' plugin'; } 
	function supportsFeature($what) { return ($what=='SqlTablePrefix')?1:0; }
	function getEventList() { return array('InitSkinParse'); }
	var $skin;
	var $skintype;
	var $commands=array('catdesc','blogsetting');
	function event_InitSkinParse(&$data){
		global $manager;
		$this->skin=&$data['skin'];
		$this->skintype=$data['type'];
		foreach($this->commands as $name) {
			$name='NP_'.$name;
			$manager->cachedInfo['installedPlugins'][]=$name;
			$manager->plugins[$name]=new $name;
			foreach($this as $key=>$value) $manager->plugins[$name]->$key=&$this->$key;
		}
	}
	function doTemplateVar(&$item,$p1='',$p2='',$p3='',$p4='') {
		global $manager;
		if (in_array($p1,$this->commands)) return $manager->plugins['NP_'.$p1]->doTemplateVar($item,$p2,$p3,$p4);
	}
	function doTemplateCommentsVar(&$item,&$comment,$p1='',$p2='',$p3='',$p4=''){
		return $this->doTemplateVar(&$item,$p1,$p2,$p3,$p4);
	}
}

class NP_catdesc extends NP_TemplateEx {
	function doTemplateVar(&$item,$p1='',$p2='',$p3='') {
		global $blog;
		echo $blog->getCategoryDesc($item->catid);
	}
}
class NP_blogsetting extends NP_TemplateEx { 
	function doTemplateVar(&$item,$p1='',$p2='',$p3='') {

	}
}

まだ、<%catdesc%>しか使えないので、注意してください。

オフライン

#9 2007-09-12 01:07:06

yumi saiki
メンバー
From: 大阪府高槻市
登録日: 2007-07-27
投稿: 118
ウェブサイト

Re: アイテムの本体のところでは<%category%>しか使えないのですか?<%catdesc%>が使いたい

NP_TempVars.php というのは、
これは複数ブログにおけるテンプレート(のカテゴリー説明)を自由に選べるようになるというもの?(英語なんでよけいにわかりませn)

複数ブログをまだ設置した経験がないのですが、ブログが複数あってもカテゴリを共通にしたり(逆にややこしいような?)カテゴリをブログごとに設置したりして 自由自在にできるんですか?

そんな巨大なサイトを構築することはないと思うので、私にはこのプラグインより、今回単純に書き変えてくれただけで大満足です。(ていうか、これは書き変えを標準にしておいたほうがいいんじゃないでしょうか?)

追加で書いてくださったプラグインは何ですか? 本当にすみませんが、

今考えているコードでは、テンプレートで <%SomePlugin(catdesc)%> <%SomePlugin(blogsetting)%> ではなくて <%catdesc%> <%blogsetting%> が使えるようになります。

doTemplateVar()メソッドだけを持った小さなクラスを付け足していくだけで、機能が追加できる仕組みです。

の意味がまったくわかりません。
解決しているので満足しているのですが、興味があってどうでもいいこと聞いてしまいました。

もしかして、まったく見当違いだったらすみません。

モデレーターさまの会話をジャマしたトウシローかもしれません。


yumi saiki
今日も勉強しました!
************************
教えてください。よろしくお願いします。

オフライン

#10 2007-09-12 05:44:42

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: アイテムの本体のところでは<%category%>しか使えないのですか?<%catdesc%>が使いたい

5つ上のコアの改造では、<%category(desc)%>が使えるようになりますが、上のプラグインでは、代わりに<%catdesc%>が使えるようになります。

コアの機能変更は、基本的には本家チーム(http://nucleuscms.org/)が行っているので、希望の機能変更が採用されるまで時間がかかるケースが殆どです(採用されない場合も)。なので、もし同じ事がプラグインで実現できるのならば、とりあえずそれで対応しておこうじゃないかという考え方です。

上記プラグインは、そういった事を比較的簡単な構造のプラグインで対応できる例として示したものです。

オフライン

#11 2007-09-12 12:10:49

yumi saiki
メンバー
From: 大阪府高槻市
登録日: 2007-07-27
投稿: 118
ウェブサイト

Re: アイテムの本体のところでは<%category%>しか使えないのですか?<%catdesc%>が使いたい

コアの書き換えの提案に私のアイデアが生きた「かも」しれないと思うと嬉しいです。
nucleus にはまりそうです。

ありがとうございました。


yumi saiki
今日も勉強しました!
************************
教えてください。よろしくお願いします。

オフライン

#12 2007-12-19 14:25:52

yama
Administrator
登録日: 2005-07-07
投稿: 1,277
ウェブサイト

Re: アイテムの本体のところでは<%category%>しか使えないのですか?<%catdesc%>が使いたい

報告です。上記p=20324のハックを加えると、index表示のカテゴリー非選択状態の時と
個別アイテム表示の時にカテゴリー名が出力されなくなるみたいです。


http://nucleus.coolblog.jp/
たとえば上記サイトでいえば、「Category: General」「Category: moblog」などとアイテムごとに出力
されてますよね。これが出力されませんでした。

オフライン

Board footer