TYPO3-在Solr中索引自己的IRRE内容元素

时间:2018-06-21 06:50:48

标签: solr typo3 typoscript extbase

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

我有多个新元素,例如“标题”和“横幅”等。

我的索引队列看起来像这样,但是不起作用(solr需要最少的字段->标题,内容和url-但是我不想要新的url,我想要当前显示内容的页面中的url ...就像每个文本/图像元素或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,
            ],
        ]
    ],

1 个答案:

答案 0 :(得分:0)

如果我正确理解,您希望能够根据贴在其上的图块或横幅找到内容元素。如果是这样,则无需索引磁贴和横幅,但必须索引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 = |,
    }
  }
}

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