Pickles 2

メインコンフィグ config.php

Pickles 2 の動きを制御する設定項目について説明します。

INDEX

メインコンフィグのパス

メインコンフィグは、次のパスに置かれたphpファイルです。

/px-files/config.php

このPHPは、設定情報を格納するオブジェクトを返すように記述してください。

PHPファイルの代わりに、JSON形式の config.json を置く方法もあります。

相対パスの起点

設定項目の中には、サーバーの内部パスを設定する項目がいくつかあり、絶対パス、または相対パスで設定することができます。

相対パスで設定する場合、PHPのカレントディレクトリ = エントリースクリプト .px_execute.php があるディレクトリを起点として解釈されます。

設定項目

サイト名 $conf->name

サイト名称を設定します。

キャッチフレーズ $conf->tagline

サイトのキャッチフレーズを設定します。

コピーライト表記 $conf->copyright

サイトの著作権者表示名を設定します。

「©」マークや、あとに続く 「All rights reserved」 などの文言は含まず、著作権の発生年と、著作権者名 のみを設定してください。

/** コピーライト表記 */
$conf->copyright = '2001-2023 Pickles Project';

デフォルト言語コード $conf->default_lang

/** デフォルトの言語 */
$conf->default_lang = 'ja';

対応言語コード $conf->accept_langs

/** 対応する言語 */
$conf->accept_langs = array('en');

スキーマ $conf->scheme

本番環境のスキーマ名を、http または https のいずれかで設定します。デフォルトは https です。

ドメイン $conf->domain

本番環境のドメイン名を設定します。 デフォルトは null です。

コンテンツルートディレクトリ $conf->path_controot

Pickles 2 は、サブディレクトリ内で稼働することができます。

コンテンツルートディレクトリは、Pickles 2 のサイトがドキュメントルート直下にない場合に、コンテンツのルートディレクトリを指定します。

デフォルトは / です。

トップページのパス $conf->path_top

通常、トップページは、コンテンツルートの直下の /index.html、省略して / に置きますが、この前提は $conf->path_top によって変更することができます。 コンテンツルート $conf->path_controot を起点として、/ から始まるパスを指定します。

デフォルトは / です。

パブリッシュ先ディレクトリパス $conf->path_publish_dir

静的にパブリッシュされたファイルを出力する先のディレクトリを、サーバー内部パスで設定します。

Pickles 2 のパブリッシュツールは、 px-files/_sys/ram/publish/ に一時ファイルとして保存したあと、$conf->path_publish_dir に指示されたディレクトリにコピーします。

この設定に、$conf->path_controot 分は含めません。

null を設定すると、px-files/_sys/ram/publish/ への一時ファイルのみが出力されます。

公開キャッシュディレクトリ $conf->public_cache_dir

公開キャッシュディレクトリのパスを指定します。

コンテンツルート $conf->path_controot を起点として、/ から始まるパスを指定します。

リソースディレクトリのパス $conf->path_files

リソースディレクトリは、各コンテンツに対して1:1で関連付けられる専有ディレクトリです。

次の部品を組み合わせて、書き換え後のパスの構成規則を指定します。

  • {$dirname} = 変換前のパスの、ディレクトリ部分
  • {$filename} = 変換前のパスの、拡張子を除いたファイル名部分
  • {$ext} = 変換前のパスの、拡張子部分

コンテンツルート $conf->path_controot を起点として、/ から始まるパスを指定します。

// 例:
$conf->path_files = '{$dirname}/{$filename}_files/';

または次のように、コールバックメソッドを指定します。

$conf->path_files = function($path){
    $path = preg_replace('/.html?$/s', '_files/', $path);
    return $path;
};

コールバックメソッドには、 引数 $path が渡されます。 これを加工して、書き換え後のパスを返してください。

コンテンツマニフェスト のパス $conf->contents_manifesto

コンテンツマニフェスト ファイルのパスを指定します。

コンテンツルート $conf->path_controot を起点として、/ から始まるパスを指定します。

