ブログのタグにそれぞれstyleをつけて表示させたい

以前こちらでブログのタグIDを取得し、それぞれにstyleをつける質問をさせて頂きました。

\httpdocs\lib\Baser\Plugin\Blog\View\Elements 内の「blog_tag.php」(テーマフォルダにコピーして使用)内の
<div class="tag"><?php $this->Blog->tag($post) ?></div>

<?php if (!empty($this->Blog->blogContent['tag_use'])): ?>
<?php if (!empty($post['BlogTag'])) : ?>
	<div class="tag <?php if(!empty($post['BlogTag'])) {
foreach($post['BlogTag'] as $tag) {
	echo 'tag'.$tag['id'].' ';
}

} ?>"><?php $this->Blog->Tag($post) ?>
<?php endif ?>

<?php endif ?>

とすることで、

と取得することが出来たのですが、タグが複数の場合これだとうまくいきません。 <?php $this->Blog->Tag($post) ?>のhref属性にこのクラスを付与することは可能なのでしょうか。

もしくはtagのhref属性を外すのはどうすればよいのでしょうか。

tagにそれぞれ異なるクラスをつけて表示させたいのですが、方法はあるのでしょうか。
どなたかご存知の方がいましたらご教授いただけますと幸いです。

よろしくお願い致します。

Baser4.1.7
PHP5.6
mysql

私はこのように書きました。

<?php 
foreach($post['BlogTag'] as $tag):?>
<?php 
	switch($tag['name']){
	case 'aaa':
		$class = 'StyleA';
		break;
	case 'bbb':
		$class = 'StyleB';
		break;
	default:
		$class = 'StyleDefault';
		break;
	}
?>
<div class="<?php echo $class ?>">
<?php echo h($tag['name']) ?>
</div>
<?php endforeach; ?>
1 Like

お返事ありがとうございます。

教えて頂いた方法で夫々のタグにclassをつけることができました。

このように記述しました。

<?php if (!empty($this->Blog->blogContent['tag_use'])): ?>
<?php 
	foreach($post['BlogTag'] as $tag):?>
	<?php 
		switch($tag['id']){
		case '1':
			$class = 'tag1';
			break;
		case '2':
			$class = 'tag2';
			break;
		case '3':
			$class = 'tag3';
			break;
		case '4':
			$class = 'tag4';
			break;
		default:
			$class = 'tag5';
			break;
		}
	?>
	<span class="tag <?php echo $class ?>">
		<?php echo h($tag['name']) ?>
	</span>
<?php endforeach; ?>
<?php endif ?>

このタグにhref属性を付与したい場合はどのようにかけばよいのでしょうか。

<?php echo h($tag['name']) ?>

<?php echo h($tag['name']) ?>

などとしてみましたが、記事自体にリンクしてしまいます。タグへのリンクにしたい場合の記述方法はどうなるのでしょうか。

・タグ自体にclassを付与
cake自体が未熟なもので何度も申し訳ありません。

よろしくお願い致します。

すみません。記述がもれていました。

<span class="tag <?php echo $class ?>">
		<?php echo h($tag['name']) ?>
	</span>

<a href="<?php echo $this->Blog->getPostLinkUrl($post, true) ?>" class="tag <?php echo $class ?>">
		<?php echo h($tag['name']) ?>
	</a>

などとしてみましたが、タグへのリンク(tag/タグ名) にすることは可能なのでしょうか。

タグにリンクを付加したいのですね。
こんな風に書き換えてみました。いかがでしょうか?

<?php if (!empty($this->Blog->blogContent['tag_use'])): ?>
<?php 
	foreach($post['BlogTag'] as $tag):?>
	<?php 
		switch($tag['id']){
		case '1':
			$class = 'tag1';
			break;
		case '2':
			$class = 'tag2';
			break;
		case '3':
			$class = 'tag3';
			break;
		case '4':
			$class = 'tag4';
			break;
		default:
			$class = 'tag5';
			break;
		}
	?>
	<span class="tag <?php echo $class ?>">
		<?php $tag2['BlogTag'] = $tag ?>
		<?php $this->Blog->tagLink($post['BlogPost']['blog_content_id'], $tag2) ?>
	</span>

<?php endforeach; ?>
<?php endif;  ?>
1 Like

できました!!
思い通りの形になりました。
本当にありがとうございました!!!

2 Likes