2009
06
Май
Отображение в блоке случайного изображения из определенной галереи (модуль Image)
Сей сниппет даст возможность показывать в блоке фото в случайном порядке из уже существующих на сайте галерей.
Случайной является лишь изображение, галерея/категория(термин таксономии словаря галереи) задается в коде сниппета. Фотография, в данном случае, будет так же и ссылкой на ноду выводимого изображения.
<?php
$gallery_name='Название галереи';
$term = taxonomy_get_term_by_name($gallery_name);
$tid = $term[0]->tid;
$thumbs = 3; // Количество выводимых изображений.
$images_arr = (image_get_random($count = $thumbs, $tid));
foreach ($images_arr as $images){
print l(image_display($images, 'thumbnail'),'node/'.$images->nid, array('html'=>TRUE));
}
?>
$gallery_name='Название галереи';
$term = taxonomy_get_term_by_name($gallery_name);
$tid = $term[0]->tid;
$thumbs = 3; // Количество выводимых изображений.
$images_arr = (image_get_random($count = $thumbs, $tid));
foreach ($images_arr as $images){
print l(image_display($images, 'thumbnail'),'node/'.$images->nid, array('html'=>TRUE));
}
?>
Альтернативный вариант сниппета. Если не нужно, что бы фотография была ссылкой, то используем его.
<?php
$gallery_name='Название галереи';
$term = taxonomy_get_term_by_name($gallery_name);
$tid = $term[0]->tid;
$thumbs = 3; // Количество выводимых изображений.
while ($thumbs<1)
{
$images = (image_get_random($count = 1, $tid));
print image_display($images[0], 'preview');
$thumbs++;
}
?>
$gallery_name='Название галереи';
$term = taxonomy_get_term_by_name($gallery_name);
$tid = $term[0]->tid;
$thumbs = 3; // Количество выводимых изображений.
while ($thumbs<1)
{
$images = (image_get_random($count = 1, $tid));
print image_display($images[0], 'preview');
$thumbs++;
}
?>
Dalay
Комментарии
Публикации с похожими темами
- Teaser Image: автоматическая генерация изображения для тизера
- Модуль jQuery Fancybox для Drupal 6
- Lightbox-эффекты для изображений с использованием jQuery. Дружим Drupal и скрипт FancyBox.
- Внедрение скрипта Highslide в тему Drupal`а
- О наиболее простом варианте (по мнению автора) добавления изображений в ноды
- Вывод в блоке изображений модуля Node Images.
Приведенный вами код не захотел работать по 6-ой
А вот такой заработал:
$term = taxonomy_get_term_by_name($gallery_name);
$tid = $term[0]->tid;
$thumbs = 4;
$images_arr = (image_get_random($count = $thumbs, $tid));
foreach ($images_arr as $images){
print l(image_display($images, 'thumbnail'),'node/'.$images->nid, array('html'=>TRUE));
}
Подскажите пожалуйста, как вывести все картинки в галерее, а не только случайную?
Да, спасибо, что заметили, не под шестерку код, исправлю.
Для вывода всех изображений определенной галереи «готовой» функции в коде модуля не нашел, посему «собираем» вывод самостоятельно. Например вот так(в черновом исполнении):
$gallery_name = 'Название галереи';
$count = '10'; // Лимит на вывод изображений. На всякий случай пусть будет.
$sql = "SELECT n.nid, n.title
FROM {node} n
INNER JOIN {term_node} tn ON n.nid = tn.nid
INNER JOIN {term_data} td ON tn.tid = td.tid
WHERE td.name = '%s' AND
n.status = 1
ORDER BY n.created DESC";
$result = db_query_range(db_rewrite_sql($sql),$gallery_name,0,$count);
$images = array();
while ($node = db_fetch_object($result)) {
$images[] = node_load(array('nid' => $node->nid));
}
foreach ($images as $img) {
print l(image_display($img, 'thumbnail'), 'node/'. $img->nid, array('html' => TRUE));
}
?>
А как быть, если на сайте 10 галерей, а мне надо выводить изображение только из девяти (т.е. из всех, кроме одной)?
Перестроить запрос к базе. Подробности тут и тут.
Спасибо, но не осилю. Я не программист совсем :(
Подскажите, а как вывести изображения в два столбика? хочу вывести 4 справа - но они сильно вниз уезжают, если в один столбик идут.
http://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D1%81%D0%BA%D0%B0%D0%B4%D0%BD%...
http://htmlbook.ru/css
спасибо) но в итоге оно как-то само собой правильно заработало)))
попутно еще вопрос, правда не по этой теме - вставка формы Обратной связи в блок - все хорошо, что поля ввода имени и почты "уезжают за границы левой колонки - как это исправить? только можно конкретный совет, а не отсылку на википедию?)
Ок. Конкретный, без отсылки: средствами CSS.
И я вовсе не прикалываюсь, Vadim. Поверьте, на подобный вопрос дать совет конкретнее практически нереально.