かたつむりくんのWWW

MTAppjQuery v2.2.0 リリース - マルチフィールドが記事・ウェブページに対応

MTAppjQuery v2.2.0 をリリースしました。

マルチフィールドが「記事」「ウェブページ」でも利用可能に

このアップデートにより、マルチフィールドが「記事」「ウェブページ」でも利用できるようになりました。

Movable Type 7 のブロックエディタは記事とウェブページでは利用できないので、ぜひマルチフィールドの利用をご検討ください。

個人的には、MT 7 では「記事」「ウェブページ」は利用せずに「コンテンツデータ」に寄せていくのがいいと思っていたので初めは対応していませんでたが、実際の現場ではまだ「記事」は頻繁に利用されているようですので、今回対応させました。

マルチフィールドが「縦向きの固定テーブル」に対応

ご要望の多かった「1列目が項目名、2列目が入力欄で行を固定」という縦向きの固定テーブルに対応しました。

これで、これまで重宝されてきた MTAppJSONTable はその役目を終え、 mtapp.multiField を使っていくのが良いかなと思います。

そのほか、 mtapp.multiField で下記の対応を行いました。

  • フィールドを追加 ボタンの表示・非表示を制御する showAddFieldButton オプションを追加
  • 保存データを表示 ボタンの表示・非表示を制御する showViewRawDataButton オプションを追加

また、 MTAppAssetFields() を Movable Type 7 に対応しました。このメソッドは、プラグインの設定旧バージョンのメソッド有効 にすることで利用できます。

ダウンロード

すでにライセンスをお持ちの方は、サポートサイトの「製品ダウンロード」のページからダウンロードできます。

引き続きよろしくお願いいたします!

Craft CMS のプラグイン内のコードで日付フィールドのフォーマットを調整するには

Craft CMS のエントリーに日付型のフィールド(ハンドル名: deliverDate )を作ったとします。

これを Twig で 13 Sep, 2018 16:46 am のように出力するには下記のようにします。

{{ entry.deliverDate | date('d M, Y h:i a') }}

ここで使えるフォーマットは PHP: date - Manual となります。

続きを読む

Craft CMS のフロントエンドでログインユーザーが管理者(admin)かどうか判定する

Craft CMS のフロントエンドでログインユーザーが管理者(admin)かどうか判定するには下記のように UserModeladmin プロパティを使って判別します。

