没有太多的代码示例只是一个问题和想法。Drupal 8商店节点数据替代商店
我希望能够使用弹性DSL查询将节点数据(从内容创建)保存到内部数据存储中。
我听说过/看过有关Drupal支持MongoDB的幻灯片,这让我觉得这是可行的。即使我必须重写NodeForm/save处理程序,是否有一种方法可以为此目的操作节点实体?
没有太多的代码示例只是一个问题和想法。Drupal 8商店节点数据替代商店
我希望能够使用弹性DSL查询将节点数据(从内容创建)保存到内部数据存储中。
我听说过/看过有关Drupal支持MongoDB的幻灯片,这让我觉得这是可行的。即使我必须重写NodeForm/save处理程序,是否有一种方法可以为此目的操作节点实体?
这是完全可行的。我们在所有Drupal项目中都使用Elasticsarch,主要用于全文搜索。每个节点保存两次:
在Drupal的数据库您可以使用elasticsearch_connector
模块获得一个易于使用的经理这样检索完整的对象:
$cluster = Cluster::load('ES-CLUSTER');
$clientManager = \Drupal::service('elasticsearch_connector.client_manager');
$client = $clientManager->getClientForCluster($this->cluster);
而且然后使用该客户端来管理节点的指数化:
function hook_node_insert($node) {
$client->insert($node);
}
function hook_node_update($node) {
$client->update($node);
}
function hook_node_insert($node) {
$client->delete($node);
}
工作的最重要的部分是创建映射(如果你希望它是通过模块管理),但在这里再次elasticsearch_connector
会给你的工具它:
$client->indices()->putMapping($params);
$client->indices()->putSettings($params);
$client->search($params);
我的想法是让他们保存两次。首先,通过使用那些“弹性DSL查询”(不确定它们是什么)来获得正常节点。
不管怎么说,你可以使用hook_node_presave()
:
这将是所谓的每一个正常的节点储蓄将完成时间,那里你可以把你的代码为“弹性DSL”保存。从那个钩子你可以访问将被保存的数据,但你也可以改变它们,如果你需要这样做。
不足之处是在任何建议的钩的Drupal 8的一部分:/ – Kal
不足之处是在任何建议的钩的Drupal 8的一部分:/ – Kal
哼,你没有标签和标题您的问题与[标签:Drupal-8]? – zessx
我的意思是不抱歉 – Kal