symedit/theme-bundle

此包最新版本(v0.11)没有提供许可证信息。

Symfony2 主题

安装: 10

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 0

公开问题: 0

类型:symfony-bundle

v0.11 2015-11-06 18:31 UTC

This package is auto-updated.

Last update: 2024-09-24 09:00:57 UTC


README

symedit_theme:
    theme_directory: %kernel.root_dir%/../themes
    public_directory: themes
    active_theme: default
    templates:
        bundles: [AcmeDemoBundle]

主题包将从 `{theme_directory}/{active_theme}/templates` 文件夹加载模板。它还允许您使用本地assetic文件。主题由简单的YAML定义组成(在theme.yml中)

name: default
parent: base
title: Default Theme
description: Default Theme for all websites
stylesheets:
    filters: [cssrewrite]
    inputs:
       - 'bundles/acmedemo/bootstrap/css/bootstrap.min.css'
       - 'bundles/acmedemo/css/font-awesome.min.css'
       - '@AcmeDemoBundle/Resources/less/site.less'
       - 'css/site.less' # Taken from /{active_theme}/css/site.less
javascripts:
    # Same as stylesheets
    inputs: []

现在您可以在模板中使用CSS如下

{% stylesheets '@theme_css' %}
<link rel="stylesheet" href="{{ asset_url }}">
{% endstylesheets %}

您还可以在那里包含其他样式表,@theme_css 主要用于访问主题内部的本地资源。其他包的任何包资产都可以混合使用

{% stylesheets
    '@theme_css'
    '@AcmeDemoBundle/Resources/less/site.less' %}
<link rel="stylesheet" href="{{ asset_url }}">
{% endstylesheets %}

这同样适用于javascripts,您可以通过assetic使用 @theme_js 获取它。

父主题

您可以将您的主题设置为具有父主题(应该是主题的slug,并且主题位于 %theme_dir%/{theme_name}/theme.yml)。如果您的主题有父主题,则这些模板是第二个要使用的。之后是覆盖。如果您使用覆盖如 "Framework",则引用的模板如:@Framework/template.html.twig 将使用您的主题目录来查找模板。同样,如果您使用 @Theme/template.html 并且它只存在于 @Framework 命名空间中,它仍然可以工作。

当使用父主题时,您还可以在您喜欢的任何主题中存储您的资产,或者将它们拆分。它将从您的当前主题开始,并向上遍历所有父主题,尝试定位资源,因此当前主题中的资源具有优先权。如果您有很多类似的主题,这有助于您在“基础”主题中存储共享资源。

模板

所有您的模板包含和 extends 应该使用 @Theme 命名空间

{% extends '@Theme/Page/base.html.twig' %}

{% block content %}
    {% include '@Theme/Includes/content.html.twig' %}
{% endblock %}

父模板

您还可以使用 @Parent 命名空间来访问父模板。这允许您轻松覆盖父模板的任何部分,而不会使Twig尝试引用自身。如果您正在编辑 @Theme/Page/base.html.twig 且父主题有相同的模板,您可以通过使用 @Parent/Page/base.html.twig 来扩展它。它将搜索所有父主题,从最接近的父主题开始,直到找到为止。

这应该只用于没有或不会有任何子主题的主题!如果您扩展了一个使用 @Parent 引用的主题,该主题本身将成为父主题,并将最终引用自身。

表单

您可以使用 template 表单类型来选择模板

$builder->add('page_template', 'template');