{"id":33969832,"url":"https://github.com/pickles2/px2-multitheme","last_synced_at":"2026-04-07T04:32:01.751Z","repository":{"id":28991684,"uuid":"32518427","full_name":"pickles2/px2-multitheme","owner":"pickles2","description":"px2-multitheme は、複数のテーマを同時に管理する機能を Pickles 2 に追加します。","archived":false,"fork":false,"pushed_at":"2025-07-29T12:22:38.000Z","size":1251,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-14T12:44:09.138Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pickles2.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-03-19T11:53:02.000Z","updated_at":"2025-07-29T12:22:46.000Z","dependencies_parsed_at":"2025-03-17T17:39:18.851Z","dependency_job_id":"1eca14cf-e521-4d7f-b9d1-f6f5556b9a4f","html_url":"https://github.com/pickles2/px2-multitheme","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/pickles2/px2-multitheme","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pickles2%2Fpx2-multitheme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pickles2%2Fpx2-multitheme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pickles2%2Fpx2-multitheme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pickles2%2Fpx2-multitheme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pickles2","download_url":"https://codeload.github.com/pickles2/px2-multitheme/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pickles2%2Fpx2-multitheme/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31500397,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-13T00:02:12.064Z","updated_at":"2026-04-07T04:32:01.746Z","avatar_url":"https://github.com/pickles2.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"pickles2/px2-multitheme\n==============\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003eLinux\u003c/th\u003e\n      \u003cth\u003eWindows\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003emaster\u003c/th\u003e\n      \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://travis-ci.org/pickles2/px2-multitheme\"\u003e\u003cimg src=\"https://secure.travis-ci.org/pickles2/px2-multitheme.svg?branch=master\"\u003e\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://ci.appveyor.com/project/tomk79/px2-multitheme\"\u003e\u003cimg src=\"https://ci.appveyor.com/api/projects/status/04h4o82cuavxmkwk/branch/master?svg=true\"\u003e\u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003edevelop\u003c/th\u003e\n      \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://travis-ci.org/pickles2/px2-multitheme\"\u003e\u003cimg src=\"https://secure.travis-ci.org/pickles2/px2-multitheme.svg?branch=develop\"\u003e\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://ci.appveyor.com/project/tomk79/px2-multitheme\"\u003e\u003cimg src=\"https://ci.appveyor.com/api/projects/status/04h4o82cuavxmkwk/branch/develop?svg=true\"\u003e\u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\n*px2-multitheme* は、複数のテーマを同時に管理する機能を [Pickles2](http://pickles2.pxt.jp/) に追加します。\n\n\n## 導入方法 - Setup\n\nPickles 2 をセットアップします。\n\n`composer.json` と同階層に移動し、次のコマンドを実行します。\n\n```\ncomposer require pickles2/px2-multitheme\n```\n\n次に、`px-files/config.php` に設定を記述します。\n\n```php\n$conf-\u003efuncs-\u003eprocessor-\u003ehtml = [\n\t// テーマ\n\t'theme'=\u003e'tomk79\\pickles2\\multitheme\\theme::exec' ,\n];\n```\n\n## コンフィグオプション - Config Options\n\n### テーマ切り替えのパラメータ名 - param_theme_switch\n\nテーマ切り替えスイッチとして使用するGETパラメータ名を設定します。デフォルトは `THEME` です。\n\n### テーマ名を記憶するクッキー名 -  cookie_theme_switch\n\n切り替えたテーマ名を記憶するクッキー名を設定します。デフォルトは `THEME` です。\n\n### レイアウト切り替えのパラメータ名 - param_layout_switch\n\nレイアウト切り替えスイッチとして使用するGETパラメータ名を設定します。デフォルトは `LAYOUT` です。\n\n### テーマコレクションディレクトリ - path_theme_collection\n\nテーマ格納ディレクトリのパスを設定します。\n相対パスの起点は、`.px_execute.php` が置かれているパスです。\n\n初期値は `./px-files/themes/` です。\n\npx2-multitheme はこのディレクトリの他にも、vendor ディレクトリにロードされたパッケージの一覧を検索し、theme が実装されたパッケージを選択候補に加えます。\n\n### bowl名(コンテンツエリア名)を格納する属性名 - attr_bowl_name_by\n\nPickles2DesktopTool のGUI編集機能に対応する設定です。Pickles2DesktopTool は、ここに設定した属性の値からbowl名を取得し、GUI編集画面の構成するように振る舞います。\nデフォルトは `data-contents-area` です。\n\n### デフォルトのテーマID - default_theme_id\n\nデフォルトで適用するテーマのIDです。初期値は `default` です。\n\nテーマコレクションディレクトリに定義されたテーマを指定する場合は `theme_id` などの様にディレクトリ名を、composerパッケージからテーマを指定する場合は `vendorname/packagename` のように、スラッシュで区切られたパッケージ名を設定します。\n\n### オプション - options\n\nテーマが個別に定義するオプション値を設定します。\n設定できるオプションはテーマによって異なります。詳しくは各テーマのドキュメントを参照してください。\n\n\n### コンフィグオプションの実装例 - Config Sample\n\n```php\n$conf-\u003efuncs-\u003eprocessor-\u003ehtml = [\n\t// テーマ\n\t'theme'=\u003e'tomk79\\pickles2\\multitheme\\theme::exec('.json_encode([\n\t\t'param_theme_switch'=\u003e'THEME',\n\t\t'cookie_theme_switch'=\u003e'THEME',\n\t\t'param_layout_switch'=\u003e'LAYOUT',\n\t\t'path_theme_collection'=\u003e'./px-files/themes/',\n\t\t'attr_bowl_name_by'=\u003e'data-contents-area',\n\t\t'default_theme_id'=\u003e'pickles2',\n\t\t'options'=\u003earray(\n\t\t\t'pickles2'=\u003earray( // テーマ pickles2 に対するオプション\n\t\t\t\t'sample_param'=\u003e'hoge' // テーマ側からは、 `$theme-\u003eget_option('sample_param')` で受け取ることができます。\n\t\t\t)\n\t\t)\n\t]).')'\n];\n\n```\n\n\n## テーマの実装\n\n各テーマは、テーマコレクションディレクトリの直下にディレクトリとして設置します。 例えば、 `sample` という名前のテーマは、 ディレクトリ `\u003ctheme_collection_dir\u003e/sample/` の中に実装されます。\n\nテーマディレクトリの直下には、 `(レイアウト名).html` という命名規則で、複数のレイアウトを定義できます。\n\n規定のレイアウトは、 `default.html` (=デフォルト), `popup.html`, `top.html`, `plain.html`, `naked.html` があり、 サイトマップCSV の `layout` 列に名前を指定して選択します。この使い方については、Pickles 2 のドキュメントを参照してください。\n\n### テーマレイアウトで使える主なAPI\n\n#### Pickles 2 の API\n\nPickles 2 が提供するAPIのうち、テーマの実装でよく利用するAPIには、次のものがあります。 詳しい使い方は、Pickles 2 の [APIドキュメント](http://pickles2.pxt.jp/phpdoc/) を参照してください。\n\n- `$px-\u003ehref()`\n- `$px-\u003emk_link()`\n- `$px-\u003econf()`\n- `$px-\u003ebowl()-\u003epull()`\n- `$px-\u003esite()-\u003eget_current_page_info()`\n- `$px-\u003esite()-\u003eget_children()`\n- `$px-\u003esite()-\u003eis_page_in_breadcrumb()`\n- `$px-\u003esite()-\u003epath_plugin_files()`\n- `$px-\u003esite()-\u003eget_category_top()`\n\n#### px2-multitheme が提供する API\n\nPickles 2 にある機能の他に、 px2-multitheme の独自のAPIも提供されます。\n\n- `$theme-\u003eget_option()`\n- `$theme-\u003eget_layout()`\n- `$theme-\u003eget_attr_bowl_name_by()`\n- `$theme-\u003efiles()`\n- `$theme-\u003emk_global_menu()`\n- `$theme-\u003emk_shoulder_menu()`\n- `$theme-\u003emk_sub_menu()`\n- `$theme-\u003emk_megafooter_menu()`\n- `$theme-\u003emk_breadcrumb()`\n\n\n### theme_files\n\nテーマフォルダの直下に ディレクトリ `theme_files/` を設置すると、ここにテーマ固有のリソースファイル(画像やCSSなど)を置くことができます。\n\n`theme_files` に置かれたファイルは、 Pickles 2 の公開キャッシュディレクトリ(デフォルトでは `/caches/*`) の中に複製が作られ、ブラウザから参照できるようになります。\n\nテーマからこれらのファイルを呼び出す場合、次のように実装してください。\n\n```php\n\u003cp\u003e'theme_files/hoge/fuga.png' を呼び出す\u003c/p\u003e\n\u003cimg src=\"\u003c?= htmlspecialchars( $theme-\u003efiles('/hoge/fuga.png') ); ?\u003e\" alt=\"\" /\u003e\n```\n\n\n\n## テーマパッケージの公開\n\nテーマは、独立したパッケージとして Packagist などで公開できます。\n\n`/theme/default.html` に、デフォルトのレイアウトをセットしてください。 `/theme/` 以下の構成は、テーマコレクションと同じです。\n\n\n## 更新履歴 - Change log\n\n### pickles2/px2-multitheme v2.2.0 (2025年7月29日)\n\n- kflow形式のテーマを処理できるようになった。\n\n### pickles2/px2-multitheme v2.1.2 (2025年4月3日)\n\n- 同梱のプラグインが、より直接的な表現で設定できるようになった。\n- `$theme-\u003erealpath_theme_dir()` を追加した。\n\n### pickles2/px2-multitheme v2.1.1 (2023年2月11日)\n\n- 内部コードの細かい修正。\n\n### pickles2/px2-multitheme v2.1.0 (2022年1月8日)\n\n- サポートするPHPのバージョンを `\u003e=7.3.0` に変更。\n- PHP 8.1 に対応した。\n\n### pickles2/px2-multitheme v2.0.6 (2018年8月30日)\n\n- 細かい不具合の修正。\n\n### pickles2/px2-multitheme v2.0.5 (2018年1月24日)\n\n- 新しい設定項目 `$param_layout_switch` を追加。 GETパラメータで一時的にレイアウトを切り替えて表示できるようになった。\n- `./theme_files/〜〜` という記述でテーマリソースにアクセスできるようになった。 `$theme-\u003efiles()` が暗黙的に呼ばれ、置き換えられる。\n\n### pickles2/px2-multitheme v2.0.4 (2017年7月28日)\n\n- 異なるテーマで同時アクセスしたときに、リソースのパスが混在する問題を修正。\n\n### pickles2/px2-multitheme v2.0.3 (2017年7月11日)\n\n- テーマテンプレートの実装を助ける目的ではないメソッドを `$theme` から分離して隠蔽した。\n- `$theme-\u003efiles()` を追加。\n- `px2package` を参照してテーマを検索するようになった。\n\n### pickles2/px2-multitheme v2.0.2 (2016年7月27日)\n\n- パンくず上にカレントページがある場合に、リンクではなくなるようになった。\n- 誤ったテーマIDを選択した場合に、仮のテーマに包んで画面を返すようになった。\n- その他、不具合の修正とパフォーマンス向上。\n\n### pickles2/px2-multitheme v2.0.1 (2016年6月30日)\n\n- ローカルナビゲーションの生成ルールを変更： パンくず上にないページの子要素は開かないようにした。\n\n### pickles2/px2-multitheme v2.0.0 (2016年3月4日)\n\n- 初版リリース。\n\n\n## ライセンス - License\n\nMIT License\n\n\n## 作者 - Author\n\n- Tomoya Koyanagi \u003ctomk79@gmail.com\u003e\n- website: \u003chttps://www.pxt.jp/\u003e\n- Twitter: @tomk79 \u003chttps://twitter.com/tomk79/\u003e\n\n\n## 開発者向け情報 - for Developer\n\n### テスト - Test\n\n```\n$ php ./vendor/phpunit/phpunit/phpunit\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpickles2%2Fpx2-multitheme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpickles2%2Fpx2-multitheme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpickles2%2Fpx2-multitheme/lists"}