PowerCMS X ver.3.0では非常にたくさんの新機能が追加されているとともに、ライブラリの管理方法が一部変更になりました。ver.3.0へのアップグレードについてまとめます。
アップグレード前にはデータベースとソースファイル一式のバックアップを必ずお願いします。
一部のプラグインが利用するモジュールについて、これまでPowerCMS Xのパッケージに同梱していたものの一部を composer経由のインストールに変更しています。対象のプラグイン・ライブラリは以下の通りです。
また、新プラグイン「AWS_S3」「AWS_CloudFront」では、AWS SDK for PHP (aws/aws-sdk-php
) をcomposerを利用してインストールする必要があります。
予め、環境変数「composer_autoload」に vendor/autoload.php へのパスを指定しておいてください。
{
"require": {
"phpoffice/phpword": "dev-master",
"twilio/sdk": "dev-main"
}
}
$ composer update
$ composer require aws/aws-sdk-php
https://example.com/powercmsx/api/ 配下のリクエストを https://example.com/powercmsx/api/index.php に渡すように設定します。パスはカスタマイズ可能です。その場合はindex.php内のパスを環境にあわせて書き換えてください。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
その後、利用するモデル、利用するスコープで「APIを有効化」にチェックを入れて設定を保存してください。
PowerCMS X ver.3.0のテンプレートエンジン PAML3では、タグデリミタのカスタマイズによって、Mustache, Twig, Smartyライクな記述が可能になり、変数のスコープの指定やタグ属性への配列やハッシュの指定が簡単になるなど多数の変更があり、一部 if文の評価結果や値の取得結果が従来と異なる可能性があるため、デフォルトでは従来バージョンが利用されるようになっています。環境変数の指定によって新しいバージョンを選択できるようになります。
新しいテンプレートエンジンを利用するには環境変数「paml_version」に「3」を指定、タグデリミタで他のテンプレートエンジンライクな記述を利用するためには「tag_delimiter」にMustache, Twig, Smartyのいずれかを指定します(※paml_versionは管理画面の環境変数では設定できません)。
"paml_version" : 3,
"tag_delimiter" : "Mustache",
{% let entries.0.title="記事タイトル0" %}
{% let entries.0.text="記事本文0" %}
{% let entries.1.title="記事タイトル1" %}
{% let entries.1.text="記事本文1" %}
{% for entry in entries %}
{{ entry.title }}
{{ entry.text }}
{% endfor %}
{{let entries.0.title="記事タイトル0"}}
{{let entries.0.text="記事本文0"}}
{{let entries.1.title="記事タイトル1"}}
{{let entries.1.text="記事本文1"}}
{{#foreach entries as entry}}
{{entry.title}}
{{entry.text}}
{{/foreach}}
{let entries.0.title="記事タイトル0"}
{let entries.0.text="記事本文0"}
{let entries.1.title="記事タイトル1"}
{let entries.1.text="記事本文1"}
{foreach entries as entry}
{$entry.title}
{$entry.text}
{{/foreach}}
<mt:let entries.0.title="記事タイトル0">
<mt:let entries.0.text="記事本文0">
<mt:let entries.1.title="記事タイトル1">
<mt:let entries.1.text="記事本文1">
<mt:for entry in entries>
<mt:var name="entry.title">
<mt:var name="entry.text">
</mt:for>
もしくは
<mt:foreach entries as entry>
<mt:var name="entry.title">
<mt:var name="entry.text">
</mt:foreach>