Добавить поле для пользовательского класса в TYPO3 CE

Я пытаюсь добавить поле для добавления пользовательского класса во все TYPO3 CE (т.е. классы Bootstrap).

Поле показано в BE CE, и я могу написать, например. col-md-6 в этом поле. В БД есть поле bootstrap_css, где хранятся значения.

Но я понятия не имею, как обойти CE в FE с помощью этого пользовательского класса:

Пример: добавление столбца col-md-6 в поле BE должно привести к следующему результату:

<div class="col-md-6">
    <div class="csc-default">
        ....
    </div>
</div>

Есть идеи?


person Peh    schedule 15.10.2014    source источник


Ответы (1)


Бесплатный ввод для классов обычно считается плохой практикой (-> разделение задач).

В таких случаях я использую классический метод header_layout, основанный на www.typo3wizard.com/en/snippets/cool-stuff-typoscript/using-the-layout-field-in-tt-content-and-pages.html.

Это работает очень надежно, и редакторы могут выбрать любое значение, которое вы им предложите. Это обходной путь, но он использовался целую вечность. Поле header_layout используется потому, что оно находится в удобном для редакторов месте. Изначально он был разработан для выбора макета только для элемента.

на странице TSConfig:

TCEFORM.tt_content {
      // Layout-Selector
      header_layout.altLabels.0 = Normal
      header_layout.altLabels.1 = Kasten
      header_layout.altLabels.2 = Bilder 1/2
      header_layout.altLabels.3 = Bilder 1/3
      header_layout.altLabels.4 = Dokumente 1/2 (mit Rand)
      header_layout.altLabels.5 = Dokumente 1/3 (mit Rand)

       // everything higher than 5 goes here

       header_layout.addItems {
            // 6 =  Box für wichtige Daten
            // 7 =  Box für Kosten
            // 8 =  Box für Arbeiten / Literatur
       }

       //  Remove items if less than 5
       // 100 is "hidden"
       header_layout.removeItems = 100

    }

Затем на странице TS: Предположим, мы хотим обернуть текст и текстовые элементы:

tt_content.text.stdWrap.outerWrap.cObject=CASE
tt_content.text.stdWrap.outerWrap.cObject=CASE
tt_content.text.stdWrap.outerWrap.cObject{
    key.field = header_layout
    default=TEXT
    default.value=|
    1=TEXT
    1.value=<aside class="kasten halfimg clearfix">|</aside>
    2=TEXT
    2.value=<div class="halfimg clearfix">|</div>
    3=TEXT
    3.value=<div class="thirdimg clearfix">|</div>
    4=TEXT
    4.value=<div class="halfimg-border clearfix">|</div>
    5=TEXT
    5.value=<div class="thirdimg-border clearfix">|</div>
}   

tt_content.textpic.stdWrap.outerWrap.cObject=CASE
tt_content.textpic.stdWrap.outerWrap.cObject{
    key.field = header_layout
    default=TEXT
    default.value=|
    1=TEXT
    1.value=<aside class="kasten halfimg clearfix">|</aside>
    2=TEXT
    2.value=<div class="halfimg clearfix">|</div>
    3=TEXT
    3.value=<div class="thirdimg clearfix">|</div>
    4=TEXT
    4.value=<div class="halfimg-border clearfix">|</div>
    5=TEXT
    5.value=<div class="thirdimg-border clearfix">|</div>
}   

Таким образом, вы подключаетесь к рендерингу css_styled_content и говорите ему обернуть этот элемент контента в зависимости от того, что установлено в header_layout.

person Urs    schedule 15.10.2014
comment
Спасибо, это звучит действительно интересно. У меня есть проблемы с решениями, которые вы разместили. Если я правильно понял, должно быть 3 новых значения в BE -> CE -> Заголовок -> Тип (где находятся другие макет 1, макет 2 и т. д.). У вас есть пример кода для гибких шаблонов? (Без частей/маркеров) TY заранее - person Peh; 16.10.2014
comment
Теперь у меня есть 3 новых значения в моих элементах контента, но они имеют поведение по умолчанию. Они не обертывают мои элементы, как ожидалось, с помощью div - person Peh; 16.10.2014
comment
Это решение совершенно не связано с жидкостью. Он упаковывает содержимое, когда css_styled_content доставляет элемент. Если есть достойный, основанный на жидкости преемник моего метода, опубликованного выше, мне было бы очень интересно узнать! - person Urs; 16.10.2014
comment
Вот и все! Спасибо большое. К сожалению, мой новостной плагин (tx_news) не отображает класс. Не могу найти имя в обозревателе объектов :) Но пока... работает :) - person Peh; 16.10.2014
comment
Для этого вы можете использовать селектор макета tx_news, см. docs.typo3.org/typo3cms/extensions/news/latest/Main/Templating/ - person Urs; 17.10.2014