我建立了一个库来放出页面的所有子页面作为预告片。到目前为止有效。在此预告片中,我还想介绍子页面的sys-category。为此,我使用(并修改了)一个打字稿,在这里可以找到: Show category names of current page in TYPO3 8
但这不起作用-有人可以给我提示吗?
这是我的代码:
lib.newsteaser {
20 = CONTENT
20 {
table = tt_content
select {
# Seiten-ID des Parent
pidInList = 17
recursive = 1
orderBy = tx_mask_cnt_news_item_date
where = hidden=0 AND CType='mask_cnt_news_item'
limit = 4
}
wrap = <section><div class="container-fluid"><div class="row no-gutters news-teaserbox">|</div></div></section>
renderObj = COA
renderObj {
wrap = |</div>
10 = FILES
10 {
if.isTrue.field = tx_mask_cnt_news_item_teaser_bg
references {
table = tt_content
# Seiten-ID
uid.dataWrap = {field:uid}
fieldName = tx_mask_cnt_news_item_teaser_bg
}
renderObj = TEXT
renderObj.data = file:current:publicUrl
renderObj.wrap = <div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12 news-tb-item" style="background-image: url('/|');">
}
15 = TEXT
15 {
if.isFalse.field = tx_mask_cnt_news_item_teaser_bg
value = <div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12 news-tb-item">
}
20 = TEXT
20 {
wrap = <div class="news-tb-item-head">|</div>
field = header
}
25 = CONTENT
25 {
wrap = <div class="categories">|</div>
table = sys_category
select {
# ID der Seite, auf der die Kategorien angelegt sind
pidInList = 0
join = sys_category_record_mm ON (sys_category_record_mm.uid_local=sys_category.uid)
where = sys_category_record_mm.tablenames='tt_content' AND sys_category_record_mm.uid_foreign = ###recorduid###
markers {
recorduid.field = uid
}
}
renderObj = TEXT
renderObj.field = title
renderObj.wrap = <li class="category {field:title}">|</li>
renderObj.insertData = 1
}
30 = TEXT
30 {
wrap = <div class="news-tb-item-sub">|</div>
field = subheader
}
40 = FILES
40 {
references {
table = tt_content
# Seiten-ID
uid.dataWrap= {field:uid}
fieldName = image
}
renderObj = IMAGE
renderObj {
file.import.data = file:current:uid
file.crop.data = file:current:crop
file.treatIdAsReference = 1
altText.data = file:current:title
params =
wrap = |
}
}
50 = TEXT
50 {
field = bodytext
}
60 = TEXT
60 {
value = Weiter
lang.en = Read
wrap = <div class="morelink-wrapper">|</div>
typolink {
parameter.field = pid
ATagParams = class="morelink"
}
}
}
}
}
答案 0 :(得分:1)
子页面?
您在tt_content
上建立选择,因此拥有第17页的所有CE。
也许你是说
lib.newsteaser.20.table = pages
如果选择页面:
您的标记定义访问当前页面(TSFE
)的页面记录,但是您需要页面记录的uid,它是您当前的上下文(renderObj
)。
因此正确的标记定义应为:
pageuid.field = uid
否则(选择tt_content):
您需要使用与当前记录tt_content
的关系:
where = sys_category_record_mm.tablenames='tt_content' AND sys_category_record_mm.uid_foreign = ###recorduid###
markers.recorduid.field = uid
,或者您从子页面中选择tt_content (我不知道如何从子页面中获取记录,因为您没有选择子页面,并且类别存储到了页面中)
where = sys_category_record_mm.tablenames='pages' AND sys_category_record_mm.uid_foreign = ###pageuid###
markers.pageuid.field = pid
tt_content记录的页面存储在字段pid
TYPO3如何存储数据?
TYPO3将其数据存储在不同的表中。主表是pages
,用于构建网站的页面。这些页面以树状结构组织。并非所有页面都代表各个前端页面。 TYPO3中的每个记录都“存储”到一页(分配给pages
记录)中。存在一个特殊的“页面”,它不是真实页面,也没有pages
记录。它是页面树的根,可以用带有uid 0的页面来标识。uid
代表“唯一标识符”,并且是每个数据记录中的一个字段。用于标识分配给记录的页面的每个数据记录都有一个字段pid
(页面ID)。
同样,pages
记录也有一个字段pid
,它给出了树的结构。每个页面都有一个父页面,根页面的(pseudo-)page 0作为父页面。
在pages
记录中存储了很多信息,但是通常没有内容。 (您可以在pages
记录中存储背景图像,视觉效果或特殊的预览图像以及SEO信息,例如描述或摘要)
对于内容,存在一个表tt_content
。您可以在此处存储文本,(对图片的引用)或控制例如其他记录的呈现。
对于页面预告片,您可以实现两种:
1.有关预告片的所有信息都存储在pages
记录中
2.您使用页面的内容,这意味着:获取该页面中tt_content
条记录的信息
使用预告片的一种典型情况是新闻列表:显示标题和摘要或带有图像的介绍,图像与全文链接到详细信息视图。
您的代码使人想起了这种情况,并且与预告片所代表的页面菜单无关。
我将以这种方式用错字来构建:
构建菜单对象(可能是special = directory
)
对于每个菜单项,请使用before
对象替换默认链接,您可以在其中使用 current pages
记录的其他字段来构建一个包含预览图像,页面标题,页面摘要。
lib.teaserMenu = HMENU
lib.teasermenu {
special = directory
special.value = 123
1 = TMENU
1 {
// remove normal link
doNotShowLink = 1
// build it by myself:
before.cObject = COA
before.cObject {
stdWrap.wrap = <div class="teaser">|</div>
stdWrap.typolink.field = uid
10 = FILES
10 {
:
}
20 = TEXT
20.field = title
20.wrap = <h3>|</h3>
30 = TEXT
30.field = abstract
30.wrap = <p>|</p>
:
}
}