[Решено] Вставка в Contemplate серии изображений с пресетами Imagecache с открытием по клику оригинала

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

Аватар пользователя tanya_b tanya_b 11 мая 2011 в 22:42

Есть поле field_photos куда загружаются несколько фотографий.
Есть пресет detsad-small в Imagecache, который служит для уменьшения превьюшек.
С превьюшек должны быть ссылки на оригинальные фото.

Скажите, пожалуйста, что неправильного в этом коде, что все превьюшки выводятся одинаковыми? А ссылки уже идут на правильные оригинальные картинки.
Это у меня в Contemplate:

<div class="photos">
                    <?php foreach ($node->field_photos as $images) { if ($images['filepath'] != $imagePath) { ?>
                    <a href="<?=base_path()?><?=$images['filepath']?>" title="<?=$title?>" class="imagefield-fancybox">
                    <img src="<?=base_path()?>sites/default/files/imagecache/detsad-small/<?=$images['filename']?>" alt="<?=$title?>"></a>
                    <?php } } ?>
</div>

Комментарии

Аватар пользователя tanya_b tanya_b 11 мая 2011 в 23:37

Ну вообще я взяла кусок с работаешего решения страницы уберкарта Smile Видать там смысл был, но в моих неумелых ручках потерялся.
Вот полный код:

<div class="product-image">
<?php $imagePath = $node->field_image_cache['0']['filepath']; ?>
<div class="main-product-image">              
                <a href="<?=base_path()?><?=$imagePath?>" rel="lightshow[prod]" class="imagefield-fancybox">
                    <img src="<?=base_path()?>sites/default/files/imagecache/product/<?=$imagePath?>" alt="<?=$title?>" title="<?=$title?>">
                </a>
</div>
                <div class="other_imgs">
                    <?php foreach ($node->field_image_cache as $images) { if ($images['filepath'] != $imagePath) { ?>
                    <a href="<?=base_path()?><?=$images['filepath']?>" title="<?=$title?>" class="imagefield-fancybox">
                    <img src="<?=base_path()?>sites/default/files/imagecache/uc_thumbnail/<?=$images['filename']?>" alt="<?=$title?>"></a>
                    <?php } } ?>
                </div>
            </div>

в интернете увидила еще такой кусочек, но у меня такое тоже не проходит, вообще какая-то бурда с путями получается:

<?php
foreach((array)$field_photos as $item) {
print '<a href="'.$item['filepath'].'"><img src="/files/imagecache/detsad-small/'.$item['filepath'].'" title="'.$item['title'].'" alt="'.$item['alt'].'"></a>';
}
?>
Аватар пользователя VladoMire VladoMire 12 мая 2011 в 0:50

Если у Вас поле CCK и установлен модуль contemplate, то проблем не должно быть. Зайдите на страницу шаблона этого типа материалов (адрес страницы (admin/content/types/ваш_тип_материала/template) и посмотрите переменные и соберите, что хотите.
Если Вы правильно записали поле field_photos, то путь к картинке должен быть
примерно такой $node->field_photos[0]['view'];

Аватар пользователя tanya_b tanya_b 12 мая 2011 в 9:56

VladoMire, таким способом вставляются картинки, но без пресета Imagecache. То есть оригинального размера. А как мне указать, чтобы использовался пресет?

Аватар пользователя VladoMire VladoMire 12 мая 2011 в 22:53

у меня с пресетом так вставляет. Дело в том, что вы эту переменную должны отрегулировать следующим образом:
идете в раздел отображения полей: путь (admin/content/types/ваш_тип_материала/display):
Там настраиваете отображение и в тизере и в основном материале, как душе угодно выставляя из выпадающего списка хоть с пресетом, хоть без или каким другим образом.
Сделайте, так и все будет хорошо:)))

Аватар пользователя tanya_b tanya_b 12 мая 2011 в 23:17

Сделала Smile

<div class="photos">
 <?php foreach ($node->field_photos as $images) { if ($images['filepath'] != $imagePath) { ?>
 <a href="<?=base_path()?><?=$images['filepath']?>" title="<?=$title?>" class="imagefield-fancybox">
 <?php
print theme('imagecache', 'detsad-small', $images['filepath'], $alt, $title);
?></a>
 <?php } } ?>
</div>
Аватар пользователя VladoMire VladoMire 12 мая 2011 в 23:40

Всегда существует несколько способов решения вопроса:))) Бывают нюансы, которые требуют более рациональных решений.