Web サイトでは、さまざまなレコードがティーザーとして出力されます。各レコードは、1 つ以上のカテゴリに割り当てられます。ティーザーでは、それぞれのレコードに割り当てられたすべてのカテゴリのタイトルが表示されます。
私は sys_category と sys_category_record_mm で JOIN を介して tt_content のデータベース クエリをリンクしたタイポスクリプト (下記参照) でこれを試しました。
ただし、複数のカテゴリが割り当てられているレコードの場合、対応するティーザーが複数回、つまりカテゴリごとに 1 回出力されます。
体液:
<f:if condition="{data.tx_mask_cnt_mag_teaser_records}">
<f:for each="{data.tx_mask_cnt_mag_teaser_records}" as="data_item">
<f:cObject typoscriptObjectPath="lib.magteaser" data="{dsuid: data_item.uid, recid: data_item.records, reclimit: 2, tstype: 1, syscats: data.tx_mask_cnt_mag_teaser_cats}" />
</f:for>
</f:if>
タイポスクリプト:
lib.magteaser = COA
lib.magteaser {
wrap = |
5 = LOAD_REGISTER
5 {
dTstype.data = field:tstype // Different Teaser-Types
dSyscats.data = field:syscats // List of all categories to consider
}
10 = CONTENT
10 {
table = tt_content
select {
pidInList = 13 // Folder in which the records are stored
uidInList.data = field:recid
recursive = 2
selectFields.dataWrap = *, FIND_IN_SET(`tt_content`.`uid`,'{field:recid}') AS reclist_sortby
join = sys_category_record_mm ON (sys_category_record_mm.uid_foreign = tt_content.uid) JOIN sys_category ON (sys_category_record_mm.uid_local = sys_category.uid)
where = tt_content.hidden=0
where = tt_content.CType='mask_cnt_textpic_uni'
where.data = field:syscats
# where.intval = 1
where.wrap = sys_category_record_mm.uid_local IN (|)
orderBy = reclist_sortby
}
renderObj = COA
renderObj {
5 = LOAD_REGISTER
5 {
# Count variable for a CASE (see below) to format the first data record differently from the remaining data records.
dsCounter.stdWrap.dataWrap = {register:dsCounter} + 1
dsCounter.prioriCalc = intval
}
10 = CASE
10 {
key.data = register:dTstype
default = COA
default {
wrap = <div class="col-xs-12 col-sm-12 col-md-6 col-lg-6 col-xl-6 magteaser-std">|</div>
[...]
}
# 1 Titelbild und 2 Standard-Teaser
1 = COA
1 {
wrap = <div class="col-xs-12 col-sm-12 col-md-6 col-lg-6 col-xl-6 magteaser-std">|</div>
[...]
}
# 1 Top-Teaser und 2 Standard-Teaser
2 = COA
2 {
10 = CASE
10 {
key.data = register:dsCounter
# Standard-Teaser
default = COA
default {
wrap = <div class="col-xs-12 col-sm-12 col-md-6 col-lg-6 col-xl-6 magteaser-std">|</div>
10 = TEXT
10 {
wrap = Kategorie (def): |
value.dataWrap = {field:title}
}
[...]
}
# Top-Teaser
1 = COA
1 {
wrap = <div class="col-12 magteaser-top">|</div>
10 = TEXT
10 {
wrap = Kategorie (1): |
value.dataWrap = {field:title}
}
[...]
}
}
}
}
}
}
}
問題を解決する方法についてのヒントはありますか? ご協力いただきありがとうございます。
Typo3 V.9.5.8