Расширение шаблонов Twig
Я пытаюсь настроить макет страницы с отдельным общим верхним и нижним колонтитулами, начиная с шаблонов веток.
Макет страницы типичный с кодом, подобным следующему:
<!doctype html>
<html class="no-js" lang="zxx">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>Soccer | Home</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="apple-touch-icon" href="apple-touch-icon.png">
<!-- Place favicon.ico in the root directory -->
<link rel="shortcut icon" type="image/x-icon" href="{{ asset('assets/images/fav.png') }}">
<!-- CSS BLOCK -->
{% stylesheets 'assets/css/*' 'assets/css/style.css' filter='cssrewrite' %}
<link rel="stylesheet" href="{{ asset_url }}"/>
{% endstylesheets %}
</head>
<body class="home-two">
{% block page_layout_header %} {% endblock %}
{% block content %} {% endblock %}
{% block page_layout_footer %} {% endblock %}
<!-- JS BLOCK -->
{% javascripts 'assets/js/jquery.min.js'
'assets/js/rsmenu-main.js'
'assets/js/jquery-ui.min.js'
'assets/js/bootstrap.min.js'
'assets/js/jquery.meanmenu.js'
'assets/js/wow.min.js'
'assets/js/slick.min.js'
'assets/js/masonry.js'
'assets/js/owl.carousel.min.js'
'assets/js/time-circle.js'
'assets/js/jquery.magnific-popup.js'
'assets/js/main.js' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
</body>
</html>
У меня есть другой файл в (app\Resources\views\parts\page_layout_header.html.twig
), где я установил часть сайта, начиная с pagelayout.html.twig
,
Наконец, root_folder находится под full/home.html.twig
и он отображает простой шаблон, подобный этому:
{% extends "pagelayout.html.twig" %}
{% block content %}
<h1>Root page</h1>
{% endblock %}
в ezplatform.yml
Я установил корневую папку и строку для ветки заголовка.
content_view:
full:
root_folder:
template: "full/home.html.twig"
match:
Id\Location: 67
line:
line_part_header:
template: "parts/page_layout_header.html.twig"
match:
Identifier\ContentType: ['defined_content_type']
Проблема возникает при запуске 127.0.0.1:8000
корневая страница и ничего не отображается. Только содержимое из корневой папки ez отображается без какого-либо стиля CSS. Кажется, что расширение от шаблонов веток не работает...
РЕДАКТИРОВАТЬ: собираюсь объяснить мою ситуацию лучше.
Это частичное из pagelayout.html.twig
который имеет все определения CSS, JS и блока
{% stylesheets 'assets/css/*' 'assets/css/style.css' filter='cssrewrite' %}
<link rel="stylesheet" href="{{ asset_url }}"/>
{% endstylesheets %}
{% block header %} {% endblock %}
{% block content %} {% endblock %}
{% block footer %} {% endblock %}
<!-- BLOQUE JS -->
{% javascripts 'assets/js/*' %}
<script src="{{ asset_url }}"></script>
{% endblock %}
Далее у меня есть page_layout_header.html.twig
который содержит верхнюю панель и главное меню.
{% extends ':themes/club:pagelayout.html.twig' %}
{% block header %}
<!--Header area start here-->
<header>
<div class="header-top-area">
<div class="container">
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
<div class="header-top-left">
<ul>
<li><a href="mailto:#"><i class="fa fa-envelope-o" aria-hidden="true"></i> {{ ez_render_field( content, 'web_config_email_contacto' ) }}</a></li>
<li><img src="{{ asset('assets/images/logo/flag.jpg') }}" alt="Logo">
......
......
И, наконец, это конфиг:
home:
template: "themes/club/full/home/home.html.twig"
match:
Id\Location: 2
full_top:
template: "themes/club/parts/page_layout_header.html.twig"
match:
Identifier\ContentType: 'informacion_general'
Итак, при тестировании http://127.0.0.1
Я не вижу ничего больше, чем {{ ez_render_field(content, 'description') }}
1 ответ
Расширение шаблонов означает, что дочерний шаблон расширяет родительский шаблон, но это не означает, что родительский шаблон включает дочерний шаблон.
Так что ваши оба шаблона (home.html.twig
а также page_layout_header.html.twig
) продлить pagelayout.html.twig
независимо. И они оба ничего не знают друг о друге.
Я не знаком с EzPlatform, но похоже, full
а также line
Типы представлений - это просто разные конфигурации, которые выбирает ViewProvider или что-то в этом роде.
Поэтому я решил, что вы должны встраивать повторно используемые части HTML, просто включив его так:
{% include 'page_layout_header.html.twig' %}
https://twig.symfony.com/doc/2.x/tags/include.html
или путем рендеринга с помощью отдельного контроллера следующим образом:
{{ render(controller("ez_content:viewAction", {"contentId": 123, "viewType": "line"})) }}