【问题标题】:Can't generate TYPO3 tt_news category tree for news entry无法为新闻条目生成 TYPO3 tt_news 类别树
【发布时间】:2017-10-29 16:39:36
【问题描述】:


我在我的 TYPO3 v7.6.18 中使用tt_news 扩展(刚刚从 6.2.31 升级) 我遇到了类别树的问题。我为tt_news 类别渲染做了更多的调试,这是目前的问题:

旧的tca.php 看起来像这样:

'类别' => 数组(
    '排除' => 1,
    '标签' => 'LLL:EXT:tt_news/locallang_tca.xml:tt_news.category',
    '配置' => 数组(
        '类型' => '选择',
        'form_type' => '用户',
        'userFunc' => 'tx_ttnews_TCAform_selectTree->renderCategoryFields',
        '树视图' => 1,
        'foreign_table' => 'tt_news_cat',
        'autoSizeMax' => 50,
        'miniitems' => $confArr['requireCategories'] ? 1 : 0,
        'maxitems' => 500,
        'MM' => 'tt_news_cat_mm',
    ),
),

这给了我错误的结果,意思是,我没有得到一棵树,而是一个多选。现在,当我将类型更改为 user 时,我收到此错误:

致命错误:在第 167 行调用 /home/portal/typo3project/typo3conf/ext/tt_news/lib/class.tx_ttnews_TCAform_selectTree.php 中未定义的方法 TYPO3\CMS\Backend\Form\Element\UserElement::addSelectOptionsToItemArray() 

我检查了类tx_ttnews_TCAform_selectTree方法renderCategoryFieldsand中的行,它看起来像这样:

$selItems = $fobj->addSelectOptionsToItemArray($fobj->initItemArray($this->PA['fieldConf']),$this->PA['fieldConf'],$fobj->setTSconfig($table, $row),$field);

$fobj 在函数定义中作为参考:function renderCategoryFields(&$PA, &$fobj) 似乎在某处定义错误,因为 addSelectOptionsToItemArray 位于 FormEngine不是 UserElement.

由于该方法在像tx_ttnews_TCAform_selectTree->renderCategoryFields 这样的 tca 中被调用,所以我无法更改类,它正在使用。

任何想法如何解决这个问题?

【问题讨论】:

    标签: php typo3 tt-news typo3-extensions


    【解决方案1】:

    从 TYPO3 7 开始,您无需定义自定义用户函数即可将列表呈现为树。 select-type字段有一个renderTypeTCA configuration option,可以通过selectTree值定义树渲染。

    所以配置应该如下所示:

    'category' => Array(
        'exclude' => 1,
        'label'   => 'LLL:EXT:tt_news/locallang_tca.xml:tt_news.category',
        'config'  => Array(
            'type'          => 'select',
            'renderType'    => 'selectTree',
            'foreign_table' => 'tt_news_cat',
            'autoSizeMax'   => 50,
            'minitems'      => $confArr['requireCategories'] ? 1 : 0,
            'maxitems'      => 500,
            'MM'            => 'tt_news_cat_mm',
            'treeConfig'    => array(
                'parentField' => 'parent_category',
            ),
        ),
    ),
    

    此外,您可能还想使用treeConfig configuration option 进行一些视觉调整。

    【讨论】:

    • 另外你可以简单地将tt_news更新到最新版本,因为它声称与TYPO3 7.x兼容。
    • 我已经试过了。它会产生#1288215890: TCA Tree configuration is invalid: "treeConfig" array is missing 错误。当我添加 'treeConfig' => array( 'expandAll' => true, 'parentField' => 'pid', 'appearance' => array( 'showHeader' => TRUE, ), ), 时,我得到零个类别,或者,如果我将 parentField 更改为 0,我会在一个分支中得到所有类别和一个巨大的混乱(因为名称重叠)。
    • @DainisAbols 您可以将您的 TCA 与 tt_news 7.6.3 的 TCA 表格进行比较。或许,这个问题可以通过在treeConfig 部分添加'parentField' => 'parent_category', 来解决。
    • 谢谢,parent_category 在第一次测试中看起来很有希望,明天早上会告诉你。目前工作日已经逾期 2 小时。
    • @DainisAbols 很好,我已经更新了答案中的代码示例以反映这一变化。
    猜你喜欢
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多