concrete5の5.7だといろいろ変数?コード?スニペット?(覚えろや・・・)とかが微妙に違うので
また増やしたり減らしたり覚書。
5.6関連いろいろ覚書はこちら
テーマ制作の際に目を通しておきたいページ
ページデータ取得
ページのデータを取得する場合はこちら
PageList オブジェクトで検索・ソートを行う
概要
【完全保存版】 concrete5.7.x テーマスニペット集
コーディングガイドライン
Elemental テーマのエリア一覧 (concrete5 テーマ作成の参考用)
ブックマーク
Getting Data about a Page
C5 Cheat Sheet
concrete5 5.7 API
http://c5addon.com/ ・・・concrete5のアドオンを探す
https://www.cherrypieweb.com/weblog/technical/20161207104805.php・・・concrete5.7対応 外部フォームブロックの作り方まとめ
ここから個人的な覚書
サイト名を表示
<?php echo Config::get('concrete.site'); ?>
日付の表示方法を変更するときはDateHelperを使う
concrete5で日付を表示するときはDate Helperを使いましょう
↑ページリストブロックの日付フォーマットをオーバーライドするときに参考にさせていただきました。
echo $dh->date('Y/m/d',strtotime($page->getCollectionDatePublic())); // Y/m/d 書式で日付を取得
$dhというのはページリストブロックのview.phpの上のほうにある
$dh = Core::make('helper/date'); /* @var $dh \Concrete\Core\Localization\Service\Date */
ヘルパーをちゃんと理解したいです。
ページの公開日を指定したフォーマットで表示したい
公式サイトに解説があります。
現在のページのページタイプのハンドルを取得
<?php $c->getPageTypeHandle(); ?>
現在のページのページテンプレートのハンドルを取得
<?php $c->getPageTemplateHandle(); ?>
ユーザーのログイン判定
<?php $u = new User(); if ($u->isRegistered()) { ?> ログインしている場合の記述 <?php } else { ?> ログインしていなかった場合の記述 <?php } ?>
エリアがゼロだったら表示しない(Global にしたらグローバルエリアでも可能らしい)
<?php $a = new Area('エリア名'); if ($c->isEditMode() | $a->getTotalBlocksInArea($c) > 0) { $a->display($c); } ?>
エリアを囲むHTMLとか付与
<?php $a = new Area('エリア名'); $a->setBlockWrapperStart('<div class="クラス名">',true); $a->setBlockWrapperEnd('</div>'); $a->display($c); ?>
引数が使えなくなっている?のが残念。。。
編集モードだった場合の条件分岐
<?php if ($c->isEditMode()) { ?> ここに記述 <?php } ?>
編集モード以外で表示
<?php if (!$c->isEditMode()) { ?> ここに記述 <?php } ?>
javascriptとか編集モードでは動いて欲しくない時とかに。
画像の表示
公式サイトの説明からの覚書。
画像がレスポンシブのコードで出力されるかは、まず前提としてテーマがレスポンシブ画像をサポートしているかによる。
$image = Core::make('html/image', array($f)); $tag = $image->getTag();
普通は画像のURLはデフォで出力される。(レスポンシブではない場合は、縦横幅も)
タイトルやclass属性をつけたい場合
$tag = Core::make('html/image', array($f))->getTag(); $tag->alt('altテキスト'); $tag->title('titleテキスト'); $tag->addClass('example class'); echo $tag;
属性を削除したい場合は、null を代入する
$tag = Core::make('html/image', array($f))->getTag(); $tag->width = null; $tag->height = null; echo $tag;
picture タグを使用するかどうかを指定する
テーマがレスポンシブをサポートしていてもあえてimgのほうで使いたいんじゃい!って時は
$tag = Core::make('html/image', array($f, false))->getTag();
lessファイル
まず前提にcss/style.xml内に下記があること。
<set name="Header"> <style name="Background" variable="header-background" type="color" /> </set>
そうすると通常の呼び出しは@header-background-colorでいけるんだけど
なんらかの都合によりrgba(255,255,255,1)みたいなrgbaで表示したい場合?は下記のようにrgba(red(@header-background-color), green(@header-background-color), blue(@header-background-color),1)でも表示できた。
白からデザイン機能で選択した色へのグラデーションができるサンプル。
background: rgb(255,255,255); background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(red(@header-background-color), green(@header-background-color), blue(@header-background-color),1) 100%); background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(red(@header-background-color), green(@header-background-color), blue(@header-background-color),1) 100%); background: linear-gradient(to bottom, rgba(255,255,255,1) 0%,rgba(red(@header-background-color), green(@header-background-color), blue(@header-background-color),1) 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='@header-background-color',GradientType=0 );
CSS参考はこちらのCSSグラデーション作成ページを利用しました。
遭遇したエラーメッセージ覚書
The identifier fID is missing for a query of Concrete\Core\File\File
画像ファイルの拡張子が間違っていたのが原因で「そんなものは存在しない」と怒られた。
ブロック開発
- concrete5.7 のブロック作り方サンプル
- concrete5ブロック開発(1)「ページトップへ戻る」ブロックを作る
- concrete5 のブロックタイプセットを程よく設定する方法 (上級編) (同解説の公式ページ)