Download the PHP package boke0/boke0ick_mecha without Composer
On this page you can find all versions of the php package boke0/boke0ick_mecha. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download boke0/boke0ick_mecha
More information about boke0/boke0ick_mecha
Files in boke0/boke0ick_mecha
Package boke0ick_mecha
Short Description マイクロフレームワークで、気持ちいいCMS作ってみました。
License GPL-3.0-or-later
Informations about the package boke0ick_mecha
ボケマリック機構
モダンなAPI実装を目指したPHP製CMSです。 Twig(PythonのJinjaと同じ文法のテンプレートエンジン)用のHTMLを用いてテーマを作成でき、 Markdownで記事を書くことができます。
設定ファイルを記述することでテーマやルーティングをページごとに細かく設定できる柔軟さが作者なりの売りです。
インストール方法
Composerを使う
GitとComposerを使う
ディレクトリ構造
サイトの構造の設定
URL設計はcontents/struct.jsonに記述します。
上記の設定では、以下のようにルーティングされます
URLの例 | テーマ | 適用されるテンプレート | 記事のパス |
---|---|---|---|
/ | default | index.tpl.html | contents/__index.md |
/about | default | about.tpl.html | contents/about.md |
/article/0001 | hoge | article.tpl.html | contents/article/0001.md |
/news/001 | hoge | article.tpl.html | contents/n/files/001.md |
例の用に、基本的にはURLと同じルールで記事ファイルを参照します。 例外的なルールを適用したい場合は、ruleディレクティブを指定してください。
contentsにおける参照先がディレクトリの場合は、そのディレクトリの__index.mdをロードします。
記事の投稿
記事はMarkdownを用いて記述してください。
このとき、HugoなどでもサポートされているYAML形式のFrontMatterを記述し、メタ情報を設定することができます。
テーマのインストール
themes/ディレクトリにディレクトリごとコピーしてください。
プラグインのインストール
plugins/ ディレクトリにプラグインのディレクトリごとコピーしてください。 このとき、 plugins/<プラグイン名>/_construct.php というパスに \_construct.php が設置されるようにしてください。
テーマ作成
テーマは themes/ ディレクトリ内にディレクトリを作成し、 その中にtwig用のHTMLテンプレートファイルを設置するだけで作成することができます。
テーマの公開
テーマのソースコードを公開したい場合は、 テーマのディレクトリごとGitで管理してしまうことをおすすめします。 そうすることで、利用者は themes/ ディレクトリ下でリポジトリをcloneするだけで利用を始めることができます。
テーマで独自の素材を利用したい場合は、テーマのディレクトリ内に素材を設置し、以下のURIを指定してください。
プラグイン開発
プラグインは plugins/ ディレクトリ内にディレクトリを作成し、 その中にPHPファイルを設置することで作成できます。
プラグインのディレクトリ内には、最低限 __construct.php を設置する必要があります。ボケマリック機構本体からはこのファイルが呼び出され、 このファイルに記述されている通りにプラグインの挙動を設定します。
デフォルトで設置されているSamplePluginを例に解説します。
プラグインの名前空間はPsr-4に従い、 Boke0\Mechanism\Plugins\<プラグイン名> としてください。
このプログラム内で一つの Boke0\Mechanism\Api\Plugin クラスを継承したオブジェクトを作成し、 拡張機能を設定してオブジェクトを返却してください。
API使用
ボケマリック機構から提供されているAPIを紹介します。初版では、
- 独自のエンドポイントの作成
- テンプレートエンジンの拡張
の2つの機能が搭載されています。
エンドポイントの作成
任意のURLにおいて特定のクラスメソッドを実行するように設定することができます。
エンドポイントを作成するときは、 Boke0\Mechanism\Api\Endpoint を継承したクラスを定義してください。
例のように、ドキュメントコメントでパスを設定しましょう。 パスだけでなく、リクエスト時のメソッドも設定することができます。
クラスはPSR-15で定められているRequestHandlerインターフェースを実装している必要があります。 EndpointクラスにはPSR-7準拠のレスポンスオブジェクトを生成するメソッド Endpoint::createResponse($status_code,$reason); が定義されているので、これを呼び出してレスポンスを返却してください。
また、Endpoint::twig($filename,$placeholder,$status_code,$reason)メソッドを用いることで、Twigでテンプレートを描画したレスポンスを直接取得することができます。 ここで用いられるTwigはプラグインのディレクトリのtpl/ディレクトリを参照します。 また、csrf_field()関数をコールすることで、ボケマリック機構本体に適用されているCSRF対策を利用することができます。
プラグインのエンドポイントで独自の素材を利用したい場合は、/assetsディレクトリ内に素材を設置し、以下のURIを指定してください。
テンプレートはプラグインのディレクトリ内のtpl/ディレクトリのファイルを参照します。
テンプレートエンジンの拡張
ボケマリック機構内でレンダリング時に使用されるTwigに対し、 拡張機能(TwigExtension)を設定できます。 Twigでサポートされている拡張方法であればここでも適用することができます。 以下に、
と実行すると
と表示されるテンプレートエンジン拡張の例を示します。
Twigの拡張を行うときは、 Boke0\Mechanism\Api\TemplateExtension クラスを継承したクラスを定義してください。
プラグインの公開
テーマのソースコードを公開したい場合は、 こちらもテーマと同様にGitを使用することをおすすめします。
All versions of boke0ick_mecha with dependencies
boke0/clavicle Version ^1.6
boke0/scapula Version ^1.6
boke0/rose Version ^1.2
twig/twig Version ^3.0
mnapoli/front-yaml Version ^1.6
erusev/parsedown-extra Version ^0.7.1
cosmicvelocity/media-types Version >=1.0