【问题标题】:TYPO3 Read content from subpagesTYPO3 从子页面读取内容
【发布时间】:2019-05-11 12:42:53
【问题描述】:

我有一个 TYPO3 页面,其页面结构如下:

-top level
     -sub level 1
     -sub level ...
     -sub level n

在顶层,我可以预览子级别 1 到子级别 n,包括一个链接。

我想获取每个子页面的页面标题,并从第一个内容元素(即常规文本/图像)中获取第一个图像。

因此,每次加载顶级页面时,都应获取数据并动态呈现顶级页面的内容。

这可能吗?

更新:

所以我需要为我想要将内容显示为预告片的页面制作一个扩展模板?

temp.unterseiten = CONTENT
temp.unterseiten {
    table = pages
    select {
        pidInList.field = uid
        orderBy = sorting
    }
    renderObj = COA
    renderObj {
        10 = TEXT
        10.field = title
        10.wrap = <h2>|</h2>
        20 = CONTENT
        20 {
            table = tt_content
            select {
                pidInList.field = uid
                orderBy = sorting
            }
        }
    }
}

temp.kumulierterInhalt = COA
temp.kumulierterInhalt {
    10 = TEXT
    10.field = title
    10.wrap = <h1>|</h1>
    20 = CONTENT
    20 {
        table = tt_content
        select {
            orderBy = sorting
        }
    }
    30 < temp.unterseiten
    30.renderObj {
        30 < temp.unterseiten
        30.renderObj {
            10.wrap = <h3>|<h3>
            30 < temp.unterseiten
            30.renderObj {
                10.wrap = <h4>|<h4>
            }
        }
    }
}

我可以在设置中添加此代码吗?以及如何选择要将内容发布到的列?

我试过这样:

什么都没有显示

从主页设置

page = PAGE
page {
 config.simulateStaticDocuments = 0
 config.baseURL = http://
 config.tx_realurl_enable = 1 
  config.linkVars = L(0-1)

 config.doctype = html5
 meta.revisit-after = 7 days
 meta.robots = all
 meta.rating = general
 meta.viewport = width=device-width, initial-scale=1, maximum-scale=1
 meta.PAGE-TOPIC = Information
 meta.PAGE-TYPE  = Information

 shortcutIcon = fileadmin/design/images/favicon.ico

 includeCSS {
   screen1 = fileadmin/design/css/bootstrap.css
   screen1.title = display
   screen1.media = screen 

   screen2 = fileadmin/design/css/style.css
   screen2.title = display
   screen2.media = screen 

   screen3 = fileadmin/design/css/font-awesome.min.css
   screen3.title = display
   screen3.media = screen 

   screen4 = fileadmin/design/css/lightbox.min.css
   screen4.title = display
   screen4.media = screen       
  }

  includeJS {
    file1 = fileadmin/design/js/jquery-2.2.0.min.js
    file2 = fileadmin/design/js/bootstrap.min.js
    file4 = fileadmin/design/js/lightbox.min.js
    file5 = fileadmin/design/js/lightbox.js
    }

}

page.10.renderObj {

 # Text is used for the text content element.
  text = COA
  text {

    10 = TEXT
    # The field tt_content.header normally holds the headline.
    10.stdWrap.field = header
    10.stdWrap.wrap = <h1>|</h1>

    10 = TEXT
    # The field tt_content.bodytext holds the content text.
    10.stdWrap.field = bodytext
    10.stdWrap.wrap = <p>|</p>

  }
}

page.20 = TEMPLATE
page.20.template = FILE
page.20.template.file = fileadmin/design/index.html

page.headerData.20 = TEXT
page.headerData.20.value (


)


