0

一段时间以来,我一直在摆弄 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]
}

但是,两种语言版本都包含在两个内核中。对此我能做些什么吗?

4

2 回答 2

0

你的情况不正常。来自文档:“请注意,不能在大括号内使用条件。” https://docs.typo3.org/typo3cms/TyposcriptReference/Conditions/Index.html

您需要从根级别向上包装 TypoScript,并使第一级“plugin.tx_solr. ...”变得多余。

于 2016-04-18T06:05:25.203 回答
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
    }
  }
}

第二行:它也应该是myindex_de

一般来说,我会建议你一个不同的解决方案:

1:略有不同的解决方案:

您引用的字段与我在 myindex 和 myindex_de 中看到的相同。因此,如果语言的唯一区别在于您认为将其准备为sys_language_uid是有意义的。

2:始终有效的“终极”解决方案:

如果您有非常特殊的情况要处理,您可以使用 PHP 代码覆盖索引器并制作您自己的。这是一种更好的方法,因为您可以在索引器中制作更多内容,就像在视图中一样。喜欢:

  • FE 用户权限。
  • 语言差异
  • 它用作单独的调度程序任务,您可以为其提供其他属性作为设置。

我已经使用了这两种方式,而且确实如此,通过一个视图,您可以从复杂的数据结构中快速、更轻松地构建“单行”变体。但是,在 Indexer 类中,您可以在一起构建内容之前完全自由地进行数据清理/数据操作。

于 2016-04-20T05:38:39.093 回答