[решено] карусель в типе материала

Главные вкладки

Аватар пользователя sdm98 sdm98 21 августа 2013 в 11:17

Добрый.
есть тип материала tovar. для него есть шаблон вывода. node--tovar.tpl.php у товара может быть много картинок. мне нужно чтобы показывалось три, а остальные каруселью прокручивались. как это лучше сделать?
карусель работает только со вьюсами.
1.разобрать print render($content); по полям, руками прикрутить к нему карусель- как-то через... получается
2. как-то выводить каждый товар через вьюсы? не нашёл как это сделать.

Комментарии

Аватар пользователя sdm98 sdm98 21 августа 2013 в 12:07

спасибо. но не совсем то. или у меня не получается донастроить...
мне нужна только карусель без главного изображения (оно у меня отдельным полем и дизайнерски извращено) и чтобы по клику на изображение в карусели всплывало колорбоксом изображение в полном размере.
главное я могу спрятать css-ом, а вот как колорбокс подключить к картинкам карусели не нашёл.

Аватар пользователя dotter90 dotter90 21 августа 2013 в 12:23

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

Аватар пользователя sdm98 sdm98 21 августа 2013 в 13:51

я имел в виду, что задача стандартная и по логике должно уже быть готовое решение.
но если нет. буду разбирать.

Аватар пользователя sdm98 sdm98 21 августа 2013 в 15:49

разбираю... подскажите, как узнать количество элементов в поле. чтобы сделать цикл с их выводом?
<?php print render($content['field_img'][i])?>
<?php print render($content['field_img'][i+1])?>
и т.д.

Аватар пользователя sdm98 sdm98 21 августа 2013 в 18:29

можете подробнее? я слаб в пхп и js. у меня что-то такое получается...

<?php
$length = sizeof($content['field_img']);

for($i=0; $i < $length; $i++)
{
print "

  • ";
    print render($content['field_img'][$i]);
    print "
  • ";

    }
    ?>

    неправильно определяется размер массива. выдаёт все элементы, а не количество картинок.
    пробовал ещё while ($content['field_img'][$i]!="";) ошибки сыпятся

    Аватар пользователя sdm98 sdm98 22 августа 2013 в 1:55

    спасибо! но у меня та же проблема. я не могу понять структуру $content и понять, как к нему обратиться.
    $i=0;
    foreach( $content['field_img'] as $value)
    {
    print "

  • ";
    print render($content['field_img'][$i]);
    print "
  • ";
    $i=$i+1;
    }
    рисует мне двадцат ькартинок. 5 моих+15 пустых.

    Аватар пользователя sdm98 sdm98 22 августа 2013 в 11:20

    всё равно не догоняю.... ((

    [field_img] => Array ( [#theme] => field [#weight] => 2 [#title] => Изображение [#access] => 1 [#label_display] => hidden [#view_mode] => full [#language] => und [#field_name] => field_img [#field_type] => image [#field_translatable] => 0 [#entity_type] => node [#bundle] => tovar [#object] => stdClass Object ( [vid] => 31 [uid] => 1 [title] => перчатка 1 [log] => [status] => 1 [comment] => 1 [promote] => 0 [sticky] => 0 [nid] => 31 [type] => tovar [language] => ru [created] => 1376316968 [changed] => 1377086571 [tnid] => 0 [translate] => 0 [revision_timestamp] => 1377086571 [revision_uid] => 1

    т.е. у меня объект. $content одно из полей которого массив ['field_img']. мне нужно пробежаться по этому массиву и вывести все его элементы. поэтому и [$i], и попытки определить размеры массива через sizeof.

    нагуглил одну идею с next
    if (next($content['field_img'][$i])) { print .... }

    сработало, как надо. но вылезли варнинги
    Warning: next() expects parameter 1 to be array, null given в функции

    Аватар пользователя sdm98 sdm98 22 августа 2013 в 18:19

    победил с помощью array_key_exists
    foreach у меня почему-то находил лишние значения.
    всем спасибо!!!

    $i=0;
    while(array_key_exists($i, $content['field_img']))
    {
    print "

  • ";
    print render($content['field_img'][$i]);
    print "
  • ";
    $i=$i+1;
    }