a-blog cmsでトップページをエントリーにしている時に「エントリー作成」のボタンを非表示にする
課題
サイトのトップページの時のみ「エントリー作成」を非表示にしたい
条件
- サイトのトップページ自体を、エントリーにて作成している
- トップページへの表示方法には「エントリーコードを空にする」を利用している
解決方法
- サイトを表示しているテンプレートに以下のようなコードを追加する
<!-- BEGIN_IF [%{BID}/eq/1/_and_/%{CID}/em/_and_/%{ECD}/em/] --><style> #adminBox form:nth-of-type(2){ display:none; } </style><!-- END_IF -->
説明
If文内では、以下を指定をしている
- BID(ブログID)は1
- CID(カテゴリID)は空
- ECD(エントリーコード)は空
こうすることで
- ルートブログで
- トップページ用表示しているエントリー
ということを表現した
つまづいた点
- 最初は
を使い、返り値が「top」であれば、というif文を想定していた%{VIEW}
- しかし上記のような運用例では、たとえブログトップの表示でも「entry」を返してしまった
- そのためにブログトップを別表現で実装した
補足
- 今回は単純にボタンを非表示にすれば良いため、CSSで実装した
- action.htmlは今後アップデートで更新される可能性があるためこのような実装にした
- action.htmlの継承を@extendと@sectionで上書きする方法も考えたが、if文より先にextendが実行されるようで、思ったようにならなかった。
- 上記で実装するにはaction内@section("entry-insert")をもう一度記載する必要が出るようで、そのコードをメンテナンスするコストが出るのは意味がないため、ひとまず表面的な実装を優先した
今回の実装については、もう少し上手なやり方があるような気がする。
お困りごとをお聞かせください。
a-blog cmsについてのご相談、ご依頼など。
頂いた内容については、3営業日以内の返信を心がけております。
他社作成のa-blog cms修正、コーディング済htmlへのa-blog cms導入もOK。
小さなことから、お気になさらずお気軽にご相談ください。