发送参数以阻止tpl文件中的View

时间:2011-04-17 22:00:00

标签: drupal

我有一个块视图,在我的page.tpl.php文件中显示如下:

<?php if (!empty($subslider)): ?>
        <div id="subslider">
          <?php print $subslider; ?>
      </div>
      <?php endif; ?>

在View Ui中我设置了这个默认的php参数:

$url = explode('/',$_GET['q']);
$slideshow = node_load($url[1]);

if($slideshow->field_slide_ref[0]['nid']){
return $slideshow->field_slide_ref[0]['nid'];
}else{
return '';
}

它抓取页面节点中设置的引用ID。

现在,我的问题是我将page.tpl.php用于其他类型的内容,这些内容不一定是url中具有引用ID的节点。我仍然想将一个参数传递给块View。我如何在模板文件中执行此操作?

由于

编辑:

subslider是一个块区域。我使用Views Slideshow制作幻灯片。

我不认为我可以使用views_get_view_result,因为它只是检索一个数组..我需要实际的幻灯片。

2 个答案:

答案 0 :(得分:0)

在我的评论中,我提到了views_embed_view(),它与views_get_view()不同。

$slideshow = views_embed_view('my_slideshow_view', 'block_1', arg(1));

另请注意,您无需爆炸$ _GET ['q']。您应该能够访问URL参数:arg(0),arg(1),arg(2)等....

答案 1 :(得分:0)

我和他争了一段时间。如果你使用view_embed_view(),那么你应该阅读http://drupal.org/node/823056,然后解释你需要做些什么来使它适用于views_slideshow。

另一个解决方案是使用JQuery。首先,将views_slideshow块添加到您的内容区域。然后在页面<div id="my-rotator">&nbsp;</div>上创建一个div容器,以便它出现(即编辑节点)

然后在你的page.tpl.php中添加以下脚本,但是你需要用视图块的名称替换block-views-my_image_rotator-block_2 - 使用Firebug找到它:

  <script type="text/javascript">
    $(document).ready(  function(){

      var oNewContainer = $("div#my-rotator");
      var oRotator = $("div#block-views-my_image_rotator-block_2");

      oNewContainer.append(oRotator);

    });
  </script>  

PS。您可以通过配置块

来控制视图 - 幻灯片显示的页面