Отображение в блоке случайного изображения из определенной галереи (модуль 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));
  }
?>

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

<?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++;
  }
?>

Dalay

Комментарии

Приведенный вами код не захотел работать по 6-ой
А вот такой заработал:

  $gallery_name='Enter the name of the gallery here';
  $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));
  }

Подскажите пожалуйста, как вывести все картинки в галерее, а не только случайную?

Да, спасибо, что заметили, не под шестерку код, исправлю.

Для вывода всех изображений определенной галереи «готовой» функции в коде модуля не нашел, посему «собираем» вывод самостоятельно. Например вот так(в черновом исполнении):

<?php
$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%D1%8B%D0%B5_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B_%D1%81%D1%82%D0%B8%D0%BB%D0%B5%D0%B9

http://htmlbook.ru/css

спасибо) но в итоге оно как-то само собой правильно заработало)))
попутно еще вопрос, правда не по этой теме - вставка формы Обратной связи в блок - все хорошо, что поля ввода имени и почты "уезжают за границы левой колонки - как это исправить? только можно конкретный совет, а не отсылку на википедию?)

Ковыряйте тему оформления. Точнее файл style.css вашей текущей темы оформления. Ищите

класса или ID элемента, и задавайте ему значение
width: ...px;
и
max-width: ...px;
overflow: hidden;
(где ... кол-во пикселей, задающих ширину вашего элемента в блоке, не превышающее значение заданное в style.css темы для определения ширины блока).

Так же проверьте значения margin и padding для элементов формы. (Текстовых полей, кнопок, чек-боксов и прочего)

Удачи.

Ок. Конкретный, без отсылки: средствами CSS.

И я вовсе не прикалываюсь, Vadim. Поверьте, на подобный вопрос дать совет конкретнее практически нереально.