(РЕШЕНО) Новости для конкретной ноды

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

Аватар пользователя WebFamily WebFamily 5 мая 2012 в 17:41

Есть проект каталог фирм

Хочется, чтобы на странице каждой фирмы были свои новости. Я так понимаю, что это как-то делается модулем node reference.

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

Кто подскажет куда копать? Большое всем спасибо, кто не пройдет мимо))

Комментарии

Аватар пользователя Antoniy Antoniy 5 мая 2012 в 18:15

Если фирмы являются пользователями с определенной ролью, тогда уж user reference. Ну а если они пользователи и будут создавать только новости (раздать соответствующие права), то незачем Ставить reference, достаточно авторство нод пользователем.

Передо мной стоит похожая задача, только не новости, а товары Ubercart. Сначала ставил user reference, а потом воспользовался Бритвой Оккама и решил использовать возможности Drupal "из коробки". А когда создавать ноды фирмы под админом, ставить в авторах эту фирму.

Аватар пользователя Advin Advin 5 мая 2012 в 18:18

Я бы посмотрел возможность сделать нечто подобное через таксономию и модуль taxonomy access control.
Те есть тип материала "новость", с обязательным термином "фирма", права на конкретный термин (название фирмы) выдаются представителям фирм (если я верно понял).
Ну а далее выводим список новостей на странице каждой фирмы (способ зависит от того, как у Вас каталог фирм сделан.)

Аватар пользователя Antoniy Antoniy 5 мая 2012 в 18:24

Advin wrote:
Я бы посмотрел возможность сделать нечто подобное через таксономию и модуль taxonomy access control.

Тоже решение "из коробки". И получается, чтобы выводить новости конкретной фирмы, не надо создавать для этого views. Может тоже так сделаю.

Аватар пользователя Antoniy Antoniy 5 мая 2012 в 18:27

А еще хорошо бы совместить. Но надо, чтобы при создании пользователя-фирмы автоматом создавался термин-фирма и, соответственно, при создании новости этой фирмы автоматом проставлялась категория этой фирмы. А при клике на категорию фирмы - вывод профиля и всех новостей этой фирмы. Smile

Аватар пользователя WebFamily WebFamily 5 мая 2012 в 18:37

У меня все организовано следующим образом:

Есть каталог фирм. Фирма - это тип материала. Если найдется пользователь, который заявит, что это его фирма, я ему передаю права на редактирование только этой фирмы.

Все-равно не вижу здесь решения как организовать новости для фирмы...

Аватар пользователя Antoniy Antoniy 5 мая 2012 в 18:45

Дать этому пользователю права на создание типа материала новости, а на редактирование только собственных (созданных им новостей) edit own новостей.

Делать views с аргументом фильтром по автору (ID пользователя из URL) и фильтром по типу материала (новости) и выводить этот views блоком под профилем пользователя. В каждой новости будет отображаться имя автора со ссылкой, при клике на автора посетитель попадает в профиль автора и видит там его новости.

Аватар пользователя Antoniy Antoniy 5 мая 2012 в 18:48

И при таком раскладе связать ноды-фирмы с профилем. Под Drupal 7.x так не делал, вроде модуль Profile 2 такое делает, аналог Contetnt Profile для Drupal 6.x

А если без этого, то да Node Reference

Аватар пользователя Antoniy Antoniy 5 мая 2012 в 19:00

Как это можно решить (но под Drupal 6.x):
Создается представление (views) с полями (допустим дата содания, заголовок, анонс). Затем ставится аргумент по полю node reference (поле node reference материла новости): подстановка аргумента по умолчанию > Тип аргумента по умолчанию: ID материала из URL > Проверка: Материал - Типы: Фирма > Тип аргумента: ID материала.

В общем копать views drupal 7.x

Аватар пользователя Antoniy Antoniy 5 мая 2012 в 19:04

Только, как я считаю, большой минус при создании новостей фирмы сотрудником этой фирмы - ему придется. создавая новость, выбирать в поле node reference свою фирму из десятка, а то и сотни других. Если это админ сайта делает, то не такой минус.

Аватар пользователя Antoniy Antoniy 5 мая 2012 в 19:10

Хотя, возможно, есть решение, чтобы определенное значение node-reference выставлялось автоматом в зависимости от конкретного пользователя, создающего ноду. Тогда вообще сказка, можно сказать Smile

Аватар пользователя Antoniy Antoniy 5 мая 2012 в 19:16

Поле node reference можно сделать, как автозаполняемое поле. По идее сотрудник фирмы начинает вводить название своей фирмы и ему выпадают похожие варианты. Тогда его задача облегчается.

Аватар пользователя WebFamily WebFamily 5 мая 2012 в 19:20

Идеально было бы, если после передачи прав пользователю на управление фирмой (нодой) он мог бы просто публиковать новости, которые автоматом бы отображались на странице фирмы. Было бы неплохо))

