我一直在为TYPO3(7.6.4)的ext_solr扩展名(3.1.1)摆弄一段时间。我的配置使用两个Solr内核用于两种不同的语言(英语和德语);这适用于普通页面。在TS常量中,核心配置如下:
plugin.tx_solr.solr.path = /core_en/
[globalVar = GP:L = 1]
plugin.tx_solr.solr.path = /core_de/
[end]
为了分别从数据库中获取英语和德语结果,我创建了两个不同的MySQL视图,它们给出了正确的结果。然后我继续设置为每个视图建立索引,如下所示:
plugin.tx_solr.index.queue {
[globalVar = GP:L = 0]
myindex = 1
myindex {
table = my_view
fields {
abstract = abstract
title = title
tstamp = tstamp
content = SOLR_CONTENT
content {
field = bodytext
}
url = TEXT
url {
typolink.parameter = 17
typolink.additionalParams = &... [URL works correctly]
typolink.additionalParams.insertData = 1
typolink.returnLast = url
}
}
}
[end]
[globalVar = GP:L = 1]
myindex_de = 1
myindex {
table = my_view_de
fields {
abstract = abstract
title = title
tstamp = tstamp
content = SOLR_CONTENT
content {
field = bodytext
}
url = TEXT
url {
typolink.parameter = 17
typolink.additionalParams = &...
typolink.additionalParams.insertData = 1
typolink.returnLast = url
}
}
}
[end]
}
但是,两种语言版本最终都在两个核心中。我能做些什么呢?
答案 0 :(得分:0)
你的病情不起作用。从文档:“请注意,条件不能在大括号内使用。” https://docs.typo3.org/typo3cms/TyposcriptReference/Conditions/Index.html
你需要从根级别包装TypoScript并使第一级“plugin.tx_solr ....”冗余。
答案 1 :(得分:0)
首先:如上所述,有针对TypoScript条件的规则:
Note that conditions cannot be used inside of curly brackets.
所以你必须改变它。
其次,你的代码中有一个拼写错误:
myindex_de = 1
myindex {
table = my_view_de
fields {
abstract = abstract
title = title
tstamp = tstamp
content = SOLR_CONTENT
content {
field = bodytext
}
url = TEXT
url {
typolink.parameter = 17
typolink.additionalParams = &...
typolink.additionalParams.insertData = 1
typolink.returnLast = url
}
}
}
第2行:它也应该是 myindex_de 。
一般我建议您使用不同的解决方案:
1:解决方案略有不同:
您引用了myindex和myindex_de所看到的相同字段。因此,如果在语言中唯一的区别就是在视图中将其作为 sys_language_uid 进行准备。
2:始终在工作,"终极"解决方案:
如果您有一个非常特殊的案例需要处理,您可以使用PHP代码覆盖索引器并自行创建。这是一种更好的方法,因为您可以像在视图中那样在索引器中做更多的事情。像:
我已经两种方式使用了,这是真的,通过视图,您可以快速,轻松地构建一个单线"来自复杂数据结构的变体。 但是,在Indexer类中,您可以在构建内容之前完全自由地进行数据清理/数据操作。