カスタマイズ

5.7用覚書

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

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

ブロック開発

他覚書

  • この記事を書いた人

ゆず

忘れないように自分の覚書と、誰かも困っているかもしれないので参考になればいいなくらいの軽い備忘録です。
一杯おごる

-カスタマイズ
-