kappa/themes-manager

用于简化主题操作的包

dev-master 2016-06-13 19:30 UTC

This package is auto-updated.

Last update: 2020-01-10 15:03:19 UTC


README

用于简化主题操作的包

需求

安装

使用 Composer 安装 Kappa\ThemesManager 是最佳方式

$ composer require kappa/themes-manager:@dev

用法

首先必须注册扩展

extensions:
	themes: Kappa\ThemesManager\DI\ThemesManagerExtension

现在您可以在配置文件中配置应用程序的模板

themes:
	themeName:
		themeDir: %wwwDir%/../../ # required
		assetsDir: :themeDir:/assets # required
		params:
			# params
		helpers:
			# helpers in format helperName: @service::method
		macros:
			# macros
		pathMasks:
			templates:
				# path masks for formatTemplateFiles
			layouts:
				# path masks for formatLayoutTemplateFiles

所有设置将仅在自己的部分中生效。

在模板中可以使用以下占位符

  • :themeDir: - 包含主题目录路径
  • :assetsDir: - 包含资产目录路径,用于创建临时副本并将其复制到公共目录。在模板中,现在可以使用 {$assetsDir} 变量作为脚本、样式等文件的基准路径
  • :presenter: - 包含表示者名称(不带模块)
  • :modules: - 包含模块名称(模块名称 My:Module 将被替换为 My/Module)
  • :module_(number): - 包含模块名称(My:Module => module_1 = My, module_2 => Module)
  • :action: - 包含表示者动作名称
  • :view: - 包含表示者视图名称
  • :themeName: - 将被替换为主题名称

在您的表示者中,您可以获取模板工厂和文件格式

使用 kdyby/autowired建议使用

class BasePresenter extends Presenter
{
	use AutowireProperties;

	/**
	 * @var \Kappa\ThemesManager\Theme
	 * @autowire(admin, factory=\Kappa\ThemesManager\ThemeRegistry)
	 */
	public $theme;

或经典方式

class BasePresenter extends Presenter
{
	/** @var \Kappa\ThemesManager\ThemesRegistry @inject */
	public $themesRegistry;

更新模板

public function getTemplateFactory()
{
	$templateFactory = parent::createTemplate();
	// For kdyby/autowired
	$templateFactory->setTheme($this->theme);
	// Else
	$theme = $this->themesRegistry->getTheme('admin');
	$templateFactory->setTheme($theme);

    return $templateFactory;
}

现在您的表示者具有来自配置文件中定义的 'themeName' 部分的宏、助手和参数

接下来,您可以使用自定义路径掩码。例如

public function formatLayoutTemplateFiles()
{
    $list = $this->theme->getPathMapper()->getFormatLayoutTemplateFiles();

    return $list;
}

public function formatTemplateFiles()
{
    $list = $this->theme->getPathMapper()->getFormatTemplateFiles();

    return $list;
}