TYPO3 - 在 Solr 中索引自己的 IRRE Contentelements
TYPO3 - Index own IRRE Contentelements in Solr
我目前正在尝试使用 TYPO3 中的 Solr 索引新的 IRRE ContentElements。
我有多个新元素,比如"Tiles"和"Banners"等
我的索引 queue 看起来像这样,但它不起作用(solr 需要最少的字段 -> 标题、内容和 url - 但我不想要新的 url ,我想要当前显示内容的页面中的 url...就像每个 text/image 元素或像 tt_content.
中的标准元素
我的 solr 配置如下所示:
plugin.tx_solr.index.queue {
extname_tile = 1
extname_tile {
table = tx_extname_domain_model_tile
fields {
header = header
bodytext = bodytext
}
}
}
我的 tt_content 覆盖看起来像这样
'tx_extname_tile' => [
'label' => 'LLL:EXT:extname/Resources/Private/Language/locallang_db.xlf:tx_extname_tile',
'config' => [
'type' => 'inline',
'foreign_table' => 'tx_extname_domain_model_tile',
'foreign_field' => 'parentid',
'foreign_table_field' => 'parenttable',
'appearance' => [
'collapseAll' => 1,
'expandSingle' => 1,
'useSortable' => 1,
'showSynchronizationLink' => 1,
'showAllLocalizationLink' => 1,
'showPossibleLocalizationRecords' => 1,
'showRemovedLocalizationRecords' => 1,
],
'maxitems' => 24,
'behaviour' => [
'localizeChildrenAtParentLocalization' => true,
],
]
],
如果我理解正确的话,您希望能够找到基于附加到它们的图块或横幅的内容元素。如果是这样,您不需要索引磁贴和横幅,但您必须索引 tt_content 记录并将磁贴和横幅添加为字段。对于正常记录,这不是问题。 tt_content 然而它是。 solr 扩展无法(轻松)索引 tt_content 记录,因为它们通常作为页面的一部分进行索引。因此页面被索引而不是单独的内容元素。不幸的是,这种行为在 solr 扩展中是硬编码的。
现在,如果您想要查找包含具有特定磁贴或横幅的内容元素的页面,这是可行的。没有实际测试它,它是这样的:
plugin.tx_solr.index.queue.pages.fields.tiles_stringM = CONTENT
plugin.tx_solr.index.queue.pages.fields.tiles_stringM {
table = tt_content
select {
pidInList.field = uid
selectFields = tx_extname_tile
}
renderObj = CONTENT
renderObj {
table = tx_extname_domain_model_tile
select {
pidInList.field = pid
where = parentid = ###contentuid###
markers {
contentuid.field = uid
}
}
renderObj = TEXT
renderObj {
field = title
wrap = |,
}
}
}
然后您必须将此字段添加到搜索字段或过滤器中,具体取决于您要将其用于什么目的。
我目前正在尝试使用 TYPO3 中的 Solr 索引新的 IRRE ContentElements。
我有多个新元素,比如"Tiles"和"Banners"等
我的索引 queue 看起来像这样,但它不起作用(solr 需要最少的字段 -> 标题、内容和 url - 但我不想要新的 url ,我想要当前显示内容的页面中的 url...就像每个 text/image 元素或像 tt_content.
中的标准元素我的 solr 配置如下所示:
plugin.tx_solr.index.queue {
extname_tile = 1
extname_tile {
table = tx_extname_domain_model_tile
fields {
header = header
bodytext = bodytext
}
}
}
我的 tt_content 覆盖看起来像这样
'tx_extname_tile' => [
'label' => 'LLL:EXT:extname/Resources/Private/Language/locallang_db.xlf:tx_extname_tile',
'config' => [
'type' => 'inline',
'foreign_table' => 'tx_extname_domain_model_tile',
'foreign_field' => 'parentid',
'foreign_table_field' => 'parenttable',
'appearance' => [
'collapseAll' => 1,
'expandSingle' => 1,
'useSortable' => 1,
'showSynchronizationLink' => 1,
'showAllLocalizationLink' => 1,
'showPossibleLocalizationRecords' => 1,
'showRemovedLocalizationRecords' => 1,
],
'maxitems' => 24,
'behaviour' => [
'localizeChildrenAtParentLocalization' => true,
],
]
],
如果我理解正确的话,您希望能够找到基于附加到它们的图块或横幅的内容元素。如果是这样,您不需要索引磁贴和横幅,但您必须索引 tt_content 记录并将磁贴和横幅添加为字段。对于正常记录,这不是问题。 tt_content 然而它是。 solr 扩展无法(轻松)索引 tt_content 记录,因为它们通常作为页面的一部分进行索引。因此页面被索引而不是单独的内容元素。不幸的是,这种行为在 solr 扩展中是硬编码的。
现在,如果您想要查找包含具有特定磁贴或横幅的内容元素的页面,这是可行的。没有实际测试它,它是这样的:
plugin.tx_solr.index.queue.pages.fields.tiles_stringM = CONTENT
plugin.tx_solr.index.queue.pages.fields.tiles_stringM {
table = tt_content
select {
pidInList.field = uid
selectFields = tx_extname_tile
}
renderObj = CONTENT
renderObj {
table = tx_extname_domain_model_tile
select {
pidInList.field = pid
where = parentid = ###contentuid###
markers {
contentuid.field = uid
}
}
renderObj = TEXT
renderObj {
field = title
wrap = |,
}
}
}
然后您必须将此字段添加到搜索字段或过滤器中,具体取决于您要将其用于什么目的。