【问题标题】:Drupal 8--How do I make custom module content show up in search results?Drupal 8--如何让自定义模块内容显示在搜索结果中?
【发布时间】:2016-07-13 14:07:10
【问题描述】:

学习自定义模块--我制作了一个“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;
  }
}

信息 yaml 文件:

$ cat hello_world.info.yml
name:  Hello World
type:  module
description:  'A basic Drupal 8 Hello World Module.'
package:  Custom Modules
version:  1.0
core:  8.x

模块文件:

$ 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;
}

路由yaml文件:

$ 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'

【问题讨论】:

    标签: drupal


    【解决方案1】:

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

    您可以在Drupal cron 上找到更多信息。

    希望这会有所帮助。

    【讨论】:

    • 是的,谢谢,我知道索引和 cron。这个模块已经安装了几个月,并没有出现在搜索结果中。其他页面已显示结果。我在质疑是否必须向配置文件或其他内容添加参数。
    • 搜索结果页面显示标题和附加内容sn-p。您只提到了模块的名称。很难知道您的问题出在哪里,因为您没有显示任何其他信息。搜索模块显示标准节点内容(来自任何 CCK 字段的文本、分类法、用户信息等)。重要的是您如何实现自定义模块,将内容存储在数据库中的位置以及许多其他内容。也许您应该考虑使用 Drupal Views 解决您的问题,我认为这里有您需要的一切。
    • 模块所做的只是打印“Hello World”。我在 EDIT 下添加了上面的代码。
    • 我离开了一段时间...您找到解决方案了吗?我没有 Drupal 8 模块开发经验,但我很确定您需要在模块中实现钩子,以便与搜索模块或 Drupal 核心本身进行通信。我在这里看不到搜索模块的钩子。如果您发现解决方案已经发布。
    • 不,我还没有找到解决方案……钩子?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 2020-06-11
    • 2012-02-29
    • 1970-01-01
    • 2016-03-29
    相关资源
    最近更新 更多