△一般的なレシピ

Grav全般に関する問題点とその解決策を紹介

PHP CLI のバージョンを変更する

ターミナル上では、PHPのバージョンがWebサーバーで使用されているPHPのバージョンと異なることがあります。

PHP のバージョンが 5.5.9 未満の場合、Grav は最低でも PHP 5.5.9 を必要とするため、動作しないことがあります。

修正方法は?

ユーザーホームフォルダの.bashrcや .bash_profileに何らかの設定を入力する必要があります。ユーザーフォルダにまだない場合は、これらのファイルを作成してください。これらは隠しファイルなので、ls -alで表示させる必要があるかもしれません。設定を追加したら、その設定を適用するために、新しいターミナル・セッションを開始する必要があります。

構成例としては、以下のようなものが考えられます。

alias php="/usr/local/bin/php53"
export PHP_PATH = /usr/local/bin/php53

別の方法として、追加することもできます。

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=/usr/local/lib/php-5.5/bin:$PATH:$HOME/bin

export PATH

正確なパスは、利用するサーバーの設定に依存するため利用しているサーバーのドキュメントを参照すると見つかるかもしれません。

usr/local/bin または /usr/local/lib フォルダ下の php-something ファイルまたはフォルダを、ls -la /usr/local/lib/ |grep -i php で探してみることもできます。

シンプルなギャラリーの作成

問題

ページ上に何らかのギャラリーを表示することが求められることがあります。ペットの写真を表示したり、過去実績のデザイン作品をポートフォリオを表示したり、あるいはお客さんに表示・販売したい製品のタログを表示したりすることができます。この例では、たくさんの写真とその下にキャプションを表示することを想定しています。もちろん、他の用途にも応用できます。

解決策

この問題を解決する最もシンプルな方法は、Gravのメディア機能を利用することです。ページがそのフォルダで利用可能な画像を見つけることができます。

gallery.mdと呼ばれるページがあり、同じディレクトリに様々な画像があると仮定します。ファイル名自体は重要ではなく、それぞれの画像に対して繰り返し処理を行うだけです。各画像に関連するデータを追加したいので、各画像にmeta.yamlファイルを含めます。例えば、いくつかの画像があるとします。

- fido-playing.jpg
- fido-playing.jpg.meta.yaml
- fido-sleeping.jpg
- fido-sleeping.jpg.meta.yaml
- fido-eating.jpg
- fido-eating.jpg.meta.yaml
- fido-growling.jpg
- fido-growling.jpg.meta.yaml

それぞれの.jpgファイルは、1280px x 720pxというフルサイズにふさわしい比較的良いサイズです。meta.yamlファイルにはそれぞれいくつかの重要なエントリーが含まれていますが、fido-playing.jpg.meta.yaml を見てみましょう。

title: 骨で遊ぶワンちゃん
description: 新しい骨を手に入れたワンちゃんは、その骨の虜になってしまいました。.

このメタ・ファイルに何を入れるかは、完全に自由です。

次に、これらの画像を時系列に逆順に表示し、最新の画像を最初に表示します。このページの名前は gallery.md なので、適切な templates/gallery.html.twig を作成し、必要なレンダリングロジックを格納する必要があります。

{% extends 'partials/base.html.twig' %}

{% block content %}
    {{ page.content|raw }}

    <ul>
    {% for image in page.media.images %}
    <li>
        <div class="image-surround">
            {{ image.cropResize(300,200).html|raw }}
        </div>
        <div class="image-info">
            <h2>{{ image.meta.title }}</h2>
            <p>{{ image.meta.description }}</p>
        </div>
    </li>
    {% endfor %}
    </ul>

{% endblock %}

ギャラリーを別のページ内に表示するためには、Twigファイルから以下のコードを削除してください。

{% extends 'partials/base.html.twig' %}

{% block content %}
    {{ page.content|raw }}

{% endblock %}

次のセクションでは、ページ内の画像であるすべてのメディアを単純にループしています。各画像に image という変数名を割り当て、cropResize() メソッドを適用してサイズを変更し、その下にタイトルと 説明を表示する方法を説明します。

画像の EXIF 情報を利用してカメラデータのフィルターを作成することで、より高度なギャラリーの実装が可能です。

★★ 途中 ★★