Pickles 2 の動きを制御する設定項目について説明します。
メインコンフィグは、次のパスに置かれたphpファイルです。
./px-files/config.php
このPHPは、設定情報を格納するオブジェクトを返すように実装してください。
PHPファイルの代わりに、JSON形式の config.json
を置く方法もあります。
<?php
/**
* config.php template
*/
return call_user_func( function(){
// initialize
/** コンフィグオブジェクト */
$conf = new stdClass;
// project
/** サイト名 */
$conf->name = 'Get start "Pickles 2" !';
/** コピーライト表記 */
$conf->copyright = 'Pickles Project';
/**
* スキーマ
* 本番環境のスキーマ
* (例: http, https)
*/
$conf->scheme = 'https';
/**
* ドメイン
* 本番環境のドメイン
* (例: www.example.com, 192.168.0.1, www.example.com:8080, etc...)
*/
$conf->domain = null;
/** コンテンツルートディレクトリ */
$conf->path_controot = '/';
// paths
/** トップページのパス(デフォルト "/") */
$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;
} );