{% requireLogin %}
{% if currentUser.admin %}
  {# 管理者です #}
{% else %}
  {# トップへリダイレクトします #}
  {% redirect '/' %}
{% endif %}

MTAppjQuery v2.1.0 リリース - マルチフィールド、アセット・画像フィールドに対応

MTAppjQuery v2.1.0 をリリースしました。

このアップデートにより、マルチフィールドにおいて「アセット」フィールド、「画像」フィールドが利用できるようになりました。

もちろん、マルチフィールドの中の段組レイアウトのブロックにも使えますし、テーブルブロックの中でもお使いいただけます。

multifield-assets-min.png

今回のリリースでは下記の機能向上、修正を含みます。

mtapp.multiField()

  • オーバーレイ・リッチテキストがHTMLモードのまま保存した後に再編集できなくなるバグを修正
  • オーバーレイ・リッチテキストを編集した直後にHTMLモードに切り替えるとエディタの編集が反映されていないバグを修正
  • テーブル内でもオーバーレイ・リッチテキストを使えるようにした
  • 指定できるフィールドに「アセット」 asset と「画像」 image を追加しました。

.mtapp('inlineEdit')

  • 編集ボタンの左にマージンを追加

ダウンロード

すでにライセンスをお持ちの方は、サポートサイトの「製品ダウンロード」のページからダウンロードできます。

引き続きよろしくお願いいたします!

Craft CMS の Guest Entries プラグインを利用して PHP から POST して JSON を取得するには

Guest Entries for Craft CMS プラグインを使って PHP から POST 送信して新規エントリーを作成します。

この際、新規エントリーの作成に成功したら、作成されたエントリーに関する情報を JSON で欲しいときがあります。

初めは redirect パラメータを送信して JSON を出力するテンプレートにリダイレクトしようと思いましが、なぜか PHP からの POST ではリダイレクトが聞きませんでした。

そこで、Guest Entries では Ajax で POST 送信すれば JSON が返ってくる仕様なので、それを利用することにしました。

PHP で送信するヘッダーに、下記のように X-Requested-With を設定してあげれば Ajax で送信したように JSON が返ってきます。

$header = [
  'X-Requested-With: XMLHttpRequest',
  'Content-Type: multipart/form-data'
];

このヘッダーをセットして、あとは cURL で送信してあげれば OK です。

以上です。

Craft CMS のテンプレートで JSON を返す

例えば、 entry がセットされているときはエントリーの情報を、セットされていないときはエラーを返したいとします。

結論からいうと Twig テンプレートは次のようになります。

{% header 'Content-Type: application/json; charset=utf-8' %}
{% set response = { status: 'error' } %}
{% if entry is defined %}
    {% set response = {
        status: 'success',
        id: entry.id,
        title: entry.title,
        sectionId: entry.sectionId,
    } %}
{% endif %}
{{ response | json_encode() | raw }}

重要なのは先頭でヘッダーをセットすることと、出力するところで | json_encode() | raw を組み合わせるところです。

なお、Craft の場合は Element API for Craft CMS というプラグインで、自由に API を定義できます。 上記のようにテンプレートで実装するのが良いか、API で実装するのが良いか、要件と照らし合わせて選択したら良いと思います。

以上です。

DataAPIProxyを特定の管理画面のみに適用する方法(その2)

DataAPIProxyを特定の管理画面のみに適用する方法(その1)はこちらのぐっちーさんの記事をご覧ください。

ここでは別の方法をご紹介します。

続きを読む

Twig の macro に渡す引数はハッシュ(連想配列)の方が良さそう

Twig の Macro 使ってますか?すごく便利ですよね。

でも今までは下記のように普通に複数の引数で変数を渡していました。

{% macro input(label, sectionHandle, nameList, type, classList, placeholder, hint, appendFieldContent) %}
...template...
{% endmacro %}

でもこうやるよりも、

{% macro input(options) %}
    {% set label = attribute(options, 'label') %}
    {% set sectionHandle = attribute(options, 'sectionHandle') %}
    {% set nameList = attribute(options, 'nameList') %}
    {% set type = attribute(options, 'type') %}
    {% set classList = attribute(options, 'classList') %}
    {% set placeholder = attribute(options, 'placeholder') %}
    {% set hint = attribute(options, 'hint') %}
    {% set appendContent = attribute(options, 'appendContent') %}
    ...template...
{% endmacro %}

とやった方が、後から変更しやすくていい場合が多いですね。

以上です。

Craft CMS でフィールドに入力された URL が http で始まるときだけ別ウィンドウで開きたい

やりたいことはタイトルのままです。例えば、フィールドのハンドルが linkUrl だったとします( urllink は予約語となっていて使えません)。

このフィールドに入力された値が http で始まる場合だけ target="_blank" をつけたいとします。そうしておけば、内部リンクは相対パスで、外部リンクは絶対URLで入力するという運用ができますよね。

この条件分岐をしたい場合は、Twig の Comparisons(比較演算子)の中の matches を利用します。

<a href="{{ entry.linkUrl }}"{% if entry.linkUrl matches '/^http/' %} target="_blank"{% endif %}>
  {{ entry.linkText }}
</a>

matches を知っておくといろいろ便利になると思います。

That's all!

以上です。

Craft CMS の管理画面の画像フィールドのサムネイルを大きくするカスタマイズ

Craft CMS の画像フィールドのサムネイル、少し小さくないですか?

thumbnail-customize-min.png

画像はまだしも、ラベルがほとんど欠けていて見にくいですよね。

ということで、管理画面をカスタマイズしてみましょう。

続きを読む

MTAppjQuery v2.0.0 リリース - Movable Type 7 対応版

大変お待たせしました。先週、ようやく Movable Type 7 に対応した MTAppjQuery v2.0.0 をリリースしました。Movable Type 7 で管理画面がかなり変わったので、アップデート大変でした・・・!

今回のリリースでは、これまでのメソッドを残しつつ、新たに Vue.js をベースにした mtapp.multiField() というメソッドを加えたりしております。ぜひぜひ、MT 7 と共にみなさまのお役に立てれば幸いです。

現在、ドキュメントサイトを刷新していますので、そちらも急ぎます。

これからも MTAppjQuery をよろしくお願いいたします!

Craft CMS でアップロードできるファイルサイズの最大値を変更する

Craft 3 の Assets に動画をアップロードしようとしたところ、 16MBを超えているのでアップロードできませんよ〜 という警告が表示されてしまいました。

この案件で利用しているサーバーはエックスサーバーで、サーバーパネルの php.ini の設定を見たところ、 30M に設定されていました。はてさて、どうしたものかと調べて見ると、Craft CMS 自体のファイルアップロードの上限が 16MB に設定されていました。

したがって、Craft CMS でファイルアップロードの上限値を変更するには、

  1. php.ini を確認
  2. Craft の config/general.phpmaxUploadFileSize を設定

という流れになります。今回は、ドキュメントページのサンプルにある通り下記のように設定しました。

'maxUploadFileSize' => 33554432,

以上です。

MTAppjQuery v1.11.2 リリース - MTAppJSONTable のバグフィックス

MTAppjQuery v1.11.2 をリリースしました。

今回のリリースでは、MTAppJSONTablecellMerge オプションを利用した際にテーブルが崩れるバグを修正しました。

ダウンロードは下記からお願い致します。

余談ですが、現在 Movable Type 7 に対応した MTAppjQuery 2 を開発中です。

これからも MTAppjQuery をよろしくお願いいたします!

Craft 3 の動作環境を満たしているかをチェックするスクリプトが便利

先月リリースされた Craft 3 を利用するためのサーバーの必須環境を簡単にチェックするスクリプトが、Craft CMS の開発元より公開されています。

これがとても便利なので簡単にご紹介します。

続きを読む

Craft CMS( Twig )で動的なキーと値で連想配列を作成する

今回は Craft CMS( Twig )で動的なキーと値で連想配列を作成する方法をご紹介します。Craft CMS を例にしていますが、Twig 全般のお話です。

前回の記事 に引き続き、Craft CMS で下記のような設定のドロップダウンフィールドを作成したとします。フィールドのハンドルは player です。

ドロップダウンの設定

これの設定を元にして、ドロップダウンの値を キー 、ドロップダウンのラベルを にした連想配列を動的に作る方法をご紹介します。作成したい連想配列の形は下記のような形です。

{
    'baggio': 'ロベルト・バッジョ',
    'cruyff': 'ヨハン・クライフ',
    'zico':   'ジーコ'
}

続きを読む

Craft CMS でドロップダウンフィールドの設定を利用してフロント側で select 要素を書き出す

Craft CMS で下記のような設定のドロップダウンフィールドを作成したとします。フィールドのハンドルは player です。

ドロップダウンの設定

これを元にして、公開側で select を書き出す方法をご紹介します。検索フォームを作るときなどに便利だと思います。

続きを読む

Craft CMS で月別アーカイブを実装する

今回は Craft CMS で、2017 年 12 月の記事一覧ページを、 /blog/2018/12 という URL で表示したいとします。

Rooting の設定

Dynamic Routes を参考に Rooting を設定します。リンク先にも書いてありますが、ここでの設定は / スラッシュで始まらないようにしましょう。

続きを読む

Craft CMS ですべてのエントリーを取得したり動的なキーの連想配列を作ったり数を出力したりする Tips

この記事は「Craft CMS Advent Calendar 2017」の 14 日目の記事です。今日は Craft CMS の基本的なお話になります。

Craft CMS でエントリーの情報を取得するとき、例えばセクションのハンドル名が blog だったとすると、下記のように取得できます。

{% set blogs = craft.entries.section('blog') %}

続きを読む

絶対役立つ Craft CMS のプラグイン 12 選

この記事は「Craft CMS Advent Calendar 2017」の12日目の記事です。

今年はいくつかの案件で Craft CMS を使ってサイトを作りました。その際に利用した便利なプラグインをご紹介します。

なお、下記のプラグインは Craft CMS 2 を前提にしています。これらのうち、すでに Craft 3 への対応も始まっているプラグインもありますので、Craft 3 で利用したい場合は調べてみるといいでしょう。

続きを読む

管理画面でもMTタグを入力補完できる Alfred Snippets を作りました

こんにちは。この記事は「 Movable Type Advent Calendar 2017 - Adventar 」の 6 日目の記事です。Movable Type のアドベントカレンダーで 6 年連続で 12 月 6 日に書かせていただいております。Movable Type 7 の Developer Preview 版の公開からもうすぐ2ヶ月。時が経つのは本当に早いですね。

MTML Snippets

さて、bit part では、MTMLのタグを補完するツールをいくつか公開していますが、それらは IntelliJ IDEA や ATOM など、何かしらのエディタのプラグインでした。でも実際に Movable Type でサイトを運用していると、管理画面で直接テンプレートを編集したいというケースも意外と多くありませんか?

今年はそんなあなたにクリスマスプレゼントを。Alfred の Power Pack で利用できる Alfred Snippets を作りました。Alfred Snippets なのでアプリを問わず、いつでもどこでも MT タグの入力を支援してくれます!Mac ユーザー限定のプレゼントですみません。。。

続きを読む