【问题标题】:How to realize one page template in TYPO3 with custom elements for sections?如何在 TYPO3 中实现一个页面模板,其中包含自定义元素?
【发布时间】:2016-09-11 16:12:59
【问题描述】:

这是我想与 TYPO3 一起使用的模板:http://www.shegy.nazwa.pl/themeforest/hype/ios/solid/

我想让用户可以根据需要添加或删除屏幕截图中显示的部分。我解决这个问题的第一个想法是创建内容元素。

我认为 tt_content 还不够。有必要为每个部分创建一个自己的表。还有其他方法吗?

让用户能够在“部分内容元素”内添加内容元素会非常棒。这可能吗?嵌套内容元素?所以用户可以在第二张截图上添加第三个功能。

【问题讨论】:

    标签: php typo3 typoscript typo3-6.2.x typo3-6.1.x


    【解决方案1】:

    您可以使用 Gridelements 创建它。检查此链接https://typo3.org/extensions/repository/view/gridelements

    创建网格:

    1. 安装扩展 Gridelements。
    2. 创建用于存储网格元素模板的 sysfolder
    3. 使用 gridelements sys 文件夹中的列表并单击 + 号(创建新记录)
    4. 从列表 Gridelements->CE 后端布局中选择
    5. 转到配置选项卡并配置您的网格元素(网格配置字段,在它的右侧您会看到一个图标 - 单击它进行动态配置)
    6. 为网格元素选择一个相关名称并保存。

    为页面分配网格:

    转到要放置网格元素部分的页面

    1. 点击“创建新内容元素”按钮,在页面上转到 Gridelements 选项卡并选择 gridelement。
    2. 保存内容元素并将内容添加到您的 gridelements 字段。

    为 GRIDELEMENT 创建模板:

    打开您的模板印刷文件并为每个网格元素添加语法。

    # typoscript.ts
    tt_content.gridelements_pi1.20.10.setup{ 
       # 1 is the gridelement id
       1 < lib.gridelements.defaultGridSetup
       1{
           columns{
             # 0 is the column id
             0 < .default
             0.wrap(
                <div class="column-div">|</div>
             )
          }
       }
    }
    

    流体模板

    # typoscript.ts
    tt_content.gridelements_pi1.20.10.setup {
       1 < lib.gridelements.defaultGridSetup
       1{
          cObject = FLUIDTEMPLATE
          cObject {
             file = gridtemplate.html #here source of fluid template
          }
       }
    }
    

    为我们的gridelement创建html模板:

    <!-- gridtemplate.html -->
    
    <div class="{data.flexform_yourfield}">
       <!-- data.tx_gridelements_view_column_{column id} -->
       {data.tx_gridelements_view_column_1->f:format.raw()}
    </div>
    

    使用 FLEXFORM 进行动态自定义:

    我们回到后端,在 gridelements sysfolder 上列出列表,选择一个 gridelement 并转到配置选项卡,然后在 Flexform 配置文件 - 字段 - 添加您的 flexform 文件。

    在Flexform配置文件上方你会看到Flexform配置-textarea,我的建议是在文件中创建flexform配置,而不是直接填写typo3 backend。

    FLEXFORM 配置示例:

     <!-- flexform.xml -->
        <?xml version="1.0" encoding="UTF-8"?>
        <T3DataStructure>
          <ROOT type="array">
            <type>array</type>
            <el type="array">
              <yourfield>
                <TCEforms type="array">
                    <label>Label of your input</label>
                    <config>
                        <type>input</type>
                    </config>
                </TCEforms>
              </yourfield>
            </el>
          </ROOT>
        </T3DataStructure>
    

    上 gridtemplate.html 代码部分,看看 flexform 在模板文件中是如何处理的。

    这就是网格元素的全部内容。

    【讨论】:

    • 谢谢!我想这就是我正在寻找的。但是如何为网格元素定义前端模板(流体)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 2014-08-21
    • 2016-11-03
    • 1970-01-01
    相关资源
    最近更新 更多