コンテンツマニフェスト については、こちらを参照してください。

コマンドのパス $conf->commands

Pickles 2 は、内部の処理として、コマンドを実行することがあります。 例えば、 php コマンド、 composer コマンド、 git コマンド などです。

パブリッシュツールは、内部で php コマンドを通じてページを実行し、出力されるHTMLを収集する仕組みでできています。パブリッシュツールも、$conf->commands->php を参照しています。

それぞれコマンドのパスが通っている場合は問題になりませんが、そうでない場合は、コマンドが実行できずエラーになることがあります。

その場合には、 $conf->commands->{コマンド名} = ${コマンドのパス} の形で、コマンドの絶対パスを設定してください。

// 例:
$conf->commands = new stdClass;
$conf->commands->php = '/opt/homebrew/bin/php';

php.ini のパス $conf->path_phpini

内部コマンドとして php コマンドを呼び出すときに、 コマンドラインオプション -c として渡されます。

ディレクトリインデックスファイル名 $conf->directory_index

$conf->directory_index = array(
    'index.html'
);

パスのパターン別の処理方法 $conf->paths_proc_type

  • ignore : 対象外パス。Pickles 2 のアクセス可能範囲から除外します。このパスへのアクセスは拒絶され、パブリッシュの対象からも外されます。
  • direct : 物理ファイルを、ファイルとして読み込んでから加工処理を通します。 (direct以外の通常の処理は、PHPファイルとして include() されます)
  • pass : 物理ファイルを、そのまま無加工で出力します。 (デフォルト)
  • その他 : extension 名

パターンは先頭から検索され、はじめにマッチした設定を採用します。 ワイルドカードとして * (アスタリスク) が使用可能です。 部分一致ではなく、完全一致で評価されます。従って、ディレクトリ以下すべてを表現する場合は、 /* で終わるようにしてください。

extension は、 $conf->funcs->processor に設定し、設定した順に実行されます。 例えば、 '*.html' => 'html' にマッチしたリクエストは、 $conf->funcs->processor->html に設定したプロセッサのリストに沿って、上から順に処理されます。

// 例:
$conf->paths_proc_type = array(
    '/.htaccess' => 'ignore' ,
    '/.px_execute.php' => 'ignore' ,
    '/px-files/*' => 'ignore' ,
    '/composer.json' => 'ignore' ,
    '/composer.lock' => 'ignore' ,
    '/README.md' => 'ignore' ,
    '/vendor/*' => 'ignore' ,
    '*/.DS_Store' => 'ignore' ,
    '*/Thumbs.db' => 'ignore' ,
    '*/.svn/*' => 'ignore' ,
    '*/.git/*' => 'ignore' ,
    '*/.gitignore' => 'ignore' ,
    '*.ignore/*' => 'ignore' ,
    '*.ignore.*' => 'ignore' ,
    '*.pass/*' => 'pass' ,
    '*.pass.*' => 'pass' ,
    '*.direct/*' => 'direct' ,
    '*.direct.*' => 'direct' ,

    '*.html' => 'html' ,
    '*.htm' => 'html' ,
    '*.css' => 'css' ,
    '*.js' => 'js' ,
    '*.png' => 'pass' ,
    '*.jpg' => 'pass' ,
    '*.gif' => 'pass' ,
    '*.svg' => 'pass' ,
);

サイトマップのロードを有効にするパスのパターン $conf->paths_enable_sitemap

サイトマップのロードを有効にするパスのパターンを設定します。 ワイルドカードとして * (アスタリスク) が使用可能です。

サイトマップ中のページ数が増えると、サイトマップのロード自体に時間を要する場合があります。 サイトマップへのアクセスが必要ないファイルでは、この処理はスキップするほうがよいでしょう。

多くの場合では、 *.html*.htm 以外ではロードする必要はありません。

// 例:
$conf->paths_enable_sitemap = array(
    '*.html',
    '*.htm',
);

