Drupal 7 Drupal 7视图上下文过滤器标题覆盖
我有一个通过搜索API返回搜索结果的视图。它充分执行了这个用例,我很高兴。要为可交付成果加冕,我需要添加表单Drupal 7 Drupal 7视图上下文过滤器标题覆盖,drupal-7,drupal-views,Drupal 7,Drupal Views,我有一个通过搜索API返回搜索结果的视图。它充分执行了这个用例,我很高兴。要为可交付成果加冕,我需要添加表单的标题覆盖,该表单显示“%1”的搜索结果,该表单一开始看起来很简单,但没有完全按照计划工作 对于URL=mysite.com/search/all?search=wombat,其中搜索值是从块中的公开表单收集的,我得到: 显示“搜索全部”的搜索结果 或者,如果我在URL中未出现的主题的标题覆盖中输入%1,我会得到: 显示%1的搜索结果。我的目标是获得“显示“袋熊”的搜索结果” 标题覆盖的工
的标题覆盖,该表单显示“%1”的搜索结果,该表单一开始看起来很简单,但没有完全按照计划工作
对于URL=mysite.com/search/all?search=wombat
,其中搜索值是从块中的公开表单收集的,我得到:
显示“搜索全部”的搜索结果
或者,如果我在URL中未出现的主题的标题覆盖中输入%1
,我会得到:
显示%1的搜索结果。我的目标是获得“显示“袋熊”的搜索结果”
标题覆盖的工作原理是,它删除了搜索…
部分,但替换选择“all”作为异常值(或我设置为异常值的任何其他内容),其中我需要能够选择查询字符串的值(Search=wombat)
有人能解释一下吗?问题是,您可以用来覆盖标题的“%1”和“%2”引用了路径的第一个和第二个参数(用Drupal术语),在您的情况下,这将是“search”和“all?search=wombat”
相反,您需要的是“袋熊”本身作为路径组件
也许您可以通过处理您正在讨论的案例来实现这一点:“主题的标题覆盖未出现在URL中”。上下文过滤器部分中有一个选项(我假设您正在使用该选项)用于在没有默认值时提供默认值。也许您可以在那里使用“PHP代码””选项,隔离您的“袋熊”字符串并将其作为默认上下文筛选器返回,然后您可以通过“%1”访问它
获取该URL部分的php代码应如下所示:
return htmlentities($_GET['search']);
$_GET()返回url中该变量的值,而htmlentities()只是为了保证它的安全,因为它使用的是url的一部分,该部分易受XSS攻击
看看这个组合(1)在没有参数时设置默认参数,2)在标题打印输出中使用新设置的参数)是否有效 问题在于,可用于覆盖标题的“%1”和“%2”引用了路径的第一个和第二个参数(用Drupal术语),在您的情况下,这将是“search”和“all?search=wombat”
相反,您需要的是“袋熊”本身作为路径组件
也许您可以通过处理您正在讨论的案例来实现这一点:“主题的标题覆盖未出现在URL中”。上下文过滤器部分中有一个选项(我假设您正在使用该选项)用于在没有默认值时提供默认值。也许您可以在那里使用“PHP代码””选项,隔离您的“袋熊”字符串并将其作为默认上下文筛选器返回,然后您可以通过“%1”访问它
获取该URL部分的php代码应如下所示:
return htmlentities($_GET['search']);
$_GET()返回url中该变量的值,而htmlentities()只是为了保证它的安全,因为它使用的是url的一部分,该部分易受XSS攻击
看看这个组合(1)在没有参数时设置默认参数,2)在标题打印输出中使用新设置的参数)是否有效 我解决了这个问题。
使用以下两个钩子,我们可以通过编程方式更改filter的defalut值
<?php
/**
* hook_views_pre_view
* @param type $view
* @param type $display_id
* @param type $args
*/
function MODULE_NAME_views_pre_view(&$view, &$display_id, &$args) {
if ($view->name == 'VIEW_NAME') {
$filters = $view->display_handler->get_option('filters');
$view->display_handler->override_option('filters', $filters);
}
}
/**
* hook__views_pre_build
* @param type $view
* @return type
*/
function MODULE_NAME_views_pre_build($view) {
if ($view->name=='VIEW_NAME') {
$view->display['page']->handler->handlers['filter']['filter_field']->value['value'] = 8;
return $view;
}
}
?>
这个代码对我有用。我正在使用drupal 7。我解决了这个问题。
使用以下两个钩子,我们可以通过编程方式更改filter的defalut值
<?php
/**
* hook_views_pre_view
* @param type $view
* @param type $display_id
* @param type $args
*/
function MODULE_NAME_views_pre_view(&$view, &$display_id, &$args) {
if ($view->name == 'VIEW_NAME') {
$filters = $view->display_handler->get_option('filters');
$view->display_handler->override_option('filters', $filters);
}
}
/**
* hook__views_pre_build
* @param type $view
* @return type
*/
function MODULE_NAME_views_pre_build($view) {
if ($view->name=='VIEW_NAME') {
$view->display['page']->handler->handlers['filter']['filter_field']->value['value'] = 8;
return $view;
}
}
?>
这个代码对我有用。我正在使用drupal 7。非常感谢Boriana,这有助于解决问题。仍然无法获取%1,但从查询字符串获取值成功。非常感谢Boriana,这有助于找到解决方案。仍然无法获取%1,但从查询字符串获取值就成功了。