Аватар пользователя Antoniy Antoniy 5 мая 2012 в 19:27

Тогда, думаю, надо искать решение в таком направлении:
Для ноды фирмы делается поле user reference, где выставляется тот пользователь (сотрудник этой фирмы), который будет создавать свои новости. А новости выводить с помощью Views, исходя из аргумента по этому полю user reference и аргументу "автор ноды". Если такое получится, то сотруднику надо будет только постить новости, без всяких выставлений reference в поле.

Аватар пользователя Antoniy Antoniy 5 мая 2012 в 19:30

Или же прописать автором ноды-фирмы имя пользователя этого сотрудника, т. е. без user reference. Поищите в поиске на drupal.ru и других друпал-сайтах, может кто-то уже решал нечто подобное

Аватар пользователя WebFamily WebFamily 5 мая 2012 в 19:46

Думаю использовать модуль Node Access User Reference, он дает возможность пользователю, за которым закрепили фирму, редактировать эту фирму. Потом, как вы предложили, блоком views с помощью аргументов вывести на странице фирмы новости, принадлежащие пользователю, за которым закреплена фирма. Буду пробовать, надеюсь это вообще реально сделать))

Аватар пользователя WebFamily WebFamily 5 мая 2012 в 21:10

Сделал тип материала "новости", создал пользователя "test" и опубликовал из его аккаунта "новость 1" (пользователю присвоил одну из фирм с помощью модуля Node Access User Reference), создал представление, с помощью которого на странице профиля появилась вкладка "новости фирмы". А что прописывать в блоке views, который должен отображать на странице фирмы эти новости что-то не пойму никак...

Аватар пользователя Antoniy Antoniy 5 мая 2012 в 22:32

Поюзал Views на своем проекте, где тоже ноды фирм и надо контент фирмы (продукты и что угодно еще) выводить под нодой фирмы. Проект на Drupal 6.x

Блин, оказалось все просто:
1. Модуль Pathauto + модуль Token. В автоматических алиасах для типа материала "Фирма" (профиль фирмы) ставим [author-name-raw]/profile (можно без /profile, но тогда надо, чтобы в алиасах user profile не стояло имя пользователя, а то конфликт будет)
Это позволит в URL ноды-фирмы выводить имя пользователя (сотрудника фирмы), который создал профиль своей фирмы.

2. Создаем новости, где автором будет сотрудник фирмы.

3. Создаем представление Views типа Материал. Дисплей Блок.
Стиль строки: Поля. Создаем поле, например, Node: Title
Ставим фильтр: Тип материала - Новости

Идем в аргументы и добавляем User:Uid.
В нем: Provide default argument (аргумент по умолчанию) >
Default argument type: User ID from URL >
Галочка на Also look for a node and use the node author (типа искать материала, если у них автор из аргумента)

4. Идем в управление блоками и ставим этот блок View в нужное место. В результате блок показывает новости фирмы на странице (профиле) фирмы.

P.S.: Для Drupal 7.x не знаю как, но может аналогию можно сделать.

Аватар пользователя WebFamily WebFamily 5 мая 2012 в 22:33

"Kremenetskiy" wrote:
И не надо никаких полей reference. Все решается с помощью автора ноды

Все гениальное просто надо пробовать)) Только вот маюсь как назначить ноде нового автора.

Аватар пользователя Antoniy Antoniy 5 мая 2012 в 22:37

WebFamily wrote:
Только вот маюсь как назначить ноде нового автора.

В D6 это решается так: создаем пользователя, идем в ноду и в поле Authoring information где имя автора и дата создания ставим автором этого пользователя (поле с автозаполнением). Сохраняем.

Аватар пользователя WebFamily WebFamily 5 мая 2012 в 22:41

"Kremenetskiy" wrote:
В D6 это решается так: создаем пользователя, идем в ноду и в поле Authoring information где имя автора и дата создания ставим автором этого пользователя (поле с автозаполнением). Сохраняем.

Да все банально просто)) Только доперло! А я начал копать с самого сложного))

Аватар пользователя WebFamily WebFamily 5 мая 2012 в 22:59

Решение гениальное и очень легкое, но есть одно НО, если я сам буду создавать заведения от имени админа, то все мои новости на сайте будут отображаться под каждым таким заведением, созданным мною)). Получается надо при создании новой фирмы создавать нового пользователя либо свои новости публиковать с отдельного аккаунта, например "Редактор новостей". В принципе решение все-равно очень хорошее! Спасибо тебе Kremenetskiy!!!

Аватар пользователя Antoniy Antoniy 5 мая 2012 в 23:12

Пожалуйста! В D6 под админом можно назначать нодам любых пользователей и это делает ноду так, как будто ее создавал пользователь, а не админ.