ファイルに適用されるデフォルトのパーミッション $conf->file_default_permission

Pickles 2 によって新規で作成されるファイルに適用する、デフォルトのパーミッション番号を設定します。

// 例:
$conf->file_default_permission = '775';

ディレクトリに適用されるデフォルトのパーミッション $conf->dir_default_permission

Pickles 2 によって新規で作成されるディレクトリに適用する、デフォルトのパーミッション番号を設定します。

// 例:
$conf->dir_default_permission = '775';

ファイルシステムの文字セット $conf->filesystem_encoding

ファイル名にマルチバイト文字を使う場合に参照されます。

出力文字エンコーディング名 $conf->output_encoding

最終的に生成されるHTMLやCSS、JSなどのテキストファイルに適用するエンコーディング名を設定します。

// 例:
$conf->output_encoding = 'UTF-8';

出力改行コード名 $conf->output_eol_coding

最終的に生成されるHTMLやCSS、JSなどのテキストファイルに適用する改行コード名を設定します。

cr, lf, crlf のいずれかの文字列から指定します。

// 例:
$conf->output_eol_coding = 'lf';

セッション名 $conf->session_name

Pickles 2 が発行するセッションCookieの名前を設定します。

// 例:
$conf->session_name = 'PXSID';

セッションの有効期間 $conf->session_expire

Pickles 2 が発行するセッションCookieの有効期限を設定します。

秒を表す数値で設定します。

// 例:
$conf->session_expire = 1800;

Cookieのデフォルトのドメイン $conf->cookie_default_domain

Cookieを送信するデフォルトのドメイン名を設定します。

Cookieのデフォルトの有効パス $conf->cookie_default_path

Cookieを送信するデフォルトのパスを設定します。

Cookieのデフォルトの有効期間 $conf->cookie_default_expire

Cookieを送信するデフォルトの有効期限を設定します。

タイムゾーン $conf->default_timezone

システムのタイムゾーンを設定します。

// 例:
$conf->default_timezone = 'Asia/Tokyo';

PXコマンド のウェブインターフェイスからの実行を許可 $conf->allow_pxcommands

※ 注意 :
PXコマンドは、Pickles 2 を便利に使うためのさまざまな機能を提供します。 (例:パブリッシュ機能 ?PX=publish) PXコマンドはサーバー内部の情報にアクセスしたり、 サーバー上のデータを書き換えるインターフェイスを提供する場合があるため、第3者にアクセスされると大変キケンです。

Pickles 2 をインターネット上のサーバーで使用する場合には、次のことに注意してください。

  • ウェブ制作環境として利用する場合、利用基本認証やIP制限などの処理を施し、一般のユーザーがアクセスできない場所に設置してください。
  • または、Pickles 2 上に構築したウェブアプリケーションをサービスとして公開する場合、この値を 0 に設定し、PXコマンド機能を無効にしてください。(この場合でも、CLIからの実行は許可されます)
// 例:
$conf->allow_pxcommands = 0;

ただし、 Pickles 2 Clover CMS (pickles2/px2-clover) を使用する場合は、 $conf->allow_pxcommands1 に設定する必要があります。 Pickles 2 Clover CMS は、すべてのPXコマンドに対して認証を求めるため、安全に使用することができます。

サイトマップキャッシュ生成時に一度にINSERTするページ数 $conf->sitemap_cache_db_insert_unit_size

サイトマップCSVを更新すると、Pickles Framework は次にそれを読み込んで、キャッシュを生成します。 サイトマップキャッシュの一部は、SQLiteを用いたファイルベースのデータベースに保存されます。 $conf->sitemap_cache_db_insert_unit_size は、このときにデータベースに一度に挿入するページ数を設定します。 この設定はサイトマップキャッシュ生成時のパフォーマンスに影響します。

この設定は、 Pickles Framework v2.1.19 で追加されました。

拡張機能 $conf->funcs

コンテンツの処理を拡張する機能を登録します。

