Темизация Views и Image

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

Аватар пользователя awd777 awd777 7 декабря 2011 в 12:29

Добрый день

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

Имеется Views блок по имени v_product_block, unformatted, field. В нём Должны быть 3 фото, при наведении на которые появляются альтернативные фото.
Создал тип материала, в нём 2 поля - field_photos (несколько фото) и field_hover_photo. В настройках вью выставил, чтобы выводилось только 1-е фото из field_photos.
Но кастомизировать вывод конкретных полей не получается в шаблоне..

Сейчас создал только views-view-unformatted--v-product-block.tpl.php (остальные дефолтные):


<?php
?>
<?php 
foreach ($rows as $id => $row): ?>
    <div>
        <?php print $row['field_photos'];?>
    </div>
<?php endforeach; ?>

Плодит только пустые дивы. Просто print $row выводит фото друг за другом в отдельных дивах и т.д. Разметка не та, что мне нужна.
Что мне сделать, чтобы получить просто url'ы этих фото?

Комментарии

Аватар пользователя divined divined 7 декабря 2011 в 13:02

imagecache,

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

<a href="путь до большой картинки">
  <img src="путь до маленькой картинки">
</a>

далее уже javascript'ом придется писать обработчик наведения на картинку:

var mydiv = document.createElement('div'); //создаете елемент типа div
$(mydiv).attr({'id':'mydivid','style':'display:none; position: absolute;'}); //присваиваете ему id и назначаете стиль чтобы его не отображать сначала
$('#container_id').css('position', 'relative'); //меняем позиционирование родительского контейнера
$('#container_id').append(mydiv);

$('img').mouseover(function(e){ //Ставите обработчик на наведение на картинку
  var imgsrc = $(this).parent().attr('href'); //Берете адрес до большой картинки
  $(mydiv).html('<img src='+imgsrc+'/>'); //Помещаете картинку в наш div
  var xpos = e.clientX;
  var ypos = e.clientY; //Берем координаты курсора
  $(mydiv).css({'top':ypos, 'left':xpos, 'display':'block' }); //Устанавливаем положение нашего div'а и отображаем его.
});

Осталось только написать событие mouseout чтобы делать наш div опять скрытым и готово.
Мне кажется я не все случаи учел с координатами, поэтому в качестве контейнера лучше выбрать ссылку Smile

Аватар пользователя awd777 awd777 7 декабря 2011 в 15:21

Спасибо, но проблема была несколько в другом, именно в темизации вывода вьюс. С JS проблем нет.
Нужна была верстка строки вида ...<a><img /><img /></a>...

Проблему решил.
Добавил views-view-fields--v-product-block.tpl.php:

<?php<a class="b-prodnew-link" href="<?php print $fields['path']->content?>">
    <?php print $fields['field_photos_fid']->content?>
    <?php print $fields['field_hover_photo_fid']->content?>
</a>?>

До этого добавлял тоже, забывал про fid и content.