我正在使用Drupal 8的elasticsearch連接器模塊來管理索引。 https://www.drupal.org/project/elasticsearch_connector需要幫助擴展Drupal 8自定義模塊中的類
我需要在索引創建時發生的一件事是在elasticsearch索引映射中添加一些分析器和過濾器。
我已經找到了這是發生在這裏的create()方法爲他們班的一個地方:
模塊\的contrib \ elasticsearch_connector的\ src \ ElasticSearch \參數\廠\ IndexFactory.php
我有一個自定義模塊,我試圖擴展該方法並添加到它,但似乎無法讓它着火。當它在擴展頁面上顯示時,我已正確啓用該模塊。到目前爲止,我爲我的自定義模塊的文件夾結構如下所示:
模塊\定製\ elasticsearch_analyzer的\ src \ elasticsearch_analyzer.php
<?php
namespace Drupal\elasticsearch_analyzer;
use Drupal\search_api\IndexInterface;
use Drupal\elasticsearch_connector\ElasticSearch\Parameters\Factory\IndexFactory;
class elasticsearch_analyzer extends IndexFactory {
/**
* {@inheritdoc}
*/
public static function create(IndexInterface $index) {
die('does this work?');
return [
'index' => IndexFactory::getIndexName($index),
'body' => [
'settings' => [
'number_of_shards' => $index->getOption('number_of_shards', 5),
'number_of_replicas' => $index->getOption('number_of_replicas', 1),
],
],
];
}
}
我已經嘗試了一堆圍繞PSR-4標準的不同組合,但似乎無法讓它運行。這是我們通常如何在Drupal 8中擴展事物的嗎?我應該把這個類放在模塊根目錄下的.module文件中嗎?我應該註冊這項服務嗎?
根據我讀過的教程,在創建塊插件或簡單路由頁面之外,我一直無法看到擴展貢獻模塊或核心的任何示例。我現在認爲我們已經脫離了鉤世界,我應該能夠檢查現有類中的代碼並使用OOP繼承來覆蓋它。或者是不是這樣?
我一直在閱讀更多關於Drupal 8中的事件系統,並且使用drupal控制檯已經能夠看到search_api的事件列表。 search_api.task.addIndex search_api.task.trackItems search_api.task.updateIndex search_api.task.removeIndex search_api.task.deleteItems search_api.task.deleteAllIndexItems 我創建了一個模塊來監聽search_api。 task.addIndex,但它看起來像模塊的當前版本只在「trackItems」上觸發。我一直在試圖看看是否有其他方法使用鉤子來改變索引,但目前還沒有運氣。 –