【问题标题】:How do I correctly apply content mapping in TYPO3 cObjects?如何在 TYPO3 cObjects 中正确应用内容映射?
【发布时间】:2020-09-13 19:29:00
【问题描述】:

我是 TYPO3 的新手,并且完成了本教程:https://docs.typo3.org/m/typo3/tutorial-sitepackage/master/en-us/Index.html。到目前为止,一切都解决了,除了最后一步,内容映射。我不太确定要发布什么作为诊断,源代码如下所示:

<!DOCTYPE html>
<html lang="en">
<head>

<meta charset="utf-8">
<!-- 
    This website is powered by TYPO3 - inspiring people to share!
    TYPO3 is a free open source Content Management Framework initially created by Kasper Skaarhoj and licensed under GNU/GPL.
    TYPO3 is copyright 1998-2017 of Kasper Skaarhoj. Extensions are copyright of their respective owners.
    Information and contribution at https://typo3.org/
-->



<title>Page 1</title>
<meta name="generator" content="TYPO3 CMS">


<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" media="all">
<link rel="stylesheet" type="text/css" href="/typo3conf/ext/site_package/Resources/Public/Css/website.css?1600015994" media="all">

</head>
<body>
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
   <a class="navbar-brand" href="#">Navbar</a>
   <button  class="navbar-toggler"
            type="button"
            data-toggle="collapse"
            data-target="#navbarsExampleDefault"
            aria-controls="navbarsExampleDefault"
            aria-expanded="false"
            aria-label="Toggle navigation"
            >
      <span class="navbar-toggler-icon"></span>
   </button>
   <div class="collapse navbar-collapse" id="navbarsExampleDefault">
      <ul class="navbar-nav mr-auto">
         
            <li class="nav-item active">
               <a class="nav-link"
                  href="/index.php?id=8"
                  target=""
                  title="Page 1"
                  >
                  Page 1
               </a>
            </li>
         
            <li class="nav-item ">
               <a class="nav-link"
                  href="/index.php?id=9"
                  target=""
                  title="Page 2"
                  >
                  Page 2
               </a>
            </li>
         
            <li class="nav-item ">
               <a class="nav-link"
                  href="/index.php?id=10"
                  target=""
                  title="Page 3"
                  >
                  Page 3
               </a>
            </li>
         
      </ul>
   </div>
</nav>



   <main role="main">

      <div class="jumbotron">
      <div class="container">
         <h1 class="display-3">Hello, world!</h1>
         <p> ... </p>
      </div>
</div>


      <div class="container">
         <div class="row">
            <div class="col-md-4">
               
            </div>
            <div class="col-md-4">
               
            </div>
            <div class="col-md-4">
               
            </div>
         </div>
      </div>

   </main>

<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" type="text/javascript"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" type="text/javascript"></script>
<script src="/typo3conf/ext/site_package/Resources/Public/JavaScript/website.js?1600016007" type="text/javascript"></script>


</body>
</html>

相关模板代码如下:

<f:layout name="Default" />
<f:section name="Main">

   <main role="main">

      <f:render partial="Jumbotron" />

      <div class="container">
         <div class="row">
            <div class="col-md-4">
               <f:cObject typoscriptObjectPath="lib.dynamicContent" data="{colPos: '1'}" />
            </div>
            <div class="col-md-4">
               <f:cObject typoscriptObjectPath="lib.dynamicContent" data="{colPos: '0'}" />
            </div>
            <div class="col-md-4">
               <f:cObject typoscriptObjectPath="lib.dynamicContent" data="{colPos: '2'}" />
            </div>
         </div>
      </div>

   </main>

</f:section>

TypoScript 源代码如下所示:

lib.dynamicContent = COA
lib.dynamicContent {
   10 = LOAD_REGISTER
   10 {
      colPos.cObject = TEXT
      colPos.cObject {
         field = colPos
         ifEmpty.cObject = TEXT
         ifEmpty.cObject {
            value.current = 1
            ifEmpty = 0
         }
      }
      pageUid.cObject = TEXT
      pageUid.cObject {
         field = pageUid
         ifEmpty.data = TSFE:id
      }
      contentFromPid.cObject = TEXT
      contentFromPid.cObject {
         data = DB:pages:{register:pageUid}:content_from_pid
         data.insertData = 1
      }
      wrap.cObject = TEXT
      wrap.cObject {
         field = wrap
      }
   }
   20 = CONTENT
   20 {
      table = tt_content
      select {
         includeRecordsWithoutDefaultTranslation = 1
         orderBy = sorting
         where = {#colPos}={register:colPos}
         where.insertData = 1
         pidInList.data = register:pageUid
         pidInList.override.data = register:contentFromPid
      }
      stdWrap {
         dataWrap = {register:wrap}
         required = 1
      }
   }
   30 = RESTORE_REGISTER
 }

它保存在site_package/Configuration/TypoScript/Helper/DynamicContent.typoscriptsetup.typoscript 文件包含以下内容:

@import 'EXT:fluid_styled_content/Configuration/TypoScript/setup.typoscript'
@import 'EXT:site_package/Configuration/TypoScript/Helper/DynamicContent.typoscript'

有什么建议吗?

【问题讨论】:

  • 您的扩展名为“site_package”?
  • 所以我认为至少。 “ext”中的文件夹称为“site_package”。
  • 我错过了错误描述或什么不完全正常。
  • 如果你比较第一个和第二个来源,你会发现 cObjects 不是由流体渲染的。

标签: typo3 typoscript typo3-extensions


【解决方案1】:

我找不到您如何将 pageUid 传输到打字稿。所以模板应该是这样的:

<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Default" />
<f:section name="Main">
   <main role="main">
      <f:render partial="Jumbotron" />
      <div class="container">
         <div class="row">
            <div class="col-md-4">
               <f:cObject typoscriptObjectPath="lib.dynamicContent" data="{pageUid: '{data.uid}',colPos: '1'}" />
            </div>
            <div class="col-md-4">
               <f:cObject typoscriptObjectPath="lib.dynamicContent" data="{pageUid: '{data.uid}',colPos: '0'}" />
            </div>
            <div class="col-md-4">
               <f:cObject typoscriptObjectPath="lib.dynamicContent" data="{pageUid: '{data.uid}',colPos: '2'}" />
            </div>
         </div>
      </div>
   </main>
</f:section>
</html>

请不要这样,我把 pageUid: '{data.uid}' 放在数据变量中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多