【问题标题】:Set views contextual filter as request_path()将视图上下文过滤器设置为 request_path()
【发布时间】:2018-11-14 12:12:50
【问题描述】:

主题

我有一个包含图像和 URL 字段的内容类型,我需要在 URL 字段与使用视图的请求路径匹配的路径上显示图像作为横幅。

我试过了

1-> 在视图中添加“别名”字段作为上下文过滤器。

2-> 添加 URL 字段

3-> 我还尝试在上下文过滤器中使用带有 PHP 代码的 URL 字段:

if(drupal_is_front_page()) {
    return '<front>';
}else{
    return request_path();
}

第三点仅适用于一个路径参数,例如,如果当前请求的路径是 services/one 并且视图上下文过滤器仅采用第一个路径组件,如您在附图中所见 但是,无论请求多少组件,我都需要使用整个路径设置上下文过滤器。

我该怎么做?

【问题讨论】:

    标签: drupal drupal-7 drupal-views


    【解决方案1】:

    我通过在 tlp 中嵌入视图块并通过代码传递 URL 字段过滤器来完成此操作。见以下代码:

    $path = request_path();
    
    $query = 'SELECT field_url_url FROM {field_data_field_url}
              WHERE bundle = :bundle AND entity_type = :entity_type AND field_url_url =  :field_url_url';
    
    $path = db_query($query, array(
                                   ':bundle'=>'page_banner',
                                   ':entity_type'=>'node',
                                   ':field_url_url'=> $path
                     ))->fetchField();
    
    if (!empty($path)):
      print views_embed_view('page_banner','block', $path);
    endif;
    

    我希望这对需要添加上下文过滤器作为请求 URL 的人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      • 2021-12-28
      相关资源
      最近更新 更多