отправка аргументов в блок View в файле tpl - PullRequest
1 голос
/ 18 апреля 2011

У меня есть блочный вид, который отображается примерно так в моем файле page.tpl.php:

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

В интерфейсе просмотра я установил этот аргумент 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 '';
}

Получает идентификатор ссылки, установленный в узле страницы.

Теперь моя проблема в том, что я использую page.tpl.php для других типов контента, которые не обязательно являются узлами со ссылочным идентификатором в URL. Я все еще хочу передать аргумент блоку View, хотя. Как мне сделать это в моем файле шаблона?

Спасибо

EDIT:

subslider - это блочный регион. Я использую «Слайд-шоу» для создания слайд-шоу.

Я не думаю, что смогу использовать views_get_view_result, потому что это просто возвращает массив ... Мне нужно настоящее слайд-шоу.

Ответы [ 2 ]

0 голосов
/ 09 июня 2011

Я боролся с этим некоторое время. Если вы используете view_embed_view(), тогда вам следует прочитать http://drupal.org/node/823056, в котором объясняется, что вы должны сделать, чтобы заставить его работать для views_slideshow.

Другое решение - использовать JQuery. Сначала вы добавляете блок views_slideshow в свой контентный регион. Затем вы создаете контейнер div на странице <div id="my-rotator">&nbsp;</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. Вы можете контролировать, на какой странице показывается слайд-шоу, настраивая блок

0 голосов
/ 18 апреля 2011

В своем комментарии я упомянул 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) и т. Д. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...