使用扩展名“Mask”,我在页面模板中添加了一些字段,以便为页面分配图标。您还可以使用复选框激活菜单中的所选图标。菜单意味着这种情况:我还制作了一个带有Mask的内容元素,您只需输入UID,该UID的所有子页面都将创建为<li>
列表。
我在页面模板中设置了以下字段:
我是Typo3的新手,但实际上我的页面上的常规页眉菜单上面的代码工作正常。这是一个艰难的方式,但那部分有效。对于标题菜单,我可以在FLUID中进行,但现在这是一个lib,我需要在这里使用TypoScript做同样的事情 - 无论我尝试什么,我都不能做到正确。大多数示例和how-tos依赖于“if uid = 1..25”做其他事情。但是我需要多个if if elses。我想我在FLUID中所做的是正确的方法,现在试图为TypoScript提供相同的逻辑......并最终在这里结束。
Page Template Fields in Mask 这就是我在Mask中添加字段的方法
Content-Fields 页面 - >编辑 - >内容字段(掩码字段)
Main Menu Bar 这就是我用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”这样的想法 - 示例。有足够的,他们工作,是的,但我不能改变他们我想做的事情。
您需要了解TypoScript的概念。 所以这个名字可能会产生误导。 TypoScript不是脚本语言,而是配置语言。所以你不能使用顺序计算的概念。
通过这种方式,您可以配置渲染。
无论如何,您可以以.stdWrap.if
函数的形式向渲染添加一些逻辑,该函数可以控制是否在输出中打印值。
另一个重要的功能是字符串连接:在TypoScript中,您可以使用COA
s(内容对象数组)来构建一个字符串,您可以在其中决定每个数组元素的显示方式。
要构建字符串<li' . $liBackgroundHTML . '><a href="' . $url . '" ' . $textColorHTML . '><i class="' . $page_01_icon . '"></i> ' . $title . </a></li>
,您可以使用以下内容:
temp.li_tag = COA
temp.li_tag {
10 = TEXT
10.value = <li
// if ($page_05_color_background == 1 && isset(page_02_color)) {
// $liBackgroundHTML = ' style="background-color:' . $page_05_color_background . '"';
// } else {
// $liBackgroundHTML = '';
// }
20 = TEXT
20.field = page_05_color_background
20.noTrimWrap = | style="background-color:|"|
20.if.isTrue.field = page_02_color
30 = TEXT
30.value = ><a href="
40 = TEXT
40.field = title
40.dataWrap = <i class="{field.page_01_icon}"></i> |
40.stdWrap.typolink {
parameter.field = uid
// if(isset($page_02_color_text)) {
// $textColorHTML = ' style="color' . $page_02_color_text . '"';
// } else {
// $textColorHTML = '';
// }
ATagParams.cObject = TEXT
ATagParams.cObject {
field = page_02_color_text
wrap = style="color|"
if.isTrue.field = page_02_color_text
}
}
50 = TEXT
50.value = </li>
}