Вывод картинок к статье в отдельном блоке

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

Аватар пользователя Muzykant Muzykant 12 мая 2009 в 2:10

Как сделать следующее:

- при добавлении нового материала (статьи или новости), можно было бы прикреплять определенное количество картинок именно к этому материалу, но сделать так, чтобы картинки выводились не в тексте, а в отдельном блоке.

Первостепенная задача именно в выводе дополнительных картинок в отдельном блоке. Можно даже без сторонних аплодеров, ресайзеров и т.д. Мне не трудно нарезать картинки в фотошопе и залить их по ftp. Но если процесс будет автоматизирован - естественно жирный плюс!

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




Друзья, я в друпале еще чайник, да и в программирование не силен. Прошу извинить, если что не так, но очень раcсчитываю на поддержку! Весь форум перерыл, но так решения и не нашел.


Заранее благодарен за помощь!

Комментарии

Аватар пользователя xanderz xanderz 12 мая 2009 в 13:07

попробуйте модуль node_images. Он автоматизирует создание миниатюр нужной ширины прикрепляемых к ноде. В настройках типа материала для этого модуля нужно указать ручной вывод изображений при просмотре ноды. Тогда вывод изображений можно будет сделать в любом месте шаблона, пример вывода есть в файле node-example.tpl.php.

Аватар пользователя boodooboo boodooboo 12 мая 2009 в 14:35

Можно сделать по-другому, но наверное это будет не очень удобно.
С помощью Views создать блок с нужными картинками и выводить его вертикально через Views Carousel на странице нужной ноды, но в случае если Вы создаете много таких нод, то, конечно, такой вариант не подойдет.
Хотя если Вы не ленивый, то можете попробовать.

Аватар пользователя venom280@drupal.org venom280@drupal.org 12 мая 2009 в 14:38

Есть такая проблема, блоку недоступна переменная $node.
Или что-то вроде того. Не помню точно. Я с таким сталкивался. Просьба не пинать за не точность. Не хочу лезть смотреть :).
Но точно такой массив недоступен. Может в последних версиях добавили. Не знаю.

В общем сделай как тебе советует xanderz. Ставь модуль node_images. Очень удобно прикеплять картинки к одной ноде. Главное клиентам принцип его работы нравится :). Может только моим нравится. Вот пример из моего с nodeimages http://www.korporativ-ural.ru/node/238. Это 5-й.

А в блоке нужно будет обработать $_GET['q'] или $path или если url`ы стандартные то можно arg(1) использовать. В случае arg сделай проверку is_numeric, чтобы node/add ошибку не выдавал. Или твой вариант. В общем нужно узнать nid, а потом вручную сделать запросик к node_images там один или два будет максимум. Выберешь адреса к картинкам, отсортируешь и выведешь как тебе нужно.

Можешь написать мне я тебе скрипт выборки дам.

Аватар пользователя xanderz xanderz 12 мая 2009 в 15:33

в блоке действительно текущая нода недоступна. Стандартные урлы или нет, все равно arg() будет возвращать внутреннее представление текущего адреса, т.е. вида node/nid. Получается в блоке нужно выполнить такой код:

  if (arg(0)=='node' && is_numeric(arg(1)) && ($node=node_load(arg(1))) {
     // здеcь код вывода изображений массива $node->node_images можно через темизирование модуля
     print theme('node_images_view', $node, 0, 1);
  }
Аватар пользователя Muzykant Muzykant 12 мая 2009 в 21:20

xanderz wrote:
в блоке действительно текущая нода недоступна. Стандартные урлы или нет, все равно arg() будет возвращать внутреннее представление текущего адреса, т.е. вида node/nid. Получается в блоке нужно выполнить такой код:

  if (arg(0)=='node' && is_numeric(arg(1)) && ($node=node_load(arg(1))) {
     // здеcь код вывода изображений массива $node->node_images можно через темизирование модуля
     print theme('node_images_view', $node, 0, 1);
  }

Огромное Вам спасибо! Понял, в каком направлении двигаться. Модуль node_images установил, все работает. Если вставлять код <?php print $node->node_images?> в node.tpl.php , то все работает. Так и не понял, как заставить тоже самое работать в блоке... Приведенный в цитате код для меня не более, чем набор символов. Если не сложно, пожалуйста, напишите, какой именно должен быть код в блоке, чтобы все заработало?

Аватар пользователя Muzykant Muzykant 12 мая 2009 в 23:45

О, Боги! Задача решина!!!
Все оказалось проще, чем я думал.
Вообщем, с помощью node_images прикрепляем картинки к ноде.
Создаем блок, в котором пишем

<?php $node menu_get_object('node'); ?>
<?php 
print $node->node_images?>

Все работает.

Аватар пользователя baser baser 13 мая 2009 в 2:08

"Muzykant" wrote:
Все работает.

не совсем, на тех страницах где нет картинки выплывает квадратик с надписью Array, т.е надо ставить исключения еще

Аватар пользователя Muzykant Muzykant 13 мая 2009 в 16:26

2 baser: хм... у меня ни чего не выплывает... На тех страницах, где нет картинок в блоке пусто. Потестил в опере, мозиле, осле 6 и 7 - все ровненько.

2 Химический Али: Ну так блок уже есть, им удобно управлять. Смотрится и работает отлично! И главное - просто. 2 строчки добавить

Аватар пользователя baser baser 13 мая 2009 в 17:28

Muzykant wrote:
2 baser: хм... у меня ни чего не выплывает... На тех страницах, где нет картинок в блоке пусто. Потестил в опере, мозиле, осле 6 и 7 - все ровненько.

пробовал на теме Waffles (там просто блоки в рамку забиваются), на других темах вроде бы нет такого

Аватар пользователя Muzykant Muzykant 13 мая 2009 в 18:04

Попробуй вместо первого варианта кода вставить в блок следующий код:

<?php $node menu_get_object('node'); ?>
<?php 
if ($node->node_images) { ?>
        <?php print $node->node_images?>
<?php 
}?>