Как сделать следующее:
- при добавлении нового материала (статьи или новости), можно было бы прикреплять определенное количество картинок именно к этому материалу, но сделать так, чтобы картинки выводились не в тексте, а в отдельном блоке.
Первостепенная задача именно в выводе дополнительных картинок в отдельном блоке. Можно даже без сторонних аплодеров, ресайзеров и т.д. Мне не трудно нарезать картинки в фотошопе и залить их по ftp. Но если процесс будет автоматизирован - естественно жирный плюс!
Чтобы продемонстрировать наглядно, как примерно должно выглядеть, сделал тестовый вариант, тупо создав новый блок и вставив в него ссылки на изображения:
Друзья, я в друпале еще чайник, да и в программирование не силен. Прошу извинить, если что не так, но очень раcсчитываю на поддержку! Весь форум перерыл, но так решения и не нашел.
Заранее благодарен за помощь!
Комментарии
попробуйте модуль node_images. Он автоматизирует создание миниатюр нужной ширины прикрепляемых к ноде. В настройках типа материала для этого модуля нужно указать ручной вывод изображений при просмотре ноды. Тогда вывод изображений можно будет сделать в любом месте шаблона, пример вывода есть в файле node-example.tpl.php.
Можно сделать по-другому, но наверное это будет не очень удобно.
С помощью Views создать блок с нужными картинками и выводить его вертикально через Views Carousel на странице нужной ноды, но в случае если Вы создаете много таких нод, то, конечно, такой вариант не подойдет.
Хотя если Вы не ленивый, то можете попробовать.
Есть такая проблема, блоку недоступна переменная $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 там один или два будет максимум. Выберешь адреса к картинкам, отсортируешь и выведешь как тебе нужно.
Можешь написать мне я тебе скрипт выборки дам.
в блоке действительно текущая нода недоступна. Стандартные урлы или нет, все равно arg() будет возвращать внутреннее представление текущего адреса, т.е. вида node/nid. Получается в блоке нужно выполнить такой код:
// здеcь код вывода изображений массива $node->node_images можно через темизирование модуля
print theme('node_images_view', $node, 0, 1);
}
Огромное Вам спасибо! Понял, в каком направлении двигаться. Модуль node_images установил, все работает. Если вставлять код
<?php print $node->node_images; ?>
в node.tpl.php , то все работает. Так и не понял, как заставить тоже самое работать в блоке... Приведенный в цитате код для меня не более, чем набор символов. Если не сложно, пожалуйста, напишите, какой именно должен быть код в блоке, чтобы все заработало?О, Боги! Задача решина!!!
Все оказалось проще, чем я думал.
Вообщем, с помощью node_images прикрепляем картинки к ноде.
Создаем блок, в котором пишем
<?php $node = menu_get_object('node'); ?>
<?php print $node->node_images; ?>
Все работает.
не совсем, на тех страницах где нет картинки выплывает квадратик с надписью Array, т.е надо ставить исключения еще
Почему именно в друпал-блоке? Можно было просто шаблон поправить и все.
2 baser: хм... у меня ни чего не выплывает... На тех страницах, где нет картинок в блоке пусто. Потестил в опере, мозиле, осле 6 и 7 - все ровненько.
2 Химический Али: Ну так блок уже есть, им удобно управлять. Смотрится и работает отлично! И главное - просто. 2 строчки добавить
пробовал на теме Waffles (там просто блоки в рамку забиваются), на других темах вроде бы нет такого
Попробуй вместо первого варианта кода вставить в блок следующий код:
<?php $node = menu_get_object('node'); ?>
<?php if ($node->node_images) { ?>
<?php print $node->node_images?>
<?php }?>
Вот теперь практически идеальный код для вставки в блок для node_images