如何从.theme文件更改此标记?
\ core \ modules \ search \ src \ Controller \ SearchController.php
中的第119行if (count($results)) {
$build['search_results_title'] = array(
'#markup' => '<h2>' . $this->t('Search results') . '</h2>',
);
}
我想从搜索页面中删除“搜索结果”H2。
我可以使用搜索表单上的_preprocess_form函数和搜索结果上的preprocess_search_result更改上方的搜索表单和H2下方的结果列表。
是否缺少预处理功能或者我可以使用自定义树枝模板吗?
答案 0 :(得分:2)
您必须更改搜索模块定义的路线。 为此:
mymodule.services.yml
文件中定义以下内容:services: mymodule.route_subscriber: class: Drupal\mymodule\Routing\RouteSubscriber tags: - { name: event_subscriber }
RouteSubscriberBase
类的类,如下所示:/** * @file * Contains \Drupal\mymodule\Routing\RouteSubscriber. */ namespace Drupal\mymodule\Routing; use Drupal\Core\Routing\RouteSubscriberBase; use Symfony\Component\Routing\RouteCollection; /** * Listens to the dynamic route events. */ class RouteSubscriber extends RouteSubscriberBase { /** * {@inheritdoc} */ public function alterRoutes(RouteCollection $collection) { // Replace dynamically created "search.view_node_search" route's Controller // with our own. if ($route = $collection->get('search.view_node_search')) { $route->setDefault('_controller', '\Drupal\mymodule\Controller\MyModuleSearchController::view'); } } }
namespace Drupal\mymodule\Controller; use Drupal\search\SearchPageInterface; use Symfony\Component\HttpFoundation\Request; use Drupal\search\Controller\SearchController; /** * Override the Route controller for search. */ class MyModuleSearchController extends SearchController { /** * {@inheritdoc} */ public function view(Request $request, SearchPageInterface $entity) { $build = parent::view($request, $entity); // Unset the Result title. if (isset($build['search_results_title'])) { unset($build['search_results_title']); } return $build; } }
答案 1 :(得分:0)
@hugronaphor提供的解决方案非常完美。 我希望我的搜索结果标题是“((searchterm)”的搜索结果”而不是“搜索结果”,@ hugronaphor描述的步骤完全可以做到这一点。
在我的视图函数中,我这样输入:
if (isset($build['search_results_title']) && isset($_GET['keys'])) {
$build['search_results_title'] = ['#markup' => '<h2>' . t('Search results for') . ' "' . $_GET['keys'] . '"</h2>'];
}
答案 2 :(得分:-1)
您可以覆盖item-list - search-results.html.twig,并在此处替换标题:
{%- if title is not empty -%}
<h3>{{ title }}</h3>
{%- endif -%}
删除那个h3。