TYPO3 - 在 Solr 中索引自己的 IRRE Con​​tentelements

TYPO3 - Index own IRRE Contentelements in Solr

我目前正在尝试使用 TYPO3 中的 Solr 索引新的 IRRE Con​​tentElements。

我有多个新元素,比如"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 = |,
    }
  }
}

然后您必须将此字段添加到搜索字段或过滤器中,具体取决于您要将其用于什么目的。