5.7用覚書

      2017/08/17

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);
?>

引数が使えなくなっている?のが残念。。。

画像の表示

公式サイトの説明からの覚書。
画像がレスポンシブのコードで出力されるかは、まず前提としてテーマがレスポンシブ画像をサポートしているかによる。

        $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

画像ファイルの拡張子が間違っていたのが原因で「そんなものは存在しない」と怒られた。

ブロック開発

他覚書

 - カスタマイズ