ブロックで記事がある時の対応

投稿者:齋藤亮子  投稿日時:2022-01-02 09:19:56
<div>
	<div>
		<h3>イベント</h3>
	</div>
	<div>
		<!-- block:id="event" -->
		<dl>
			<dt cms:id="create_date" cms:format="Y.m.d">2019.6.12</dt>
			<dd>
				<!-- cms:id="title" -->イベント名<!-- /cms:id="title" -->
			</dd>
		</dl>
		<!-- /block:id="event" -->
	</div>
</div>
<div>
	<div>
		<p><a href="https://example.com/site/blog/category/9" role="button">イベントページを開く</a></p>
	</div>
</div>
<hr>
上記のようにブロックでイベント告知をする箇所を設けたいのですが、できれば記事が一件も無い時は上のコードの箇所をすべて非表示にしたいです。
何か良い方法はありませんか?
投稿者:齋藤毅  投稿日時:2022-01-02 09:25:04
乱暴な方法ではありますが、SOY CMS/Shopのブロックで最後とそれ以外のデータで表示を変えたいの記事にあるsoy:id="at_first"soy:id="at_last"を組み合わせれば良いです。

コードを下記のように書き換えます。
<!-- block:id="event" -->
<!-- soy:id="at_first" -->
<div>
	<div>
		<h3>イベント</h3>
	</div>
	<div>
<!-- /soy:id="at_first" -->
		<dl>
			<dt cms:id="create_date" cms:format="Y.m.d">2019.6.12</dt>
			<dd>
				<!-- cms:id="title" -->イベント名<!-- /cms:id="title" -->
			</dd>
		</dl>
<!-- soy:id="at_last" -->
	</div>
</div>
<div>
	<div>
		<p><a href="https://example.com/site/blog/category/9" role="button">イベントページを開く</a></p>
	</div>
</div>
<hr>
<!-- /soy:id="at_last" -->
<!-- /block:id="event" -->
コードは読みにくくなりますが、block:id="event"でイベント告知のエリアをすべて囲み、記事が一件でもある場合にsoy:id="at_first"(最初の記事の出力の際に囲った箇所を表示する)とsoy:id="at_last"(最後の記事の出力の際に囲った箇所を表示する)のタグで記事の前後のHTMLの機銃を囲います。
ログインして投稿する