【问题标题】:Drupal filter is not working properlyDrupal 过滤器无法正常工作
【发布时间】:2011-10-12 12:53:15
【问题描述】:

我不知道如何询问,所以如果您需要更多信息,请询问!

情况
我有一个三种语言的网站。我在网上有很多客户案例,每个案例都与一个行业相关(取决于他们属于哪个行业)。每个部门和参考都有自己独特的nid

在我的template.php 中是这样写的:

if ('sector' == $vars['node']->type) {
        $lang = '/'.$vars['language'].'/';

        $key_path = $_SERVER['REQUEST_URI'];
        $key_path = substr_count($key_path, $lang) ? substr($key_path, strlen($lang)) : $key_path;
        if (strpos($key_path, '?')) $key_path = substr_replace($key_path, '', strpos($key_path, '?'));

        if (strpos($key_path, 'sectors-references') === 0) {        
            $view = views_get_view('references');
            if (!empty($view)) {
                $view->set_arguments((int)$vars['node']->nid);  
                $vars['content']['suffix'] = $view->render();

            }
        }
    }

然而,每个部门都向我展示了相同的参考资料...我必须进行哪些更改才能在正确的部门下获得正确的参考资料?

【问题讨论】:

  • echo $vars['nid'] = $view-render();??当然应该是$vars['my_var'] = $view->render(); 还是只是问题中的一个错字?
  • 哦该死的,你是对的。我纠正了我的错误!

标签: drupal drupal-nodes drupal-contextual-filters


【解决方案1】:

通常使用数组将参数传递给set_arguments,如果您传递非数组,则该参数可能会被忽略,这就是为什么您总是得到相同结果的原因。试试:

$view->set_arguments(array((int)$vars['node']->nid));

【讨论】:

  • 太棒了!你解决了!能不能再补充解释一下?
  • 我认为解释它的最简单方法是set_arguments 期望它的第一个参数是视图参数的数组。这样它就可以通过数组运行,而不是为函数获取任意数量的参数并且必须通过func_get_args 或类似的东西运行。因为您将非数组作为参数传递,所以 set_arguments 函数只是忽略了它。因此,您将获得 所有 结果,而不是过滤结果
猜你喜欢
  • 2013-09-15
  • 2015-02-14
  • 2013-08-16
  • 2012-11-16
  • 2011-04-06
相关资源
最近更新 更多