Drupal 8:创建视图结果区域插件
DrupalViews是一种通过搜索界面向用户公开数据的好方法。这可以直接通过数据库或通过Solr服务器完成。存在大量视图插件以允许以各种不同的方式对搜索输入和输出做出反应。
前几天,我需要向视图输出添加一条个性化消息,以通知用户他们的搜索关键字没有找到任何结果。有一个视图插件允许这样做,但它只显示一个基本的搜索字符串。
我需要的是一种打印以下HTML块的方法,其中包含用户搜索的搜索词。
Yoursearchfor"monkey"didn'treturnanyresults.
这里需要的是一个视图区域插件。使用这种插件类型,当视图报告没有结果时,我可以将此HTML包含到页面中。为此,我在自定义模块的src/Plugin/views/area位置创建了一个名为“NoResultsFound”的视图区域插件。
这是我创建的类,它扩展了类Drupal\views\Plugin\views\area\AreaPluginBase。该render()函数从Views接收一个名为$empty的输入,如果View没有结果,则为true。请注意,此实现与我使用的视图略有关联,因为它依赖于“查询”参数,该参数是我使用的视图中的关键字字段。
view->getRequest()->query->get('query'); $message = $this->t('Your search for "@query" didn\'t return any results.
', ['@query' => $query]); return [ '#markup' => $message, ]; } return []; } }
现在需要做的就是告诉视图该类存在。为此,我需要将钩子的实现添加hook_views_data()到名为custom_search_search.views.inc的文件中。这会通知Views插件的存在。
t('No results found'), 'help' => t('Print out a query not found message.'), 'area' => [ 'id' => 'no_results_found', ], ]; return $data; }
现在需要做的就是将插件添加到View配置中,这样当用户没有发现任何结果时,我们可以通知他们问题。