С расширением «Маска» я добавил несколько полей в шаблонах страниц для назначения значков страницам. Также вы можете использовать флажок, чтобы активировать выбранный значок в меню. Это означает следующее меню: я также создал элемент содержимого с маской, в котором вы вводите только UID, и все подстраницы этого UID будут создаваться как <li>
список.
Я настроил следующие поля в шаблонах страниц:
- page_01_icon (String): будет содержать что-то вроде "icon-home"
- page_02_color (String): это будет цвет значка или цвет фона для элемента списка; зависит от `page_color_background`, допустимыми значениями являются любые шестнадцатеричные цвета CSS, такие как" # a5011c "
- page_02_color_text (String): если установлено, цвет текста будет изменен на этот
- page_03_menu (флажок): флажок == `page_icon` будет отображаться; иначе только заголовок страницы
- page_04_icon_only_menu (флажок): отмечен == будет отображаться только значок, заголовок нет (не требуется для моего вопроса, я использую его только в главном меню)
- page_05_color_background (флажок): если установлен флажок, `page_color 'используется в качестве цвета фона для этого элемента списка, если нет, значок будет окрашен в` page_color`; если `page_color` вообще не установлен, ни значок, ни фон не получат цвет
Я очень новичок в Typo3, но на самом деле этот код работает с обычным меню заголовка на моей странице. Это был трудный путь, но эта часть работает. Для меню заголовка я мог бы сделать это во FLUID, но теперь это библиотека, и мне нужно сделать то же самое здесь, но с TypoScript - независимо от того, что я пытаюсь, я не могу сделать это правильно. Большинство примеров и инструкций основаны на том, что if uid = 1..25 делает что-то еще. Но мне нужно несколько, если еще для этого. Я думаю, что то, что я сделал во FLUID, является правильным способом, теперь я пытаюсь получить ту же логику для TypoScript ... и в итоге здесь
Поля шаблона страницы в маске
Так я добавил поля в маске
Content-Fields
Страницы -> Правка -> Поля содержимого (из полей маски)
Строка главного меню
Это то, что я сделал с FLUID (строка главного меню). Только значок + значок и заголовок + только заголовок.
Говоря в простой логике PHP, я хотел бы сделать следующее (просто чтобы объяснить основное мышление / способ, которым я пробую в TypoScript):
// dont need to check if page_01_icon is set: field is required
// dont need to check if page_03_menu is checked: icons in this typo3 lib will always be displayed
// just assume that $title holds the title and $url the url to that page
foreach(....) {
// save html/css code in var for text color if a color is set
if(isset($page_02_color_text)) {
$textColorHTML = ' style="color' . $page_02_color_text . '"';
} else {
$textColorHTML = '';
}
// save html/css code in background of <li> if background-checkbox is checked and a color is set
if ($page_05_color_background == 1 && isset(page_02_color)) {
$liBackgroundHTML = ' style="background-color:' . $page_05_color_background . '"';
} else {
$liBackgroundHTML = '';
}
echo '<li' . $liBackgroundHTML . '><a href="' . $url . '" ' . $textColorHTML . '><i class="' . $page_01_icon . '"></i> ' . $title . </a></li>';
}
В основном это то, что я пытался попробовать в TypoScript:)
Что я "имею":
Шаблон-файл маски со следующим содержимым:
<f:cObject typoscriptObjectPath="lib.linkListAuto" data="{data}" />
Файл lib.linkListAuto:
Это версия по умолчанию без логики php сверху. здесь мне нужно "перевести" логику php в .. Я даже не смог опубликовать сценарий наполовину беспокойства, потому что все, что я пробовал, закончилось неправильно: /
lib.linkListAuto = COA
lib.linkListAuto {
1 = HMENU
1 {
special = directory
special.value.field = tx_mask_link_root_id
wrap = <ul class="list-group">|</ul>
stdWrap.if.isTrue.data = register:count_menuItems
1 = TMENU
1 {
NO = 1
NO {
allWrap = <li class="list-group-item">|</li>
stdWrap.htmlSpecialChars = 1
ATagTitle.field = description // subtitle // title
}
}
}
}
Как я могу сказать в TypoScript "рендеринг таким образом каждой ссылки (подстраницы), которая появляется",
но если цвет установлен и установлен флажок для use_color_as_background: измените рендеринг для этой записи и присвойте <li>
цвет фона
также измените цвет текста, если он установлен
и наконец добавьте иконку перед заголовком страницы
Пожалуйста, помогите с идеями, которые не подходят к примерам "если uid равен X". Если их достаточно, они работают, да, но я не могу изменить их на то, что я пытаюсь сделать.