首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在TypoScript中从plugin flexform中读取值?

如何在TypoScript中从plugin flexform中读取值?
EN

Stack Overflow用户
提问于 2014-07-17 04:26:03
回答 4查看 5.7K关注 0票数 1

我有一个自定义内容元素的插件。该插件包含一个flexform。我想在我的TypoScript设置中使用flexform中的值。我该怎么做呢?

更具体地说,flexform定义为:

代码语言:javascript
复制
 <T3DataStructure>
  <meta>
    <langDisable>1</langDisable>
  </meta>
  <sheets>
    <sDEF>
      <ROOT>
        <TCEforms>
          <sheetTitle>LLL:EXT:cb_foundation/Resources/Private/Language/locallang_db.xlf:magellan.sheetTitle</sheetTitle>
        </TCEforms>
        <type>array</type>
        <el>
          <settings.magellan.cols>
            <TCEforms>
              <label>LLL:EXT:cb_foundation/Resources/Private/Language/locallang_db.xlf:magellan.cols</label>
              <config>
                <type>input</type>
                <size>20</size>
                <eval>trim</eval>
              </config>
            </TCEforms>
          </settings.magellan.cols>
        </el>
      </ROOT>
    </sDEF>
  </sheets>
</T3DataStructure>

我的自定义元素是使用以下TypoScript添加到tt_content的:

代码语言:javascript
复制
lib.cb_foundation.magellan = HMENU
lib.cb_foundation.magellan {
    1 = TMENU
    1 {
        sectionIndex = 1
        sectionIndex.type = header
        sectionIndex.useColPos = 0
        wrap = <div data-magellan-expedition="fixed"><dl class="sub-nav"> | </dl></div>
        NO {
            allWrap = <dd data-magellan-arrival="c{field:sectionIndex_uid}">|</dd>
            allWrap.insertData = 1
        }
    }
    special = list
    special.value.data = page:uid
}

tt_content.cbfoundation_magellan =< lib.cb_foundation.magellan

我想做的是使用在flexform中找到的值来设置tt_content.cbfoundation_magellan.1.sectionIndex.useColPos。我该怎么做呢?

EN

回答 4

Stack Overflow用户

发布于 2014-07-17 05:47:50

这是不可能的。不幸的是,Typoscript不能解析flexform中的值。

您需要一个extbase控制器或pi1来从flexform中获取值,并将它们分配给一个单独的模板,该模板将呈现您的自定义内容元素。

Extbase示例:

代码语言:javascript
复制
class ContentElementsController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {

    public function YourContentElementAction() {
        // Get the data object (contains the tt_content fields)
        $data = $this->configurationManager->getContentObject()->data;

        // Append flexform values
        $this->configurationManager->getContentObject()->readFlexformIntoConf($data['pi_flexform'], $data);

        // Assign to template
        $this->view->assign('data', $data);
    }

}
票数 4
EN

Stack Overflow用户

发布于 2016-07-26 21:36:45

我不知道是扩展网格还是TYPO3 6.2.26带来了这个功能,但是下面这些对我来说是有效的:

代码语言:javascript
复制
dataWrap = {field:flexform_YOURFIELD}
票数 0
EN

Stack Overflow用户

发布于 2016-10-13 03:22:52

下面的StackOverflow答案描述了如何使用一个小型StackOverflow用户类从TS设置中访问EXT新闻的插件flexform设置:

https://stackoverflow.com/a/40006158/430742

它应该很容易适应其他插件及其flexform设置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24790016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档