2016-05-17 5 views
1

Есть ли способ, чтобы макет Frontend определял макет Backend, файл шаблона и столбцы?Как создать макет Frontend для определения столбцов и бэкэнд-макета?

В настоящее время у меня есть следующий код, который позволяет вам установить макет Backend и использовать соответствующий файл шаблона. Но это становится очень грязным, когда для каждого макета есть разные позиции столбцов.

page.10 = FLUIDTEMPLATE 
page.10 { 
    #format = html 
    file= fileadmin/templates/example/partials/example_home.html  
    partialRootPath = fileadmin/templates/example/partials/ 
    layoutRootPath = fileadmin/templates/example/layouts/ 
    variables { 

     # Assign the Columns 
     main < styles.content.get 
     main.select.where = colPos = 0 

     news < styles.content.get 
     news.select.where = colPos = 1 
     } 
    } 
} 


# Assign the Template files with the Fluid Backend-Template 
page.10.file.stdWrap.cObject = CASE 
page.10.file.stdWrap.cObject { 
    key.data = levelfield:-1, backend_layout_next_level, slide 
    key.override.field = backend_layout 

    # Set the default Template 
    default = TEXT 
    default.value = fileadmin/templates/example/partials/example_home.html 

    # Set a second Template 
    23 = TEXT 
    23.value = fileadmin/templates/example/partials/example_internal.html 


} 
+0

Ваш вопрос не совсем ясен. Вы используете backend_layout. Каждый backend_layout может иметь собственную презентацию в FE. Почему макет FE определяет, как выглядит BE? Я имею в виду, как правило, это наоборот. Вы выбираете макет BE, он определяет столбцы, и для этого вы готовите представление FE. И в Fluid есть «Макеты», чтобы использовать для этого, чтобы затем вы могли выбирать разные части из шаблона. –

+0

@ AndrásOttó Хорошо, хорошо, если мы забудем о части макета frontend, как мне установить разные colPos в зависимости от того, какой макет будет выбран? – user500665

+0

@ AndrásOttó Кроме того, что вы будете делать, если у вас есть два разных шаблона, которые используют один и тот же бэкэнд-макет? – user500665

ответ

2

Не грязный вообще, вот реальный пример:

page.10 = FLUIDTEMPLATE 
page.10 { 
    file.stdWrap.cObject = CASE 
    file.stdWrap.cObject { 
    key.data = pagelayout 

    default = TEXT 
    default.value = {$customPagesTemplatePath}/Standard.html 

    1 = TEXT 
    1.value = {$customPagesTemplatePath}/Home.html 

    2 = TEXT 
    2.value = {$customPagesTemplatePath}/Landing.html 

    10 = TEXT 
    10.value = {$customPagesTemplatePath}/NewsDetail.html 

    11 = TEXT 
    11.value = {$customPagesTemplatePath}/LandingMini.html 

    12 = TEXT 
    12.value = {$customPagesTemplatePath}/FullWidth.html 
    } 
    layoutRootPath = {$customPagesLayoutPath} 
    partialRootPath = {$customPagesPartialPath} 

} 

Подумайте об этом так:

  • Как вы говорите, забыть о макете внешнего интерфейса. Это наследие; макет служит для BE и FE.

  • Если бы страница была городом, colPos была бы улицей. Вернее, представьте, что Backend - это карта, которую вы рисуете, а frontend - LEGO City, который вы строите по этой карте :-)) Если все в порядке, я придерживаюсь этой метафоры.

ColPos - это определенная часть страницы, где живет запись. Если можно, посмотрите таблицу tt_content в базе данных: вы увидите, что colPos - это всего лишь столбец с номером. Таким образом, в городе «Страница 1» есть улица под названием «colPos 7», и в ней есть некоторые записи (это будут дома). С помощью мастера be_layout в TYPO3 вы создадите административную карту этого города: как редактор должен видеть эти улицы.

