SOY CMSマニュアル
ページの管理
ページ中にエントリーを表示する方法(その2)
3.ブロックの作り方(その2)
テンプレートに記述したブロックに記事(エントリー)を表示する方法を説明します。
ここでは、会社案内にタイトル(title)を、内容部分に本文(content)を割り当てることにします。
タイトルを表示したいHTMLノード部分にcms:id="title"属性を
コンテント部分を表示したいHTMLノード部分にcms:id="content"属性を
それぞれ入力します。
<html>
<body>
<!-- block:id="company_info" -->
<h4 cms:id="title" cms:alt="会社案内">会社案内</h4>
<div cms:id="content">ここには会社案内の内容が入ります。</div>
<div>作成日:
<!-- cms:id="create_date" cms:format="Y年n月j日" -->2009年11月11日<!-- /cms:id="create_date" -->
</div>
<!-- /block:id="company_info" -->
</body>
</html>
最後に保存ボタンを押してください。これでブロック領域が作成されました。
ブロック領域が作成されたかを確認するには、テンプレートエディタのブロックタブをクリックして、下図のように表示されたら作成が成功しています。
ここで、作成したはずのブロックが表示されていない場合は、
- ブロックの閉じタグにblock:idを指定していない。
- ブロックのIDが開始タグと終了タグで違っている。
- 保存していない
等の理由が考えられます。
注意
cms:idはたいていの場合は終了タグに書かなくても動作します。
しかし、同一のタグが入れ子になっている場合は表示がおかしくなるため、終了タグにもcms:idをつけてください。
例:
<p cms:id="content">
<p>ここに本文が入ります</p>
</p>
この場合は、pタグがcms:idの中で入れ子になっているため、表示がおかしくなります。
以下のように設定してください
<p cms:id="content">
<p>ここにタイトルが入ります</p>
</p cms:id="content">
title, content以外に使えるcms:idについては以下の表をご覧下さい。
cms:id | 使用できるタグ | 詳細 |
---|---|---|
entry_id | すべて | ID |
title | すべて | タイトル※ |
content | すべて | 内容部分※ |
more | すべて | 追記部分※ |
create_date | すべて | 作成日付、cms:format使用可(標準:Y-m-d H:i:s)※※ |
create_time | すべて | create_dateと同じだがcms:formatを指定しない場合は H:i となる※※ |
entry_link | a | 「ブログにリンクを張る」としたときのリンク先 SOY CMS 1.2.5以降 |
title_plain | すべて | リンクの付かないタイトル SOY CMS 1.2.6以降 |
more_link | a | entry_linkに#moreが付いたもの SOY CMS 1.2.7以降 |
※title, content, moreが空の時に表示する値をcms:altで指定できます。
※※日付関連のフォーマット(cms:format)はPHPのdateと同じものが使えます。
例:cms:format="Y-m-d H:i:s"→2009-03-18 16:08:03, cms:format="Y年n月j日"→2009年3月9日
詳しくはPHP: date - Manualを参照してください。
続いて、作成したブロックに対して記事(エントリー)を割り当てます。
記事(エントリー)を割り当てるには以下の2種類の方法があります。
その他、同一SOYCMSで管理されている他サイトの記事(エントリー)をそのサイトのラベルを指定することで表示することも可能です(他サイトラベルブロック)。ただし、他サイトラベルブロックで表示される記事(エントリー)はダイナミック編集できません。
参考
block:idとcms:idの指定方法は大きく以下の2通りがあることになります(b_block:id, m_block:idも同様です)。
1. タグに属性として設定する。
<div cms:id="content">本文</div>
2. HTMLのコメントとして記述する。
<!-- cms:id="content" -->本文<!-- /cms:id="content" -->
HTMLのコメントとして記述する方法では、次のような記述もできます(SOY CMS 1.2.2以降)。
<!-- cms:id="content" /-->
これは<!-- cms:id="content" --><!-- /cms:id="content" -->と同等です。
サンプルテキストが不要な場合にはこちらが便利です。
参考
cms:idの値は同じブロックの中では一度しか使えないという制約があります。
つまり、同じブロック内でタイトル(cms:id="title")などを繰り返し使えないということです。
これではやはり不便なので1.2.4以降ではcms:id="title*"として繰り返し使えるようにしました。
<!-- cms:id="create_date" /--><!-- cms:id="title" /-->
<!-- cms:id="content" /-->
<!-- cms:id="more" /-->
<!-- cms:id="create_date*" /-->
のように記述することが可能です。
b_block:idやm_block:idについても*を付けることで同じページで複数回使うことができます。