拡張機能は、呼び出されるタイミングに応じて、$conf->funcs->before_sitemap$conf->funcs->before_content$conf->funcs->processor$conf->funcs->before_output の4種類に分けられます。それぞれ、配列で PHPクラス名::静的メソッド名({プラグインオプション}) の形で設定します。

// 例:
$conf->funcs->before_sitemap = array(
    'foo\bar\hoge::fuga({"param1":"value1"})',
}

より詳しい情報は、プラグインの内容が有用です。

Composer を通じて外部からインストールした機能をプラグインとして適用することもできます。 具体的な設定方法は、プラグインによって異なる場合があります。 詳しくは各プラグインのドキュメントを参照してください。

サイトマップの読み込み前 $conf->funcs->before_sitemap

サイトマップを処理する前に呼び出す機能を登録します。

コンテンツの読み込み前 $conf->funcs->before_content

コンテンツを処理する前に呼び出す機能を登録します。

拡張子別コンテンツ加工処理 $conf->funcs->processor

コンテンツの加工処理を登録します。 $conf->funcs->processor の処理は、拡張子ごとに登録します。 例えば、 $conf->funcs->processor->html に登録した処理は、*.html の拡張子を持つコンテンツにのみ適用され、 それ以外の CSS や JavaScript などのファイルには適用されません。

最終出力前 $conf->funcs->before_output

出力の直前に呼び出す機能を登録します。

コンテンツの拡張子に関わらずすべてのファイルに適用されます。

プラグインに対する設定 $conf->plugins

個別のプラグインの動作に影響する設定を行います。 プラグイン自体の組み込みは $conf->funcs に対して行います。 $conf->plugins では、プラグインの設定のみを指示します。

Pickles 2 Desktop Tool 関連設定 $conf->plugins->px2dt

当初、Pickles 2 Desktop Tool (babycorn) の動作をサポートする pickles2/px2-px2dthelper の設定項目として設けられたものですが、現在では 他の種類のツールからも参照されています。

詳しくは こちらを参照してください。

プロジェクト固有設定 $conf->extra

プロジェクトが固有に定義する設定を行います。 $conf->extra 内の構造に決まりはなく、個々のプロジェクトのために予約された領域です。 プロジェクトごとに、自由に設計して活用してください。

// 例:
$conf->extra = new stdClass;
$conf->extra->hoge = "fuga";
$conf->extra->hello = "world";

サンプルコード

<?php
/**
 * config.php template
 */