В FLUIDTEMPLATE вы вызываете в зависимости от выбранного be_layout, вы создадите сам город; визуализированный интерфейс.

Вот еще один реальный пример мира для такой жидкости шаблон (home.html):

<f:render partial="Mobilenav" /> 
<f:render partial="Header"/> 

<div class="row"> 
<f:cObject typoscriptObjectPath="lib.home-teaser" /> 
</div> 

<aside> 
    <div class="row"> 
    <div class="columns"> 
     <div class="row"> 
     <div class="fp-teaser-outer small-48 medium-24 large-12 columns"> 
      <div class="fp-teaser-box-wrapper"> 
      <f:cObject typoscriptObjectPath="lib.home-something" /> 
      </div> 
     </div> 
     <div class="fp-teaser-outer small-48 medium-24 large-12 columns"> 
      <div class="fp-teaser-box-wrapper"> 
      <f:cObject typoscriptObjectPath="lib.home-somethingelse" /> 
      </div> 
     </div> 
     <div class="fp-teaser-outer small-48 medium-24 large-12 columns"> 
      <div class="fp-teaser-box-wrapper"> 
      <div class="fp-teaser-box"> 
       <f:cObject typoscriptObjectPath="lib.home-news-plugin-title" /> 
       <div class="fp-teaser-hr"></div> 
       <div class="fp-teaser-content"> 
       <f:cObject typoscriptObjectPath="lib.home-news" /> 
       </div> 
      </div> 
      </div> 
     </div> 
     <div class="fp-teaser-outer small-48 medium-24 large-12 columns"> 
      <div class="fp-teaser-box-wrapper"> 
      <div class="fp-teaser-box"> 
       <f:cObject typoscriptObjectPath="lib.home-blog-plugin-title" /> 
       <div class="fp-teaser-hr"></div> 
       <div class="fp-teaser-content"> 
       <f:cObject typoscriptObjectPath="lib.home-blog" /> 
       </div> 
      </div> 
      </div> 
     </div> 
     </div> 
    </div> 
    </div> 
</aside> 

<f:render partial="Footer"/> 

... хорошо, но где корреляция с colPos? Еще! I (в то же время уверен, что существуют и другие подходы) сделать это в TypoScript:

lib.home-something < styles.content.get 
lib.home-something { 
    select.where = colPos = 7 
} 

Так этим мы готовим контент для шаблона жидкости: получить все содержимое столбца этой страницы 7 (с помощью дополнительного fluid_styled_content) и положить это в объект содержимого «lib».

Вот затем вставляется в страницу с помощью f:cObject ViewHelper:

<f:cObject typoscriptObjectPath="lib.home-something" /> 

Подобно этому, все дома в 7-й улице ставятся в город именно в этом месте - и, таким образом, оказывается на вашей странице.

+0

У меня проблемы с этим: 1) Можете ли вы иметь «дом-что-то» в colPos 7 в одном макете, но colPos 6 на другом? 2) Что вы делаете, если у вас есть 2 шаблона жидкости, которые имеют один и тот же формат BE? – user500665

+0

1) это просто название - да. вы можете установить это по своему усмотрению. то, что вы не можете сделать, это иметь САМЫЙ элемент/запись контента в двух разных местах. Поскольку вы не можете иметь тот же дом на 6-й и 7-й улице. Тем не менее, вы можете разместить два одинаковых дома на двух улицах. Или, поскольку он вычисляет, зеркало вашего дома с 6-й улицы на 7-й улице – Urs

+0

2) шаблон просто говорит, как оформляется контент. вы можете сделать столько шаблонов для того же контента, сколько хотите. Вероятно, ваша ситуация заключается в том, что вы хотите применить один шаблон к странице в некоторых случаях, а другой - в других случаях? и вы не знаете, как передать эту информацию (какой шаблон использовать)? ну, вам придется ввести больше логики в свой TypoScript; например «если этот параметр GET установлен, тогда выберите этот другой формат BE». Я бы рекомендовал задать для этого отдельный вопрос. – Urs