В принципе можно так: создаем роль пользователя, например "Сотрудник Фирмы" с определенными правами на создание и редактирование своих нод типа Фирма и Новость. Делаем регистрацию, где новый пользователь обязательно должен будет выбрать определенную роль. Если выбирает роль "Сотрудник фирмы", то при регистрации сделать так, чтобы пользователь заполнял некоторые обязательные поля ноды "Фирма". Заполнил, жмет зарегистрироваться и нода "Фирма" уже им создана. Потом он логинится и видит что еще может создавать новости.

Такая регистрация в D6 создается с помощью модулей Content profile и Autoassignrole вот тема про это Для D7 это подобное вроде как создается с помощью модуля Profile 2 (где мелькала на оруме инфа про это)

Аватар пользователя WebFamily WebFamily 5 мая 2012 в 23:18

Я думаю первого решения более достаточно. Вот, что получается http://esaro.ru/kafe/art-cafe-biennale-66
Справа в столбце новости фирмы. Думаю остановлюсь на этом решении ))) Еще раз спасибо. Тему переименовываю в РЕШЕНО!))

Аватар пользователя Antoniy Antoniy 5 мая 2012 в 23:20

Да супер. Но если сделать такую регистрацию, как я описывал, то админу вообще не надо парится Smile только если юзеры-сотрудники что-нибудь накосячат, когда посты создавать будут, т. е. только модерация останется.

Аватар пользователя WebFamily WebFamily 5 мая 2012 в 23:22

"Kremenetskiy" wrote:
то админу вообще не надо парится

Я раньше пробовал так, но там тоже есть свои нюансы с выводом в список тизеров и полного просмотра. Ведь фирма будет являться практически юсером.

Аватар пользователя Antoniy Antoniy 5 мая 2012 в 23:27

WebFamily wrote:
Ведь фирма будет являться практически юсером.

В этом то и прелесть. У меня много времени уходит, чтобы создавать за них их контент. Лучше это время использовать на функционально-информационное развитие ресурса.

Аватар пользователя WebFamily WebFamily 5 мая 2012 в 23:31

"Kremenetskiy" wrote:
В этом то и прелесть

Да это большой плюс, но темизация вывода списков этих самых юсеров меня немного напугала) Толком не смог разобраться, как красиво все это оформить. В будущем все же наверное еще буду пробовать.

Аватар пользователя WebFamily WebFamily 5 мая 2012 в 23:32

"WebFamily" wrote:
Создал отдельную тему с этим решением. Пригодится.

Конечно пригодиться даже самому себе на будущее!

Аватар пользователя Antoniy Antoniy 6 мая 2012 в 11:37

А вопросы по esaro.ru можно? Меню по заведениям делалось на таксономии и quicktabs? Или табы отдельно прикручивались скриптами, а не модулем Drupal?

Сегодня подумал и решил, а не попробовать ли мне собрать сайт фирм на Drupal 7, пока еще на рабочем не так много контента, да и все равно систему надо переделывать. Вот планирую, как делать..

И исходя из этого вопросы: значит ноды фирм - это тип материала.

А поля Адрес делались свободно заполняемые или там со стороны пользователя какая-то база для заполнения, например, по таксономии?

И поле Телефоны как сделано? Думаю может составное поле делать для телефонов, чтобы формат соблюдался, или проверку какую.

Остальные поля типа Кухня, Тип кафе, думаю, со выпадающими значениями селектами? или там в значениях термины из спец словаря..

В заголовках нод Фирм сотавной заголовок. Например, Кафе - это термин? А Название - уже node title? Подскажи, пожалуйста, как это сделано.

Аватар пользователя WebFamily WebFamily 9 мая 2012 в 1:17

"Kremenetskiy" wrote:
вопросы по esaro.ru

Фирма - тип материала
Кафе - это термин
Название - node title
Меню по заведениям на quicktabs делалось

Аватар пользователя Antoniy Antoniy 9 мая 2012 в 1:27

Спасибо!

Я сегодня прикрутил в поле Адрес Hierarchical Select по терминам таксономии. Создал словарь и залил в него улицы из КЛАДР. Все хорошо, но для Hierarchical Select уровня улиц желательно автозапонение. Пока копаться некогда, как его сделать.

Решил остаться на 6-ке. Для 7-ки нет модуля Ubercart MarketPlace, а к фирмам надо еще прикручивать возможность продавать свои товары/услуги.

Все же как хорошо, что решение вывода по сотруднику-автору найдено. Сейчас смотрю и везде стоят reference, брр...

Аватар пользователя Antoniy Antoniy 24 мая 2012 в 12:15

Как ограничить выбор в поле Node Reference только тех нод, которые создал юзер, редактирующий материал, который нужно связать. http://www.drupal.ru/node/29855

Например, пользователь фирмы постит новость фирмы и благодаря аргументу по текущему пользователю, в списке для выбора Node Reference будет только его фирма, или фирмы (если он создал несколько фирм). Так же с помощью патча для Node Reference и коды, приведенных в http://www.drupal.ru/node/29855, можно подставлять значение по умолчанию.