pickles2/px2-multitheme

px2-multitheme 为 Pickles 2 添加了管理多个主题的功能。

2.1.1 2023-02-11 08:20 UTC

This package is auto-updated.

Last update: 2024-08-30 01:12:19 UTC


README

px2-multitheme 为 Pickles2 添加了管理多个主题的功能。

安装方法 - 设置

设置 Pickles 2。

composer.json 同级目录下,执行以下命令:

composer require pickles2/px2-multitheme

接下来,在 px-files/config.php 中添加设置。

$conf->funcs->processor->html = [
	// テーマ
	'theme'=>'tomk79\pickles2\multitheme\theme::exec' ,
];

配置选项 - 配置选项

主题切换的参数名 - param_theme_switch

设置用作主题切换的 GET 参数名。默认为 THEME

存储主题名的cookie名 - cookie_theme_switch

设置存储切换后主题名的cookie名。默认为 THEME

布局切换的参数名 - param_layout_switch

设置用作布局切换的 GET 参数名。默认为 LAYOUT

主题集合目录 - path_theme_collection

设置包含主题的目录的路径。相对路径的起点是 .px_execute.php 所在的路径。

默认值为 ./px-files/themes/

px2-multitheme 还会搜索 vendor 目录中加载的包的列表,并将实现了主题的包添加为选择候选项。

存储 bowl 名(内容区域名)的属性名 - attr_bowl_name_by

这是 Pickles2DesktopTool 的 GUI 编辑功能对应的设置。Pickles2DesktopTool 会根据这里设置的属性值从 bowl 名中获取内容,并按 GUI 编辑界面的结构进行操作。默认为 data-contents-area

默认主题 ID - default_theme_id

默认应用的主题的 ID。初始值为 default

如果指定了主题集合目录中定义的主题,则如 theme_id 之类的目录名,如果从 composer 包指定主题,则如 vendorname/packagename 之类的、用斜杠分隔的包名进行设置。

选项 - options

设置主题单独定义的选项值。可设置的选项因主题而异。有关详细信息,请参阅各个主题的文档。

配置选项实现示例 - 配置示例

$conf->funcs->processor->html = [
	// テーマ
	'theme'=>'tomk79\pickles2\multitheme\theme::exec('.json_encode([
		'param_theme_switch'=>'THEME',
		'cookie_theme_switch'=>'THEME',
		'param_layout_switch'=>'LAYOUT',
		'path_theme_collection'=>'./px-files/themes/',
		'attr_bowl_name_by'=>'data-contents-area',
		'default_theme_id'=>'pickles2',
		'options'=>array(
			'pickles2'=>array( // テーマ pickles2 に対するオプション
				'sample_param'=>'hoge' // テーマ側からは、 `$theme->get_option('sample_param')` で受け取ることができます。
			)
		)
	]).')'
];

主题实现

每个主题都作为目录安装在主题集合目录的底部。例如,名为 sample 的主题将在目录 <theme_collection_dir>/sample/ 中实现。

在主题目录的底部,可以按照 (布局名).html 的命名规则定义多个布局。

规定的布局有 default.html (=默认), popup.html, top.html, plain.html, naked.html,并在网站地图 CSV 的 layout 列中指定名称进行选择。有关此用法,请参阅 Pickles 2 的文档。

主题布局中可用的主要 API

Pickles 2 的 API

Pickles 2 提供的 API 中,在主题实现中经常使用的 API 有以下几种。有关详细用法,请参阅 Pickles 2 的 API 文档

  • $px->href()
  • $px->mk_link()
  • $px->conf()
  • $px->bowl()->pull()
  • $px->site()->get_current_page_info()
  • $px->site()->get_children()
  • $px->site()->is_page_in_breadcrumb()
  • $px->site()->path_plugin_files()
  • $px->site()->get_category_top()

px2-multitheme 提供的 API

除了 Pickles 2 中的功能之外,px2-multitheme 还提供了一些独特的 API。

  • $theme->get_option()
  • $theme->get_layout()
  • $theme->get_attr_bowl_name_by()
  • $theme->files()
  • $theme->mk_global_menu()
  • $theme->mk_shoulder_menu()
  • $theme->mk_sub_menu()
  • $theme->mk_megafooter_menu()
  • $theme->mk_breadcrumb()

theme_files

在主题文件夹的底部设置目录 theme_files/,可以将主题特有的资源文件(图像或 CSS 等)放在这里。

theme_files 中放置的文件将在 Pickles 2 的公开缓存目录(默认为 /caches/*) 中创建副本,并可以通过浏览器访问。

从主题调用这些文件时,请按以下方式实现。

<p>'theme_files/hoge/fuga.png' を呼び出す</p>
<img src="<?= htmlspecialchars( $theme->files('/hoge/fuga.png') ); ?>" alt="" />

主题包的公开

主题可以作为独立的包在 Packagist 等处公开。

/theme/default.html 中设置默认布局。 /theme/ 以下的配置与主题集合相同。

更新日志 - 变更日志

pickles2/px2-multitheme v2.1.1 (2023年2月11日)

  • 内部代码的微小修正。

pickles2/px2-multitheme v2.1.0 (2022年1月8日)

  • 将支持的 PHP 版本更改为 >=7.3.0
  • 支持 PHP 8.1。

pickles2/px2-multitheme v2.0.6 (2018年8月30日)

  • 修复了细微的错误。

pickles2/px2-multitheme v2.0.5 (2018年1月24日)

  • 添加了新的设置项目 $param_layout_switch。通过 GET 参数可以暂时切换布局并显示。
  • 可以使用 ./theme_files/〜〜 这样的描述来访问主题资源。 $theme->files() 会自动调用并替换。

pickles2/px2-multitheme v2.0.4 (2017年7月28日)

  • 修复了在同时访问不同主题时资源路径混用的问题。

pickles2/px2-multitheme v2.0.3 (2017年7月11日)

  • $theme 中的非主题模板实现方法的方法从 $theme 中分离并隐藏。
  • 添加了 $theme->files()
  • 可以通过 px2package 引用来搜索主题。

pickles2/px2-multitheme v2.0.2 (2016年7月27日)

  • 当面包屑上存在当前页面时,不会变成链接。
  • 在选择错误的主题 ID 时,会以假主题包裹并返回页面。
  • 其他错误修复和性能提升。

pickles2/px2-multitheme v2.0.1 (2016年6月30日)

  • 更改了本地导航的生成规则:面包屑上没有的页面的子元素不会打开。

pickles2/px2-multitheme v2.0.0 (2016年3月4日)

  • 初版发布。

许可 - License

MIT 许可证

作者 - Author

开发者信息 - for Developer

测试 - Test

$ php ./vendor/phpunit/phpunit/phpunit