Drupal8——如何使自定义模块内容显示在搜索结果中?

Drupal8——如何使自定义模块内容显示在搜索结果中?,drupal,Drupal,学习自定义模块——我制作了一个“hello world”模块,当使用单词“hello world”(带引号或不带引号)进行搜索时,它不会显示在搜索结果中 如何使自定义模块内容显示在搜索结果中 我之所以要这样做,是因为我要制作一个模块,导入一堆不断变化的word文档(它们通过owncloud上传到服务器),并且我希望它们能够进行搜索。我计划制作一个自定义模块来处理这个过程。我之所以提到它,是因为我可能没有正确地处理这个问题。我假设这是对模块的正确使用,也是实现这一需求的最佳方式 编辑(添加代码)

学习自定义模块——我制作了一个“hello world”模块,当使用单词“hello world”(带引号或不带引号)进行搜索时,它不会显示在搜索结果中

如何使自定义模块内容显示在搜索结果中

我之所以要这样做,是因为我要制作一个模块,导入一堆不断变化的word文档(它们通过owncloud上传到服务器),并且我希望它们能够进行搜索。我计划制作一个自定义模块来处理这个过程。我之所以提到它,是因为我可能没有正确地处理这个问题。我假设这是对模块的正确使用,也是实现这一需求的最佳方式

编辑(添加代码)

控制器:

$ cat src/Controller/HelloWorldController.php
<?php

namespace Drupal\hello_world\Controller;

class HelloWorldController {

  public function myCallbackMethod() {
    $element = array(
      '#markup' => '<p>Hello World</p>',
    );
    return $element;
  }
}
模块文件:

$ cat hello_world.module
<?php

use Drupal\Core\Routing\RouteMatchInterface;

function hello_world_permission() {
  $permissions = array(
    'administer hello world' => array(
      'title' => t('Administer Hello World module'),
      'description' => t('Change the settings for Hello World module.'),
    ),
  );
 return $permissions;
}

Drupal中的每个内容都必须编制索引才能显示在搜索结果页面中。索引是Drupal中的cron任务之一,所以您需要在添加新内容后运行cron,以便在搜索结果中显示。您可以手动运行cron,也可以设置cron在某个时间间隔内自动运行

您可以在上找到更多信息


希望这有帮助。

是的,谢谢,我知道索引和cron。此模块已安装数月,未显示在搜索结果中。其他页面已经显示了结果。我在询问是否必须向配置文件或其他内容添加参数。搜索结果页面显示标题和其他内容片段。您刚才提到了模块的名称。很难知道您的问题在哪里,因为您没有显示任何其他信息。搜索模块显示标准节点内容(来自任何CCK字段、分类、用户信息等的文本)。如何实现自定义模块非常重要,在该模块中,您将内容存储在数据库和许多其他东西中。也许你应该考虑用Drupal视图解决你的问题,我认为这里有你需要的一切。所有的模块都是打印“Hello World”。我已经在编辑下添加了上面的代码。我离开了一段时间。。。你找到解决办法了吗?我在Drupal8模块开发方面没有经验,但我非常确定您需要在模块中实现钩子,以便与搜索模块或DrupalCore本身进行通信。我没有看到搜索模块的钩子。如果你已经找到了解决方案,请发布。不,我还没有找到解决方案。。。钩子?
$ cat hello_world.module
<?php

use Drupal\Core\Routing\RouteMatchInterface;

function hello_world_permission() {
  $permissions = array(
    'administer hello world' => array(
      'title' => t('Administer Hello World module'),
      'description' => t('Change the settings for Hello World module.'),
    ),
  );
 return $permissions;
}
$ cat hello_world.routing.yml
hello_world.hello_page:
  path:  '/hello/world'
  defaults:
    _controller:  '\Drupal\hello_world\Controller\HelloWorldController::myCallbackMethod'
    _title: 'Hello World'
  requirements:
    _permission: 'access content'
first.form:
  path:  '/first/form'
  defaults:
    _form: '\Drupal\hello_world\Form\FirstForm'
    _title: 'First Form'
  requirements:
    _permission: 'access content'