return call_user_func( function(){

    // initialize

    /** コンフィグオブジェクト */
    $conf = new stdClass;


    // project

    /** サイト名 */
    $conf->name = 'Get start "Pickles 2" !';

    /** キャッチフレーズ */
    $conf->tagline = 'A Static Opensource CMS';

    /** コピーライト表記 */
    $conf->copyright = '2001-2023 Pickles Project';

    /**
     * スキーマ
     * 本番環境のスキーマ
     * (例: http, https)
     */
    $conf->scheme = 'https';

    /**
     * ドメイン
     * 本番環境のドメイン
     * (例: www.example.com, 192.168.0.1, www.example.com:8080, etc...)
     */
    $conf->domain = 'pickles2.com';

    /** デフォルトの言語 */
    $conf->default_lang = 'ja';

    /** 対応する言語 */
    $conf->accept_langs = array('en');


    // paths

    /** コンテンツルートディレクトリ */
    $conf->path_controot = '/';

    /** トップページのパス(デフォルト "/") */
    $conf->path_top = '/';

    /** パブリッシュ先ディレクトリパス */
    $conf->path_publish_dir = './px-files/dist/';

    /** 公開キャッシュディレクトリ */
    $conf->public_cache_dir = '/common/px_resources/';

    /**
     * リソースディレクトリ(各コンテンツに対して1:1で関連付けられる)のパス
     *
     * 次の部品を組み合わせて、書き換え後のパスの構成規則を指定します。
     * - `{$dirname}` = 変換前のパスの、ディレクトリ部分
     * - `{$filename}` = 変換前のパスの、拡張子を除いたファイル名部分
     * - `{$ext}` = 変換前のパスの、拡張子部分
     *
     * または次のように、コールバックメソッドを指定します。
     * ```
     * $conf->path_files = function($path){
     *  $path = preg_replace('/.html?$/s', '_files/', $path);
     *  return $path;
     * };
     * ```
     * コールバックメソッドには、 引数 `$path` が渡されます。
     * これを加工して、書き換え後のパスを返してください。
     */
    $conf->path_files = '{$dirname}/{$filename}_files/';

    /** Contents Manifesto のパス */
    $conf->contents_manifesto = '/common/contents_manifesto.ignore.php';


    /**
     * commands
     *
     * Pickles2 が認識するコマンドのパスを設定します。
     * コマンドのパスが通っていない場合は、絶対パスで設定してください。
     */
    $conf->commands = new stdClass;
    $conf->commands->php = 'php';

    /**
     * php.ini のパス
     *
     * 主にパブリッシュ時のサブクエリで使用します。
     */
    $conf->path_phpini = null;


    /**
     * directory index
     *
     * `directory_index` は、省略できるファイル名のリストを設定します。
     * 複数指定可能です。
     *
     * この一覧にリストされたファイル名に対するリンクは、ファイル名なしのURLと同一視されます。
     * ファイル名が省略されたアクセス(末尾が `/` の場合)に対しては、
     * 最初のファイル名と同じものとして処理します。
     */
    $conf->directory_index = array(
        'index.html'
    );


    /**
     * paths_proc_type
     *
     * パスのパターン別に処理方法を設定します。
     *
     * - ignore = 対象外パス。Pickles 2 のアクセス可能範囲から除外します。このパスへのアクセスは拒絶され、パブリッシュの対象からも外されます。
     * - direct = 物理ファイルを、ファイルとして読み込んでから加工処理を通します。 (direct以外の通常の処理は、PHPファイルとして `include()` されます)
     * - pass = 物理ファイルを、そのまま無加工で出力します。 (デフォルト)
     * - その他 = extension名
     *
     * パターンは先頭から検索され、はじめにマッチした設定を採用します。
     * ワイルドカードとして "*"(アスタリスク) が使用可能です。
     * 部分一致ではなく、完全一致で評価されます。従って、ディレクトリ以下すべてを表現する場合は、 `/*` で終わるようにしてください。
     *
     * extensionは、 `$conf->funcs->processor` に設定し、設定した順に実行されます。
     * 例えば、 '*.html' => 'html' にマッチしたリクエストは、
     * $conf->funcs->processor->html に設定したプロセッサのリストに沿って、上から順に処理されます。
     */
    $conf->paths_proc_type = array(
        '/.htaccess' => 'ignore' ,
        '/.px_execute.php' => 'ignore' ,
        '/px-files/*' => 'ignore' ,
        '*.ignore/*' => 'ignore' ,
        '*.ignore.*' => 'ignore' ,
        '/composer.json' => 'ignore' ,
        '/composer.lock' => 'ignore' ,
        '/README.md' => 'ignore' ,
        '/vendor/*' => 'ignore' ,
        '*/.DS_Store' => 'ignore' ,
        '*/Thumbs.db' => 'ignore' ,
        '*/.svn/*' => 'ignore' ,
        '*/.git/*' => 'ignore' ,
        '*/.gitignore' => 'ignore' ,

        '*.html' => 'html' ,
        '*.htm' => 'html' ,
        '*.css' => 'css' ,
        '*.js' => 'js' ,
        '*.png' => 'pass' ,
        '*.jpg' => 'pass' ,
        '*.gif' => 'pass' ,
        '*.svg' => 'pass' ,
    );


    /**
     * paths_enable_sitemap
     *
     * サイトマップのロードを有効にするパスのパターンを設定します。
     * ワイルドカードとして "*"(アスタリスク) が使用可能です。
     *
     * サイトマップ中のページ数が増えると、サイトマップのロード自体に時間を要する場合があります。
     * サイトマップへのアクセスが必要ないファイルでは、この処理はスキップするほうがよいでしょう。
     *
     * 多くの場合では、 *.html と *.htm 以外ではロードする必要はありません。
     */
    $conf->paths_enable_sitemap = array(
        '*.html',
        '*.htm',
    );


    // system

    /** ファイルに適用されるデフォルトのパーミッション */
    $conf->file_default_permission = '775';

    /** ディレクトリに適用されるデフォルトのパーミッション */
    $conf->dir_default_permission = '775';

    /** ファイルシステムの文字セット。ファイル名にマルチバイト文字を使う場合に参照されます。 */
    $conf->filesystem_encoding = 'UTF-8';

    /** 出力文字エンコーディング名 */
    $conf->output_encoding = 'UTF-8';

    /** 出力改行コード名 (cr|lf|crlf) */
    $conf->output_eol_coding = 'lf';

    /** セッション名 */
    $conf->session_name = 'PXSID';

    /** セッションの有効期間 */
    $conf->session_expire = 1800;

    /** タイムゾーン */
    $conf->default_timezone = 'Asia/Tokyo';

    /**
     * PX Commands のウェブインターフェイスからの実行を許可
     *
     * ※ 注意 :
     * PXコマンドは、Pickles 2 を便利に使うためのさまざまな機能を提供します。
     * (例:パブリッシュ機能 `?PX=publish`)
     * PXコマンドはサーバー内部の情報にアクセスしたり、
     * サーバー上のデータを書き換えるインターフェイスを提供する場合があるため、
     * 第3者にアクセスされると大変キケンです。
     * 
     * Pickles 2 をインターネット上のサーバーで動かす場合には、次のことに注意してください。
     * 
     * - ウェブ制作環境として利用する場合、利用基本認証やIP制限などの処理を施し、
     *   一般のユーザーがアクセスできない場所に設置してください。
     * - または、Pickles 2 上に構築したウェブアプリケーションをサービスとして公開する場合、
     *   この値を 0 に設定し、PXコマンド機能を無効にしてください。(この場合でも、CLIからの実行は許可されます)
     */
    $conf->allow_pxcommands = 0;



    // -------- functions --------

    $conf->funcs = new stdClass;

    /**
     * funcs: Before sitemap
     *
     * サイトマップ読み込みの前に実行するプラグインを設定します。
     */
    $conf->funcs->before_sitemap = array(
        // PX=clearcache
        'picklesFramework2\commands\clearcache::register' ,

        // PX=config
        'picklesFramework2\commands\config::register' ,

        // PX=phpinfo
        'picklesFramework2\commands\phpinfo::register' ,

        // sitemapExcel
        'tomk79\pickles2\sitemap_excel\pickles_sitemap_excel::exec('.json_encode(array(
            // `master_format`
            // マスターにするファイルフォーマットを指定します。
            //   - `timestamp` = タイムスタンプが新しい方をマスターにする(デフォルト)
            //   - `xlsx` = XLSXをマスターにする
            //   - `csv` = CSVをマスターにする
            //   - `pass` = 変換しない
            // のいずれかを指定します。
            'master_format'=>'xlsx',

            // `files_master_format`
            // ファイル名ごとにマスターにするファイルフォーマットを指定します。
            // ここに設定されていないファイルは、 `master_format` の設定に従います。
            'files_master_format'=>array(
                // 'timestamp_sitemap'=>'timestamp',
                // 'csv_master_sitemap'=>'csv',
                // 'xlsx_master_sitemap'=>'xlsx',
                // 'no_convert'=>'pass',
            ),
        )).')' ,
    );

    /**
     * funcs: Before content
     *
     * サイトマップ読み込みの後、コンテンツ実行の前に実行するプラグインを設定します。
     */
    $conf->funcs->before_content = array(
        // PX=api
        'picklesFramework2\commands\api::register' ,

        // PX=publish (px2-publish-ex)
        'tomk79\pickles2\publishEx\publish::register' ,

        // PX=px2dthelper
        'tomk79\pickles2\px2dthelper\main::register' ,
    );


    /**
     * processor
     *
     * コンテンツの種類に応じた加工処理の設定を行います。
     * `$conf->funcs->processor->{$paths_proc_typeに設定した処理名}` のように設定します。
     * それぞれの処理は配列で、複数登録することができます。処理は上から順に実行されます。
     *
     * Tips: テーマは、html に対するプロセッサの1つとして実装されています。
     */
    $conf->funcs->processor = new stdClass;

    $conf->funcs->processor->html = array(
        // ページ内目次を自動生成する
        'picklesFramework2\processors\autoindex\autoindex::exec' ,

        // px2-path-resolver - 共通コンテンツのリンクやリソースのパスを解決する
        //   このAPIは、サイトマップCSV上で path と content が異なるパスを参照している場合に、
        //   相対的に記述されたリンクやリソースのパスがあわなくなる問題を解決します。
        'tomk79\pickles2\pathResolver\main::resolve_common_contents()' ,

        // テーマ
        'theme'=>'tomk79\pickles2\multitheme\theme::exec('.json_encode(array(
            'param_theme_switch'=>'THEME',
            'cookie_theme_switch'=>'THEME',
            'path_theme_collection'=>'./px-files/themes/',
            'attr_bowl_name_by'=>'data-contents-area',
            'default_theme_id' => 'gui_sample',
        )).')' ,

        // Apache互換のSSIの記述を解決する
        'picklesFramework2\processors\ssi\ssi::exec' ,

        // DEC変換処理の実行
        //   Pickles2の状態を参照し、自動的に処理を振り分けます。
        //   パブリッシュする場合、DECコメントを削除します。
        //   プレビューの場合、DECライブラリを埋め込み、
        //   URIパラメータからDECの表示・非表示を切り替えられるようにします。
        'tomk79\pickles2\dec\main::exec()' ,

        // 属性 data-contents-area を削除する
        'tomk79\pickles2\remove_attr\main::exec('.json_encode(array(
            "attrs"=>array(
                'data-contents-area',
            ) ,
        )).')' ,

        // broccoli-receive-message スクリプトを挿入
        'tomk79\pickles2\px2dthelper\broccoli_receive_message::apply('.json_encode( array(
            // 許可する接続元を指定
            'enabled_origin'=>array(
            )
        ) ).')' ,
    );

    $conf->funcs->processor->css = array(
    );

    $conf->funcs->processor->js = array(
    );

    $conf->funcs->processor->md = array(
        // Markdown文法を処理する
        'picklesFramework2\processors\md\ext::exec' ,

        // html のデフォルトの処理を追加
        $conf->funcs->processor->html ,
    );

    $conf->funcs->processor->scss = array(
        // SCSS文法を処理する
        'picklesFramework2\processors\scss\ext::exec' ,

        // css のデフォルトの処理を追加
        $conf->funcs->processor->css ,
    );


    /**
     * funcs: Before output
     *
     * 最終出力の直前で実行される処理を設定します。
     * この処理は、拡張子によらずすべてのリクエストが対象です。
     * (HTMLの場合は、テーマの処理の後のコードが対象になります)
     */
    $conf->funcs->before_output = array(
        // px2-path-resolver - 相対パス・絶対パスを変換して出力する
        //   options
        //     string 'to':
        //       - relate: 相対パスへ変換
        //       - absolute: 絶対パスへ変換
        //       - pass: 変換を行わない(default)
        //     bool 'supply_index_filename':
        //       - true: 省略されたindexファイル名を補う
        //       - false: 省略できるindexファイル名を削除
        //       - null: そのまま (default)
        'tomk79\pickles2\pathResolver\main::exec('.json_encode(array(
            'to' => 'absolute' ,
            'supply_index_filename' => false
        )).')' ,

        // output_encoding, output_eol_coding の設定に従ってエンコード変換する。
        'picklesFramework2\processors\encodingconverter\encodingconverter::exec('.json_encode(array(
            'ext'=>array( // 対象の拡張子。省略時はすべてのリクエストが適用される。
                'html',
                'htm',
                'css',
                'js',
            ),
        )).')' ,

    );


    // -------- config for Plugins. --------
    // その他のプラグインに対する設定を行います。
    $conf->plugins = new stdClass;

    /** config for Pickles 2 Desktop Tool. */
    $conf->plugins->px2dt = new stdClass;

    /**
     * GUIエディタのエンジンの種類
     * - `legacy` = 旧GUI編集ツール。(廃止)
     * - `broccoli-html-editor` = NodeJSで実装された broccoli-html-editor を使用。
     * - `broccoli-html-editor-php` = PHPで実装された broccoli-html-editor を使用。
     */
    $conf->plugins->px2dt->guiEngine = 'broccoli-html-editor-php';

    /** broccoliモジュールセットの登録 */
    $conf->plugins->px2dt->paths_module_template = array(
        // 'moduleId' => './path/to/module/',
    );

    /** プロジェクト固有のモジュールセットの格納ディレクトリ */
    $conf->plugins->px2dt->path_module_templates_dir = "./px-files/modules/";

    /** コンテンツエリアを識別するセレクタ(複数の要素がマッチしてもよい) */
    $conf->plugins->px2dt->contents_area_selector = '[data-contents-area]';

    /** コンテンツエリアのbowl名を指定する属性名 */
    $conf->plugins->px2dt->contents_bowl_name_by = 'data-contents-area';

    /** パブリッシュのパターンを登録 */
    $conf->plugins->px2dt->publish_patterns = array(
        array(
            'label'=>'すべて',
            'paths_region'=> array('/'),
            'paths_ignore'=> array(),
            'keep_cache'=>false
        ),
        array(
            'label'=>'リソース類',
            'paths_region'=> array('/common/'),
            'paths_ignore'=> array(),
            'keep_cache'=>true
        ),
        array(
            'label'=>'すべて(commonを除く)',
            'paths_region'=> array('/'),
            'paths_ignore'=> array('/common/'),
            'keep_cache'=>false
        ),
    );

    /** config for GUI Editor. */
    $conf->plugins->px2dt->guieditor = new stdClass;

    /** GUI編集データディレクトリ */
    // $conf->plugins->px2dt->guieditor->path_data_dir = '{$dirname}/{$filename}_files/guieditor.ignore/';

    /** GUI編集リソース出力先ディレクトリ */
    // $conf->plugins->px2dt->guieditor->path_resource_dir = '{$dirname}/{$filename}_files/resources/';


    // -------- Project Custom Setting --------
    // プロジェクトが固有に定義する設定を行います。
    $conf->extra = new stdClass;


    // -------- PHP Setting --------

    /**
     * `memory_limit`
     *
     * PHPのメモリの使用量の上限を設定します。
     * 正の整数値で上限値(byte)を与えます。
     *
     *     例: 1000000 (1,000,000 bytes)
     *     例: "128K" (128 kilo bytes)
     *     例: "128M" (128 mega bytes)
     *
     * -1 を与えた場合、無限(システムリソースの上限まで)に設定されます。
     * サイトマップやコンテンツなどで、容量の大きなデータを扱う場合に調整してください。
     */
    // @ini_set( 'memory_limit' , -1 );

    /**
     * `display_errors`, `error_reporting`
     *
     * エラーを標準出力するための設定です。
     *
     * PHPの設定によっては、エラーが発生しても表示されない場合があります。
     * もしも、「なんか挙動がおかしいな?」と感じたら、
     * 必要に応じてこれらのコメントを外し、エラー出力を有効にしてみてください。
     *
     * エラーメッセージは問題解決の助けになります。
     */
    // @ini_set('display_errors', 1);
    // @ini_set('error_reporting', E_ALL);


    return $conf;
} );