alphalemon/theme-engine-bundle

ThemeEngineBundle为任何Symfony2应用程序添加主题功能,通过添加作为标准Symfony2 Bundles打包的主题

安装次数: 1,888

依赖项: 1

建议者: 0

安全: 0

星标: 7

关注者: 2

分叉: 1

开放问题: 1

类型:symfony-bundle

1.2.0 2012-03-11 15:58 UTC

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,因此每个主题都有自己的模板、配置和资产,打包成一个定义良好且已知的结构。

Build Status

安装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文件夹下找到。