TYPO3无法渲染某些部分

时间:2019-04-16 09:32:02

标签: typo3 typo3-7.6.x typo3-extensions

我正在使用TYPO3版本7.6.32,但我遇到的问题是网站的某些部分无法呈现。而是输出看起来像这样:

###SIDEBAR## or ###TOP### or ###STARTSLIDER###

使用同一系统渲染的某些部件可以正常工作:

###LOGO### and a few others

我复制了生产环境,并设置了本地环境以进行一些更改,但是我无法使其正常工作。

对于STARTSLIDER,我是在main.t3s中找到的

    STARTSLIDER < styles.content.getLeft

有人可以解释一下该渲染系统如何工作以及如何开始进一步调试吗?这是我第一次使用TYPO3,在这里我很难受。任何帮助将不胜感激。

如果您需要更多信息,请发表评论。

编辑: 好的,经过一番阅读之后,好像styles.content.getLeft只是从页面的左列中获取内容...或者我可以分配另一种类型,例如文本,并像这样输出它。可以,但是实际的“开始滑块”仍无法呈现。好吧,那么startslider是什么-它的内容元素是通过扩展名Mask创建的“ Start Slider”类型-我们有一堆自己的内容类型,在后端我可以添加其他幻灯片,仅此而已。所以对遮罩内容类型的引用有效,因为我可以从列表中选择它。检查遮罩内容类型-它包含“幻灯片”>“标题”>“描述”>“图像”>“视频”>“链接”,似乎工作正常。好的,这里有一个代码示例如何使用它:

<f:if condition="{data.tx_mask_slide}">
<ul>
<f:for each="{data.tx_mask_slide}" as="data_item">
<li><f:if condition="{data_item.tx_mask_title}">
{data_item.tx_mask_title}<br />
</f:if>


<f:if condition="{data_item.tx_mask_description}">
{data_item.tx_mask_description}<br />
</f:if>


<f:if condition="{data_item.tx_mask_image}">
<f:for each="{data_item.tx_mask_image}" as="file">
<f:image image="{file}" alt="{file.alternative}" title="{file.title}" width="200" /><br />
{file.description} / {file.identifier}<br />
</f:for>
</f:if>


<f:if condition="{data_item.tx_mask_videolink}">
{data_item.tx_mask_videolink}<br />
</f:if>


<f:if condition="{data_item.tx_mask_link}">
<f:link.page pageUid="{data_item.tx_mask_link}">{data.tx_mask_link}</f:link.page><br />
</f:if>


</li>
</f:for>
</ul>
</f:if>

因此### STARTSLIDER ###引用没有直接引用mask元素-这必须发生在其他地方-发现startslider.html是实际构建滑块的地方。没有什么特别的,只是一些带有滑块元素的html。好吧,我在顶部添加了一个随机html标记,清除了所有缓存并检查了该标记-缺少标记-因此实际上从未使用过此文件。嗯好吧,什么是### STARTSLIDER ### ...我进一步猜想这就是在main.t3s中发生的引用:

page.10.marks {
    JUMPLINKS = TEXT
    JUMPLINKS.value = Direkt zum Inhalt
    JUMPLINKS.typolink {
        parameter.field = uid
        ATagParams = class="jumplinks focusable" role="navigation"
        section = main-content
    }

    TOP < styles.content.getLeft
    STARTSLIDER < styles.content.getLeft

    LANG < lib.lang

    MENU < lib.menu
    ...

有什么想法吗?

编辑: 因此,我唯一能想象的是,在掩码扩展名的mask.json配置文件中,“ key”:“ startslider”是对实际startslider.html的引用-这是正确的吗?

mask.json startslider:

    "startslider": {
        "label": "Start Slider",
        "key": "startslider",
        "shortLabel": "",
        "description": "nur f\u00fcr die Startseite verwenden",
        "icon": "",
        "color": "#000000",
        "columns": [
            "tx_mask_slide"
        ],
        "labels": [
            "Slide"
        ]
    },

mh,但是为什么不使用/渲染此文件? (错)

编辑: 现在,在更多了解TYPO3之后,我的结果是这根本行不通:

    STARTSLIDER < styles.content.getLeft

除使用getLeft或getRight的部分以及### something ###确实存在的事实之外,网站上的所有内容都可以工作,这证明该标记不能从styles.content.getX中得到任何回报-所以我正在阅读,这是一种渲染元素的旧方法,即使在TYPO3版本^ 9中的css_styled_content中,该功能也被删除了-但它应与激活了css_styled_content的TYPO3版本7.6.32一起使用,该功能在

中定义
typo3src/typo3/sysext/css_styled_content/static/setup.txt

我需要的内容也由后端的colPos = 1呈现。

我不知道该怎么办。我该如何进一步调试呢?

3 个答案:

答案 0 :(得分:1)

由于您是TYPO3的新手,所以建议您开始阅读本教程,这应该有助于您了解渲染的工作原理:https://docs.typo3.org/typo3cms/TemplatingTutorial/7.6/

答案 1 :(得分:1)

您混淆了模板的不同用法和样式。

您的页面是用标记模板构建的,可以通过标记名称###markername###之前和之后的哈希识别。

标记的替换是在印刷文字中定义的,您可以在其中以多种方式构建HTML。使用styles.content.get*,您可以访问页面内不同列中的内容元素。这些内容要素的呈现是用印刷文字配置的,您可以在其中找到mask扩展名,该扩展名使用流畅的方式呈现内容。
流体模板可以由viewhelpers(例如,命名空间标签:<f:if ...>)和变量({data.field}识别。

这些模板中的每一个都定义了模板的存储位置,fluid甚至使用多个文件夹来存储模板,布局,局部图。
要查找页面渲染在哪里损坏,您必须检查每个配置(典型),然后了解它们如何协同工作(由另一个渲染产生的结果插入到哪里)。

tldr
了解有关以下内容的信息:典型标记模板流体模板以及它们如何相互作用和相互使用。

答案 2 :(得分:0)

问题在于某些扩展名被破坏并且与已安装的TYPO3版本不兼容,因此存储在数据库中的配置的某些部分并未真正应用于实际应用程序。例如,css_styled_content在page> includes部分中丢失,并且在我尝试将其包含而未包含时引发了一些弃用错误。我重构了所有扩展,最后我能够包含css_styled_content而不会出现任何错误。

所以实际上不可能回答这个问题,仍然非常感谢大家试图向我指出正确的方向。