2016-04-17 76 views
0

我一直在爲TYPO3(7.6.4)編寫ext_solr擴展(3.1.1)一段時間。我的配置使用兩種Solr核心,用於兩種不同的語言(英語和德語);這對於普通頁面來說非常合適。在TS常數,核心配置是這樣的:TYPO3 Solr搜索:將特定語言的自定義索引隊列限制爲核心

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

您的情況不起作用。從文檔:「請注意,條件不能在大括號內使用。」 https://docs.typo3.org/typo3cms/TyposcriptReference/Conditions/Index.html

您需要從根級包裝TypoScript並使第一級「plugin.tx_solr。...」成爲冗餘。

+0

謝謝。我根據你的回答改變了配置,但是現在Index Indexue Initialization只給我提供英文版本(myindex),而不是德文版本(myindex_de)。任何其他想法? –

+0

@SaschaKersken:看到我上面的回答,你的TypoScript中仍然有一個錯字 –

0

首先:如前所述,對於Typo腳本條件的規則:

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用戶權限。
  • 語言差異
  • 它用作單獨的調度程序任務,您可以將其他 屬性作爲設置給它。

我已經同時使用了這兩種方法,並且確實如此,您可以從複雜的數據結構中快速輕鬆地構建「單線」變體。 但是在索引器類中,您可以在構建內容之前完全自由地進行數據清理/數據處理。

+0

謝謝,我現在就試試看。至於你提到的錯字:它不是在真實的代碼中,而是當我匿名並簡化實際代碼以在此處發佈時發生的。 –