先日、知人から


blog_entry_1

ヤンマー南丹支店さんで土壌分析についての話をしました


blog_entry_2

SOY CMSの記事投稿画面でYouTubeの動画の挿入ボタンを追加しました


投稿している内容によって、

文章の下に四角い枠とリンクが表示されていたりいなかったりしているけど、

これはどのようにして実装しているの?

ということを質問されました。


SOY CMSはテンプレートにPHPの記述を一切入れなくて良い

入れないことによってデザインの修正の抵抗を減らしているので、

テンプレートにPHPの記述が入るのであれば別にいい

とのことでした。


それを踏まえた上で、

今回の実装方法の説明をします。




今回の文末のリンクの出し分けはモジュールという機能を使っています。

モジュールについての詳しい説明は下記の記事をご覧ください。

SOY CMSでどのページでも使えるブログのサイドバーを作ってみた


モジュールの作成と該当する箇所にタグを挿入する方法は省略します。


モジュールが作成できたら、下記の様なコードを書きます。

今回は記事詳細ページのみで表示出来るようにします。


//$htmlObj->modeでブログのどのページを開いているかを取得できます
if($htmlObj->mode == "_entry_") {
$isAgrSeminar = false;
$isCmsSeminar = false;

//現在表示している記事にどのラベルが設定されているかを取得できます
$labels = $htmlObj->entry->getLabels();

//設定されているラベルによって表示するリンクを決めます
foreach($labels as $label){
//勉強会のラベルIDが9
if($label->getId() == 9){
$isAgrSeminar = true;
break;
}

//SOY CMS系のラベルIDは5 開発実績は16
if($label->getId() == 5 || $label->getId() == 16) {
$isCmsSeminar = true;
break;
}
}

//栽培系のセミナーの表記
if($isAgrSeminar){
echo "栽培系のセミナーの表示に関する文字列を表示する";
}

//SOY CMSの仕事関連の表記
if($isCmsSeminar){
echo "SOY CMSの仕事関連の表示に関する文字列を表示する";
}
}

こんな感じのコードを書きました。


表示している記事で設定しているラベルが何であるか?によって、リンクの出し分けを行っています。


モジュールを作成すれば、専用の<!-- cms:module="parts.seminar" -->といったタグが生成されますので、

あとはこのタグをテンプレートに張れば終了です。


タグはご覧の通り、HTMLのコメントタグで生成されているので、

テンプレートをPHPの記述で汚すということが無く、リンクの出し分けができました。