alphalemon / theme-engine-bundle
ThemeEngineBundle为任何Symfony2应用程序添加主题功能,通过添加作为标准Symfony2 Bundles打包的主题
Requires
- alphalemon/al-pagetree-bundle: dev-master
- alphalemon/al-valum-uploader-bundle: dev-master
- phing/phing: >=2.4,<dev-master
- propel/propel-bundle: 2.0-dev
- propel/propel1: dev-master
- symfony/symfony: >=2.0.10,<dev-master
This package is not auto-updated.
Last update: 2024-09-28 11:59:03 UTC
README
ThemeEngineBundle旨在为任何Symfony2应用程序添加主题功能,解决与模板化相关的一些最困难的问题之一:在更改图形主题时保留内容。ThemeEngineBundle试图通过引入插槽来解决这个问题。插槽简单地是一个在twig模板上的占位符,通过名称标识,并作为twig函数实现。以下是一个示例
{{ renderSlot('logo') }}
此函数告诉twig渲染由名为"logo"的插槽识别的内容,仅此而已。下一步相当简单:保留在"logo"插槽中的内容将在每个调用占位符的模板中渲染。
由ThemeEngineBundle管理的主题不过是标准Symfony2 Bundles,因此每个主题都有自己的模板、配置和资产,打包成一个定义良好且已知的结构。
安装ThemeEngineBundle
ThemeEngine依赖于几个bundes和包
- PageTreeBundle
- AlValumUploaderBundle
- Propel ORM
- Propel Bundle
获取ThemeEngineBundle
将此包克隆到vendor/bundles/AlphaLemon目录下
git clone git://github.com/alphalemon/ThemeEngineBundle.git vendor/bundles/AlphaLemon/ThemeEngineBundle
配置ThemeEngineBundle
打开AppKernel配置文件,并将bundle添加到registerBundles()方法中
public function registerBundles()
{
$bundles = array(
...
new AlphaLemon\ThemeEngineBundle\AlphaLemonThemeEngineBundle(),
)
}
在app/autoload.php
中注册ThemeEngineBundle命名空间
$loader->registerNamespaces(array(
...
'AlphaLemon' => __DIR__.'/../vendor/bundles',
'Themes' => __DIR__.'/../vendor/bundles/AlphaLemon/ThemeEngineBundle',
));
将路由配置导入routing.yml文件
_alphaLemonThemeEngineBundle:
resource: "@AlphaLemonThemeEngineBundle/Resources/config/routing.yml"
为了完成bundle配置,必须按照以下方式安装资源
app/console assets:install web
配置propel
ThemeEngineBundle需要一个数据库来管理主题,并使用Propel作为预定义的ORM。要正确设置Propel与Symfony2,请遵循PropelBundle提供的优秀设置过程。当ORM正确配置后,运行以下命令
app/console propel:database:create
app/console propel:build
app/console propel:insert-sql --for
主题自动加载
ThemeEngineBundle提供了一个完整的Web界面来管理主题。如上所述,主题不过是symfony2 bundles,并且作为每个symfony2 bundle,它们必须在registerBundles()方法中加载。有时手动将每个bundle添加到AppKernel类可能是个麻烦事,所以如果你希望自动化此操作,该bundle提供了一个自动加载类,该类加载给定目录中放置的所有bundle
app/AppKernel.php
use AlphaLemon\ThemeEngineBundle\Core\Autoloader\ThemesAutoloader;
public function registerBundles()
{
$bundles = array(
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
...
);
$themes = new ThemesAutoloader();
$bundles = array_merge($bundles, $themes->getBundles());
}
是否使用此功能完全取决于你。如果你更喜欢手动将你的主题添加到AppKernel中,你可以像通常一样做。
教程
ThemeEngineBundle的使用详细教程可以在bundle自身的Resources/docs文件夹下找到。