lib.navbar = COA
lib.navbar {
    wrap = <nav class="navbar navbar-default"> <div class="container-fluid"> | </div> </nav>

    10 = COA
    10 {
        wrap = <div class="navbar-header"> | </div>
        10 = COA
        10 {
            // hamburger icon:
            wrap = <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">|</button>
            10 = TEXT
            10.value = <span class="button-label">Menu</span><div class="button-bars"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></div>
            20 = TEXT 
            21 < .20
            22 < .20
        }
    }

    20 = HMENU
    20 {
        wrap = <div id="navbar" class="navbar-collapse collapse"> <ul class="nav navbar-nav"> | </ul> </div>

        1 = TMENU
        1 {
            expAll = 1

            NO = 1
            NO {
                ATagTitle.field = title
                wrapItemAndSub = <li>|</li>
            }

            CUR < .NO
            CUR {
                wrapItemAndSub = <li class="active">|</li>
            }

            ACT < .CUR

            IFSUB = 1
            IFSUB {
                ATagTitle.field = title
                ATagParams = class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"
                linkWrap = |<b class="caret"></b>
                ATagBeforeWrap = 1
                wrapItemAndSub = <li class="dropdown">|</li>
            }

            ACTIFSUB < .IFSUB
            ACTIFSUB {
                wrapItemAndSub = <li class="dropdown active">|</li>
            }

            CURIFSUB < .ACTIFSUB
        }

        2 < .1
        2 {
            // Adjust several classes for sublevels
            wrap = <ul class="dropdown-menu  multi-level">|</ul>
            IFSUB.wrapItemAndSub = <li class="dropdown-submenu">|</li>
            ACTIFSUB.wrapItemAndSub = <li class="dropdown-submenu active">|</li>
            // Remove caret element (correct arrow is set with ::after pseudo element)
            IFSUB.linkWrap >
            ACTIFSUB.linkWrap >

            CURIFSUB < .ACTIFSUB

            SPC = 1
            SPC {
                wrapItemAndSub.cObject = COA
                wrapItemAndSub.cObject {
                    // no divider, if first menu item on this level:
                    10 = TEXT
                    10.value = <li class="dropdown-header">|</li>
                    10.if.value.data = register:count_MENUOBJ
                    10.if.equals = 1

                    // otherwise:
                    20 = TEXT
                    20.value = <li class="divider"></li><li class="dropdown-header">|</li>
                    20.if.value.data = register:count_MENUOBJ
                    20.if.equals = 1
                    20.if.negate = 1
                }
            }
        }

        3 < .2
        4 < .3
    }
}

page.20.marks{
    CONTENT < styles.content.get
    CONTENT.renderObj.stdWrap.dataWrap=<div class="col-md-12">|</div>

     TOPIMAGE < styles.content.get
     TOPIMAGE.select.where = colPos=1

     contentright < styles.content.getRight
     contentright.select.where = colPos=2

     #contenborder < styles.content.get
     #contentorder.select.where = colPos=3

     #TOPIMAGE < styles.content.getBorder
     #TOPIMAGE.select.where = colPos=4


    MENU = HMENU
    MENU.entryLevel = 0
    #NAVIMAIN.excludeUidList = 

    MENU < lib.navbar
}

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 我玩了子菜单但没有结果。我不知道该怎么做。
  • 希望您在这里找到解决方案:t3n.de/magazin/…
  • 我试试看。我更新了问题
  • temp 只是构建内容。您必须将其分配给页面对象。你的 PAGE 对象是什么样子的?

标签: typo3 typo3-8.x


【解决方案1】:

我建议改用内置数据处理器的 TYPO3。它们由核心提供(当然您也可以使用自定义的)。通过这种方式,您可以轻松查询记录并将它们传递到流体模板,您可以在其中处理数据并将其输出为 HTML。还有一个菜单数据处理器。例如,您可以嵌套数据处理器,以便获得当前级别和子级别页面。

它比纯 TS 方式更灵活,对于不太熟悉 TS 的每个人来说,它都会简化很多。

https://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/Fluidtemplate/Index.html

【讨论】:

    【解决方案2】:

    对我来说可行的解决方案是:

    lib.unterseiten = CONTENT
    lib.unterseiten {
      table = pages
      select {
        pidInList.field = 10
        orderBy = sorting
      }
      renderObj = COA
      renderObj.wrap = <div class='col-md-3'>|</div>
      renderObj {
        10 = TEXT
        10.field = title
        10.wrap = <h2>|</h2>
        20 = CONTENT
        20 {
          table = tt_content
          select {
            pidInList.field = uid
            orderBy = sorting
          }
          renderObj = COA
          renderObj {
    
            #Bild auslesen
            30 = FILES
            30 {
              maxItems = 1
              references {
                table = tt_content
                uid.data = field:uid
                fieldName = image
             }
    
             renderObj = IMAGE
             renderObj.file.import.data = file:current:uid
             renderObj.file.treatIdAsReference = 1
             renderObj.wrap = <div class="thumbnail">|</div>
             renderObj.stdWrap.maxItems = 1
          }
    
            40 = TEXT
            40.field = uid
            40.wrap = <a href="index.php?id=|">Mehr infos</a>
          }
        }
    
      }
    }
    
    page.20.marks.kumulierterInhalt  < lib.unterseiten
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-09
      相关资源
      最近更新 更多