SOY CMS/Shopのブロックで最初とそれ以外のデータで表示を変えたいでブロック内で最初とそれ以外で表示の出し分けを行うためにsoy:id="at_first"とsoy:id="not_first"を利用した。


当然、最後とそれ以外の出し分けを行い時もあるはず。

ということで今回は最後を識別するタグを紹介する。



上のキャプチャでは、最後以外の記事の下に破線、最後の記事の下に太い線を追加している。


この表示にするためにテンプレート編集で下記のHTMLを追加した。


<!-- b_block:id="entry_list" -->
<div>
	<header>
		<h2 cms:id="title"></h2>
		<div class="post-info">
			<time cms:id="create_date" cms:format="Y-m-d">March 26, 2012</time>
			<!-- cms:id="category_list" -->
				<a cms:id="category_link"><!-- cms:id="category_name" --><!-- /cms:id="category_name" --></a>
			<!-- /cms:id="category_list" -->
		</div>
	</header><!--.header-->
	<div class="content">
		<a cms:id="entry_link">
		<div class="thumbnail" cms:id="thumbnail_path_visible"><img src="https://saitodev.co/site/im.php?src=<!-- cms:id="thumbnail_path*" /-->&width=150"></div></a>
		<p cms:id="content" cms:length="250">Content</p>
		<p class="more"><a cms:id="entry_link*">Read More…</a></p>
	</div>

	<!-- soy:id="not_last" -->
	<hr style="border-style: dashed;">
	<!-- /soy:id="not_last" -->

	<!-- soy:id="at_last" -->
	<hr style="border: 2px solid #000000;">
	<!-- /soy:id="at_last" -->

</div>
<!-- /b_block:id="entry_list" -->

soy:id="at_last"とsoy:id="not_last"で装飾されたhrタグの出し分けを行う。




前回紹介したat_firstとno_firstを今回のタグと組み合わせれば、今まで難しかった表現をこなせる様になる。


例えば、

<!-- block:id="***" -->
<!-- soy:id="at_first" -->
<h3><!-- cms:id="category_name" -->***カテゴリのタイトル<!-- /cms:id="category_name" --></h3>
<ol>
<!-- /soy:id="at_first" -->
<li cms:id="item_description">***カテゴリの商品情報</li>
<!-- soy:id="at_last" -->
</ol>
<!-- /soy:id="at_last" -->
<!-- /block:id="***" -->

こんな感じで、

soy:id="at_first"ですべてのコンテンツで共通して出力される内容を一回だけ表示し、

ついでに<ol>タグも出力しておく(<ol>タグは二回目以降は不要)


最後にsoy:id="at_last"を活用して、</ol>タグを出力させれば、大半の難所は乗り越えることができる。