Всех с Новым годом и наступающим Рождеством!
Перед такой проблемой остановился - нужно новости поместить
в блоке левой части страницы.
Если подробнее, то задача описана может быть так:
у сайта будет несколько редакторов, у каждого свой раздел (страница),
как сделать чтобы при заходе пользователя (не редактора) на сайт, он
видел новости в куче с левой стороны страницы, а когда заходил на
определенную страницу (редактитуемую), видел только новости этого
раздела.
Помогите мне, пожалуйста !
Комментарии
Создаете новый блок с фильтром PHP и привязываете вывод к таксономии (получить таксономию можно функцией
node_load(arg(1))
). Вывод формируете подобно блоку recent posts.---
http://drupal5.ru - информация для друпателей
качественные ответы только на качественные вопросы
Буду разбираться, спасибо!
rapitosov@drupal.org! мне ужасно неудобно... можно чуть чуть подробнее как это сделать?
Создал новый блок, указал радиобатоном "Показать, если введенный PHP-код возвращает TRUE ",
создал таксономию и на этом застрял. Тут без АПИ не обойтись, или я мудрю?
Как именно привязать таксономию к блоку?
Мудрить действительно не стоит. Условный переход встраивается в тело блока, нет смысла использовать условие видимости блока, потому как пустой блок в любом случае не показывается. В блок пишите примерно такой код:
Только возможно придется изменить определение $parent, так как этот пример писался под модуль category.
---
http://drupal5.ru - информация для друпателей
качественные ответы только на качественные вопросы
даже когда пишу
<?php
global $node;
global $user;
$node = node_load(arg(1));
print_r($node);
?>
Drupal выдает кучу ошибок. С этим примером должен обязательно разобраться. А есть ссылки на API?
не работает именно - $node = node_load(arg(1)) без этой строки что-то получается.
Это может работать только на страничках публикаций, где arg(1) соответствует идентификатору текущей публикации. Можно, во избежание ошибок, обернуть код в if(arg(1)) {}
---
http://drupal5.ru - информация для друпателей
качественные ответы только на качественные вопросы
сналача понял не верно, теперь проясняется.
так решиться проблема с просмотром публикации на странице публикации, а как можно вытянуть на главную страницу публикации всех авторов?
с таксономией очень удобно! СПАСИБО за совет - структуризация получается очень удобная.
к вопросу о всех новостях/публикациях в блоке слева. Думаю попробовать парсить страницу
с материалами публикаций (из таксономии).
Второй вариант, это подключаться к базе и брать информацию из нее. В этом случае надо смотреть на готовые встроенные функции на drupal.org. Правильно думаю?
Из таксономии не удобно доставать список публикаций, нужно писать расширенный заброс к базе.
---
http://drupal5.ru - информация для друпателей
качественные ответы только на качественные вопросы
а как, на ваш взгляд, лучше?
сейчас для одной новости/термина пишу в блоке
$node=taxonomy_get_term(3);
echo $node->name.'
';
и выводиться. Конечно возникает проблема выборки
нужных term, да и по датам придется сортировать, но
это большой прогресс...
а с node_load(arg(1)) не разобрался, пока:)
если с запросами к бд разбираться, можно сразу с
db_query() начинать или подключаться нужно и еще что-то?
Смотрите в код блока последних публикаций, дополняйте запрос фильтром таксономии. Конечно, там придётся писать Join.
---
http://drupal5.ru - информация для друпателей
качественные ответы только на качественные вопросы
нашел на http://drupal.org/node/75707 что при использовании
node_load() появляется ошибка точно как у меня.
далее, по ссылке http://drupal.org/node/22218#node_load
говорится... не понял что говорится. Нужно использовать
новый вариант функции и указывается та же самая функция
у меня в списке блоков есть только "Последние комментарии"
JOIN это из области перекрестных запросов?
Да, слегка соврал, смотрите блок "последнии обсуждения форума" из модуля форумов. Там же сразу будет понятно как делать выборку из словаря.
---
http://drupal5.ru - информация для друпателей
качественные ответы только на качественные вопросы
есть только "Новые обсуждения форума", "Активные обсуждения форума", "Последние комментарии" и нигде нет настроек в блоках чтобы можно было настраивать фильтры.
Что не так?
Вот любой из первых двух, смотрите в код блоков, там идет запрос на выборку последних публикаций ассоциированных со словарем форума. Анналогично можно написать код для выборки публикаций ассоциированных с другим словарем.
Есть альтернативное предложение: Вы рисуете схему строения словарей и в каких ветках каких словерей что отображать, а я Вам напишу код блока, пиво пришлете почтой
---
http://drupal5.ru - информация для друпателей
качественные ответы только на качественные вопросы
Первый раз на такую глубину ушел в drupal - копаюсь в листинге кода. Придется разбираться, хотя и с трудом.
Насчет пива не вопрос:)
по хорошему:
if(arg(0) == 'node' and is_numeric(arg(1)))
{}
Как всегда твои замечания дельные и толковые, благодарствую
---
http://drupal5.ru - информация для друпателей
качественные ответы только на качественные вопросы
работает на 5! СПАСИБО!
if(arg(0) == 'node' and is_numeric(arg(1)))
{echo "...";}
действительно работает. пишу
if(arg(0) == 'taxonomy' and arg(1) == 'term')
{echo "...";}
выводиться на странице уровнем выше. Спасибо Dan!
Ага, таки вот в чем дело, мой пример был для публикаций, а для таксономии нужно использовать arg(2)
---
http://drupal5.ru - информация для друпателей
качественные ответы только на качественные вопросы
соответственно можно еще подобным образом по пользователю фильтровать вывод в блоке? т.е. можно не залезать в базу серьезно.
С пользователем всё гораздо проще, достаточно объявить:
global $user;
в этом объекте уже содержится вся информация о пользователе.
---
http://drupal5.ru - информация для друпателей
качественные ответы только на качественные вопросы
> т.е. можно не залезать в базу серьезно.
лесть в базу - последнее дело (не в смысле пОдло, а в смысле "когда больше ничего не помогает :). сначала нужно поискать существующие переменные/функции - благо исходный код открыт
Чем дальше, тем больше нравиться drupal и сообщество на drupal.ru. Спасибо за поддержку!