Вы здесь

Вывод значений массива поочередно и их подставка в код шаблона

0

Всем привет.
В шаблоне ноды выполняю код для изменения url изображения, для изменения стиля изображения, для того чтобы это все потом вставить в слайдер. Т.е. Сам слайд одного стиля, а "переключатель" ниже другого (меняю размер).
Вот код:

$array = $node->field_images[LANGUAGE_NONE];
    foreach ($array as $key => $item) {
        $image_uri_thumb = $item['uri'];
        $style_thumb = '100x50';
        $derivative_uri_thumb = image_style_path($style_thumb, $image_uri_thumb);
        $success_thumb = file_exists($derivative_uri_thumb) || image_style_create_derivative(image_style_load($style_thumb), $image_uri_thumb, $derivative_uri_thumb);
        $new_image_url_thumb = file_create_url($derivative_uri_thumb);
        $array_urls [] = $new_image_url_thumb;
    }

Проблема в следующем: Как правильно в дальнейшем подставить этот url в разметку шаблона, изображений может быть больше одного соответственно для каждого url будет разный и их количество не постоянно.

Кратко: Как вывести ключи массива $array_url в тег , в "автоматическом" режиме, т.е. не так:

<img src="$array_urls[0]" />
Версия Drupal: 
7.x
Вопрос задан 27.05.2019 - 18:26

Вопрос вообще не понятен

Комментарий оставлен 01.06.2019 - 08:17

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

Если я вас правильно понял, сейчас вы хотите разобрать массив поля с картинками для слайдера в page.tpl.php шаблоне и вывести их в разных стилях (большая - для слайда и маленькая - для буллитов)?

Если да, то код примерно такой:

    <?php if ( isset($node->field_images[LANGUAGE_NONE]) ): ?>
        <?php $slidephoto = $node->field_images[LANGUAGE_NONE][0]['fid']; ?>
    <?php endif ?>

    <?php if (!empty($slidephoto)): ?>

        <!-- Внешняя обёртка -->

        <div class="slider">

            <?php if ($slidephoto) { ?>

              <!-- Выводим все картинки программно, одна за другой -->

              <?php  foreach ($node->field_images[LANGUAGE_NONE] as $index => $file) {
                  $fid = $file['fid'];
                  $uri = file_load($fid)->uri;
                  $params = array(
                    'style_name' => 'bigpic', # Название стиля изображения в ваших пресетах
                    'path' => $uri,
                    'alt' =>  ' ',
                    'title' => $node->field_images[$l][$index]['title'],
                    'attributes' => array('class' => array('img-responsive')),
                    'getsize' => FALSE,
                  );
                ?>

                <!-- HTML вашего слайда -->

                <div class="slider-item">
                    <a href="<?php print theme('image_style', $params); ?>" title="<?php print $node->field_images[LANGUAGE_NONE][$index]['title']; ?>">

                        <!-- Выводим ту же картинку, но через стиль smalpic -->
                        <?php print image_style_url('smalpic', $uri); ?>

                    </a>
                </div>

            <?php }} ?>

        </div>

    <?php endif ?>
Комментарий оставлен 04.06.2020 - 08:51

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

Комментарий оставлен 04.06.2020 - 08:55

Ответы