【问题标题】:TYPO3 get category uid at FLUID template (sys_category)TYPO3 在 FLUID 模板 (sys_category) 处获取类别 uid
【发布时间】:2015-08-11 18:08:32
【问题描述】:

我尝试在我的 FLUID 模板中将我的类别 uid 或名称显示为 class="category.uid"

如果我尝试<f:debug>{data}</f:debug>,我会看到如下输出:categories => '1' (1 chars)

但是我怎样才能将 category-uid 或 -name 写入我的 FLUID/HTML,类似于这样:

<div id="container" class="{data.nav_title}">
<!-- I need the categories --> 
<div id="container" class="{categories.uid}">

感谢您的帮助。

编辑:一些截图 信息在表中sys_categorytitle, uid, pid ..


  • `{数据}

【问题讨论】:

  • 什么是{类别}?它是数组还是 ObjectStorage?它是否正确映射到您的域模型中?请提供更多信息。
  • TYPO3 总体类别(== 表 sys_category 中的系统记录),请参阅我的edit ..screenshot
  • 我现在明白了。我还没有使用系统类别,但很可能您应该通过f:for ViewHelper 遍历它们,然后您可以获取 id
  • 好的,谢谢。我明白了,&lt;f:debug&gt;data&lt;/f:debug&gt; 只得到一个布尔变量(1 或 0)。使用f:forViewHelper,我只得到 uid,而不是标题。所以这还不够。我会找到另一种方法让我的班级进入模板。谢谢
  • 我为流体创建了一个功能请求:forge.typo3.org/issues/82010

标签: templates typo3 categories typoscript fluid


【解决方案1】:

here 讨论了同样的问题(见 11:30 - 12:31)。

所以这里没有viewhelper。你必须向 Flux 注册一个 ContentController。

【讨论】:

【解决方案2】:

我在这里使用了解决方案的变体:How can I get the category object in Fluid of Typo3 Content Element Pictures?

TypoScript

lib.categories = CONTENT
lib.categories {
    table = sys_category
    select {
        pidInList = root
        selectFields = sys_category.uid
        join = sys_category_record_mm on sys_category_record_mm.uid_local = sys_category.uid
        where.field = recordUid
        where.wrap = sys_category_record_mm.uid_foreign=|
    }
    renderObj = COA
    renderObj {
        1 = TEXT
        1 {
            field = uid
            stdWrap.noTrimWrap = | cat-||
        }
    }
}

流动模板

<f:cObject typoscriptObjectPath="lib.categories" data="{recordUid: data.uid}" />

【讨论】:

  • 这可行,但返回的类别是一个字符串,因此必须在 TypoScript 中呈现,而不是在流体中的 for 标记中。还要注意类别条目必须在根元素上而不是页面上。还有一个节省时间的提示:当[SYS][sqlDebug] 设置为 2 时,不显示生成的 SQL 查询。
【解决方案3】:

对不起,我没有足够的声誉来发表评论。

{data} 是什么?

它是你从控制器中得到的东西吗?

$data = $this->configurationManager->getContentObject()->data;
$this->view->assign('data', $data);

如果是这样,那么您将需要在控制器中进行一些额外的处理,因为$data 是一个关联数组,而不是具有关系注入的对象/模型。

【讨论】:

  • 模板:我会从&lt;f:debug&gt;{data}&lt;/f:debug&gt;得到,见上面的截图。
  • 好的,我明白了。它看起来像pages 表中的页面记录。您在哪里将变量 {data} 分配给您的流体模板?您已经在模板控制器$this-&gt;view-&gt;assign('data' ,$GLOBALS['TSFE']-&gt;page); 中正确完成了类似的操作categories =&gt; '1' 不是该类别的 uid,而是 TYPO3 CMS 内部使用的引用计数。如果您尝试添加另一个类别,您将看到此变量更改为 categories =&gt; '2'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-18
  • 2020-12-07
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
相关资源
最近更新 更多