Описание

  • strict warning: Declaration of views_handler_field_user_name::init() should be compatible with views_handler_field_user::init(&$view, $data) in /var/www/shvabrashvabr.ru/sites/all/modules/views/modules/user/views_handler_field_user_name.inc on line 61.
  • strict warning: Declaration of views_handler_argument_many_to_one::init() should be compatible with views_handler_argument::init(&$view, $options) in /var/www/shvabrashvabr.ru/sites/all/modules/views/handlers/views_handler_argument_many_to_one.inc on line 169.


Оглавление

Статья получилась большой, по этому я ее разбил на несколько страниц:

  • на первой странице, то есть здесь, размещено описание задачи, описание используемых для ее решения средств, а также первоначальная настройка коллективных блогов;
  • вторая страница рассказывает о настройке прав доступа пользователей;
  • на третьей странице рассказывается о настройке системы рейтингов;
  • четвертая страница посвящена настройке модуля Views, отвечающего за фильтры содержимого;
  • на пятой странице приведено описание дополнительных модулей;

Формулировка задачи

Необходимо разработать коллективный блог с элементами социальной сети, работающий по следующим правилам:

  • любой желающий может зарегистрироваться на сайте;
  • любой зарегистрированный и авторизованный пользователь может писать сообщения (они же "записи", они же "посты") в личный блог и комментировать сообщения других пользователей;
  • любой посетитель может читать сообщения и комментарии оставленные другими пользователями;
  • любой зарегистрированный и авторизованный пользователь может голосовать за чужие посты и комментарии. Эти голоса влияют не рейтинг поста и на рейтинг (карму) пользователя;
  • все посты делятся на две ленты: в одной выводятся только сообщения набравшие определенный рейтинг, а также посты особым образом помеченные модератором. Во второй ленте выводятся все посты. Первая лента выводится на главной странице;
  • пользователи набравшие определенный рейтинг, возможно с премодерацией, могут создавать "коллективные блоги";
  • к каждому посту могут быть привязаны "тэги", на основе которых можно фильтровать контент, а также строить "облака тэгов";
  • пользователи могут создавать списки друзей;

Используемые средства

  • CMS Drupal 5.7 — ядро нашего проекта;
  • модуль Views — инструмент для фильтрации записей по различным критериям;
  • небольшим недостатком модуля Views является то, что все заданные им условия используются с логикой И, для реализации логики ИЛИ понадобится модуль Views Union;
  • для создания коллективных блогов будет использован модуль Oragnic Groups;
  • чтобы иметь возможность задавать псевдонимы коллективным блогам пригодится мой модуль OG Alias, который зависит от модуля CCK;
  • за реализацию голосований отвечают модули Voting API и Vote Up Down;
  • механизм "кармы", а также распределение ролей при получении пользователем кармы определенного уровня реализует модуль User Karma;
  • облака тэгов реализуются при помощи модуля Tagadelic;
  • списки друзей — Buddy List 2 + Usernode;
  • и еще небольшой список модулей, рекомендованных мною для использования: FCKEditor, Global Redirect, Google Analytics, Pathauto, Token, Excerpt, Nodewords;

Подготовительные действия

Скачайте и установите Друпал (ссылка выше), после этого скачайте и распакуйте все приведенные выше модули в папку "sites/all/modules" (это путь относительно корня Друпала). После выполнения этих действий перейдите в админку, в меню "Modules" ("admin/build/modules") и активируйте следующие модули: Buddy API, Buddylist UI, Content, Text, Blog, Path, Usernode, Organic groups, OG Alias, Tagadelic, User Karma, User Karma - give node plugin, User Karma - give votes plugin, User Karma - votes on comments plugin, User Karma - votes on nodes plugin, Views, Views RSS, Views UI, Views Union, Voting API, Vote up/down. Кроме того, вы можете активировать те модули, которые выше в списке я назвал рекомендованными.

Небольшое пояснение

В тексте иногда будут встречаться названия пунктов меню, если это название набрано обычным шрифтом, то это заголовок, если курсивом, то это путь из адресной строки. То есть текст "меню "Acces control" ("admin/user/access")" означает, что сейчас речь идет о меню с названием "Acces control", которое доступно по адресу example.com/admin/user/acccess.

Шаг 1. Настройка коллективных блогов

Первым делом было бы логично создать группы пользователей и раздать права доступа для них, но, для того чтобы позже сделать это одним махом, сначала нужно выполнить настройку модуля Organic Groups. В свойствах этого модуля нужно указать какой тип контента будет использоваться в качестве "домашней страницы" (контейнера) для групп, по этому необходимо в меню "Content types" ("admin/content/types") перейти на вкладку "Add content type" и создать новый тип материала с именем "Коллективный блог" и типом "group".

После того как новый тип материала сохранен нужно зайти в его свойства (в нашем случае это "admin/content/types/group/"), перейти на вкладку "Add field" (она появляется если включен модуль Content, кроме того в группе модулей CCK должен быть активирован модуль "Text") и добавить поле типа "Text — Text Field" с именем (Name) "alias" и заголовком (Label) "Псевдоним". Важно указать именно это имя, так как оно используется модулем OG Alias, для создания псевдонимов. Это поле необходимо сделать обязательным (галочка Required).

Для того чтобы заврешить настройку OG необходимо перейти в меню "Organic groups configuration" ("admin/og/og"), в группе свойств "Group home page" выбрать созданный нами тип "Коллективный блог" и сохранить изменения.

Продолжение на следующей странице.

Шаг 2. Настройка прав доступа

Теперь займемся настройкой прав пользователей. В первую очередь создадим новую группу пользователей в меню "Roles" ("admin/user/roles") и назовем ее, например, "Продвинутый юзер". Позже эта роль автоматически будет присваиваться пользователям, набравшим определенную карму.

Для изменения прав доступа существующих групп пользователей необходимо перейти в меню "Access control" ("administer/user/access") и расставить галочки, приведенные в следующей таблице. Здесь приведены только необходимые настройки, остальные можете менять по своему усмотрению. В этом примере единственным отличием продвинутого пользователя от авторизованного пользователя является возможность создавать коллективные блоги (право доступа "create group content ").

Право доступа для анонима для авторизованного юзера для продвинутого юзера
blog module
edit own blog
(разрешено вести персональный блог)
buddylist_ui module
maintain buddy list
(разрешено вести списки друзей)
view buddy lists
(разрешено просматривать списки друзей)
comment module
access comments
(просмотр комментариев)
administer comments
(администрирование комментариев)
post comments
(размещение комментариев)
post comments without approval
(размещение комментариев без премодерации)
node module
access content
(разрешено просматривать содержимое сайта)
administer content types
(разрешено управлять типами материалов)
administer nodes
(разрешено управлять материалами)
create group content
(разрешено создавать "Коллективные блоги")
create page content
(разрешено создавать материалы типа "Page")
create story content
(разрешено создавать материалы типа "Story")
edit group content
(разрешено редактировать все "Коллективные блоги")
edit own group content
(разрешено редактировать свои "Коллективные блоги")
edit own page content
edit own story content
edit page content
edit story content
revert revisions
(разрешено создавать ревизии)
view revisions
(разрешено просматривть ревизии)
og_alias module
update og alias
(разрешено редактировать псевдонимы коллективных блогов)
user module
access user profiles
(разрешено просматривать профили пользователей)
administer access control
(разрешено менять права доступа)
administer users
(разрешено редактировать профили пользователей)
change own username
(разрешено редактировать свое имя пользователя)
usernode module
edit own usernode
(разрешено редактировать свои персональную страницу)
edit usernodes
(разрешено редактировать все персональные страницы)
views module
access all views
(разрешено просматривать все представления (views, вьюшки))
vote_up_down module
access up-down vote statistic
(разрешено просамтривать статистику голосов за материалы и комментарии)
administer up-down vote
(разрешено управлять голосованиями)
use up-down vote
(разрешено голосовать за материалы и комментарии)
view up-down vote
(разрешено видеть форму голосования)

Следует помнить, что авторизованный пользователь наследует все права анонимного, то есть если у анонима стоит галочка "access content", а у авторизованного юзера — нет, то ему все равно будет разрешено просматривать контент. Точно также любая группа пользователей созданная нами вручную наследует права доступа от авторизованного пользователя.

Продолжение на следующей странице.

Шаг 3. Настройка голосований

Сейчас настроим голосования, для этого в админке необходимо перейти в меню "Vote up/down" ("admin/settings/voteupdown"). Здесь в группе свойств "Node types" установите галочку "Blog entry", то есть мы разрешаем голосовать за контент типа "Запись в блоге", при жалении можно разрешить голосовать и за "Коллективные блоги", тогда надо поставить и эту галку.

В остальных группах свойств также можно:

  • настроить вид голосовалок (классический +1/-1 или альтернативный +1);
  • определить когда отображать эти голосования, а когда нет (в тизерах и полных нодах или в одном из этих вариантов по отдельности);
  • разрешить или запретить голосовать анонимам (если голосование разрешить, то, кроме того, это голосование должно быть разрешено и в "Access control");
  • разрешить или запретить юзерам отменять свои голоса.

Шаг 4. Настройка кармы

На данный момент зарегистрированные пользователи нашего сайта могут создавать записи в блоге, комментировать их и голосовать за/против постов и комментариев. Теперь сделаем так, чтобы эти голоса влияли на карму пользователей, а, в свою очередь, карма влияла на возможности пользователей. Другими словами сделаем так, чтобы при получении кармы определенного уровня юзеры автоматически присоединялись к созданной ранее группе "Продвинутые юзеры".

Для решения этой части задачи перейдем в меню "User karma" ("admin/settings/user_karma") и в группе свойств "Roles eligible for user karma" отметим роли "авторизованные пользователи" и "продвинутые пользователи". Этим действием мы включим механизм кармы для выбранных ролей. После сохранения внесенных изменений в этом же меню "User karma" появятся новые группы свойств для каждой из выбранных ролей. В свойствах кармы для продвинутого юзера в поле "From" поставим, например, цифру 10. Это означает, что набрав 10 очков кармы пользователь автоматически станет "Продвинутым юзером".

Галочки "Show karma in the user profile page" и остальные можете поставить, а можете и нет, они отвечают за отображение кармы и места в рейтинге в профиле юзера, а также за добавление к объекту $user кармы и рейтинга.

Логика начисления кармы простая: если за пост в блоге или комментарий пользователя проголосовали, то этот голос определенным образом влияет на карму. Очевидно, что "вес" положительного голоса за пост должен быть выше веса положительного голоса за комментарий. По этому все в том же меню "User karma" на вкладках "On comments" и "On nodes" в поле "How much karma will be assigned for each vote" укажем единицу для комментариев и 3 для постов.

Стандартный модуль User karma не предусматривает прямого управления кармой, а также в нем нет возможности добавить увелчивающие/уменьшающие коэффициенты для юзеров с большой или маленькой кармой, но эти возможности, при желании, несложно реализовать дополнительным модулем.

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

Шаг 5. Фильтрация контента

Для Друпала создан мощный инструмент, позволяющий фильтровать материалы по большому количеству параметров и создавать из выбранным документов ленты различного вида. Этот инструмент – модуль Views. Массивы документов, созданные модулем Views, я буду называть "представлениями" или "вьюшками".

Небольшим недостатком модуля Views является то, что все заданные в нем фильтры используются с логикой И. То есть, например, нельзя задать такую логику "создать ленту новостей, в которую будут входить посты с рейтингом больше чем 5 ИЛИ посты отмеченные модератором". Для реализации такой логики нам поможет модуль Views union, суть которого сводится к тому, что мы сначала создадим две вьюшки: одну с фильтром "все посты с рейтингом больше чем 5", вторую с фильтром "все помеченные модератором посты". Затем мы создадим третью "master" вьюшку, которая объединит первые две.

Кроме условий фильтрации в модуле Views можно выбирать критерии сортировки контента, в нашем случае эти критерии должны задаваться только в master-вьюшке.

Итак, приступим к настройке. Для начала создадим ленту для главной страницы, на которой должны выводиться опубликованные записи из блога, которые набрали 5 баллов, а также должны выводиться все посты отмеченные модератором как "Sticky". Создадим вьюшку, которая будет выводить только посты набравшие 5 очков.

В админке, в меню "Views" ("admin/build/views") выбираем вкладку "Add". В группе свойств "Basic Information" задаем имя представления — "main_more_then_five". В группе "Page" ставим галку "Provide Page View", указываем URL "more5" и "View type" — "Teaser List". В группе свойств "Filters" добавляем фильтры "Node: Published, equals yes", "Node type: blog entry", "VotingAPI points vote result (sum): is greater then 5". Сохраняем представление. Если бы мы создавали одиночную вьюшку, то еще необходимо было бы задать параметры "Sort criteria", но так как мы используем модуль Views union, то сортировку зададим в мастер-вьюшке.

Теперь создадим представление, которое будет выводить "прикрепленные" модератором посты. Для этого опять в меню "Views" переходим на вкладку "Add", указываем имя вьюшки "sticked_posts", ставим галку "Provide Page View" и указываем URL "sticked", "View type" — "Teaser List". В фильтрах выбираем: "Node: Published, equals yes", "Node type: blog entry", "Node: Stycky, equals yes". Тоже не забываем сохранить изменения.

Ну и последнее действие. Создаем третье представление с именем "main", URL'ом "main" и параметрами "Provide Page View" и "View type" — "Teaser List". В группе свойств "Sort criteria" создаем два критерия: "Node: Sticky – Desc" и "Node: created time – Desc". В группе "Union" выбираем первые две вьюшки: "main_more_then_five" и "sticked_posts". Сохраняем представление. Всё, теперь у нас есть вюшка, отображающая все последние посты с определенным рейтингом и все прикрепленные посты. Чтобы прикрутить это представление к главной странице нужно в меню "Site information" ("admin/settings/site-information") в поле "Default front page" указать URL нашей вьюшки "main".

Аналогичные действия нужно проделать и для вьюшки, в которой будут отображаться все новые посты вне зависимости от рейтинга, за исключением того, что здесь не нужен будет фильтр по "VotingAPI points vote result (sum)".

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

Добавляем новое представление, указываем ему имя "live" и описание "Прямой эфир", в группе свойств "Block" ставим галку "Provide Block" и тип "Table view". В группе свойств "Fields" выбираем "Comment: Author Name", "Node: Title" и "Comment: Comment ID". В группе "Filters" выбираем "Comment: Comment Count — is greated then 0". В "Sort criteria" выбираем "Comment: Created Time — Desc". Сохраняем вьюшку и преходим в меню "Blocks" ("admin/build/block"), в котором выводим наш новый блок "live", например, в правую колонку ("Right side bar").

Для того чтобы изменить внешний вид блока "Прямой эфир" я в файле template.php, который находится в папке темы, создал функцию:

function theme_views_view_live($view, $type, $nodes){
$output = "";
for($i = count($nodes) - 1; $i >= 0; $i--){
$output .= "comments_uid . "\">" . $nodes[$i]->comments_name . "nid . "#comment-" . $nodes[$i]->comments_cid . "\">" . $nodes[$i]->node_title . "
";
}
return $output;
}

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

Тэги и облака тэгов

Тэг (или ярлык, или метка) — ключевое слово, которым можно пометить любой документ, любой тэг может быть присвоен нескольким статьям, любая статья может иметь несколько тэгов. При наличии большого количества материалов на сайте очень удобно фильтровать контент по тэгам, например можно вывести "список всех документов, у которых есть тэги А и Б" или "список документов, у которых есть теги А, В, но нет тэга Б".

Для удобства пользователей на сайтах с большим количеством материалов формируются "облака тэгов" — списки ключевых слов, отсортированные, обычно, в случайном порядке. Размер шрифта, которым в таком списке выводится тэг прямо пропорционален "популярности" тэга, то есть чем больше существует на сайте статей, к которым привязан тэг А, тем крупнее в облаке тэгов будет его шрифт.

В Друпале механизм тэгов реализуется модулем Taxonomy (входит в стандартную поставку), облака тэгов — модулем Tagadelic. Слово Taxonomy (таксономия) часто пугает новичков, которые только начинают работать с Друпалом, но, на самом деле, в этом модуле нет ничего сложного. Логика простая: в меню "Categories" ("admin/content/taxonomy") создается словарь (вкладка "Add"), этот словарь привязывается к нужному типу контента (в нашем случае к "Blog entry"). Если необходимо, чтобы пользователи сами могли указывать любые тэги, то в настройках словаря нужно поставить галку "Free tagging", если нужно обязать юзеров выбрать хотя бы один тэг, то надо поставить галку "Required". Если галка "Free tagging" не установлена, то в словарь необходимо добавить несколько терминов (тэгов).

После выполнения этих простых шагов к форме добавления материала добавится или комбобокс, или текстовое поле, в которое можно будет ввести ключевые слова, относящиеся к статье.

Для того чтобы сформировать "облако тэгов" достаточно в меню "Blocks" ("admin/build/block") включить нужный блок, например, для блока "tags in Имя_словаря" выбрать регион "Right sidebar". При желании, используя API этого модуля можно сформировать облака тэгов из нескольких словарей.

Списки друзей

Списки друзей реализуются модулем Buddylist2, который настраивается в меню "Buddylist UI Settings" ("admin/settings/buddylist_ui"). Установок у модуля всего три:

  • Односторонний или двусторонний способ добавления в друзья;
  • показывать список друзей профиле;
  • показывать ссылки типа "добавить в друзья" в профиле;

Думаю, из названий ясно что делает каждая из настроек.

Другие полезные модули

  • Privatemsg — внутренняя почта для сайта;
  • Global Redirect — борьба с разными ссылками ведущими к одному материалу. Если материал доступен по ссылкам www.example.com/node/1, example.com/node/1/, example.com/alias_for_node_1 — это может негативно сказаться на результатах поиска, выдаваемых Гуглом, Яндексом и другими поисковиками. Модуль Global Redirect решает эту проблему;
  • Google Analytics — интеграция с Гугловским сервисом сбора статистики. К слову, очень удобный сервис;
  • XML Sitemap — генерация XML-карты сайта. Эти карты очень любят Гугл, Яху и другие поисковики;
  • Pathauto — автоматическая генерация человекопонятных URL;
  • Token — вспомогательный модуль, необходимый для работы некоторых других модулей;
  • Excerpt — этот модуль добавляет отдельное поле teaser к форме добавления материала (по умолчанию этого поля нет и Друпал пытается сам найти тизер в документе);
  • Nodewords — модуль для добавления мета-тэгов к странице;

Зе енд

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

На выделенном сервере с 8 Гб памяти и 3,2 Xeon'ом эта сборка выдержит порядка 10-15 тысяч уникальных посетителей в день (50-150 тысяч хитов), при необходимости производительность можно увеличить за счет подключения memcached и выделения отдельного сервера под БД. В такой конфигурации Друпал выдержит примерно до 50к уников в день.

Любые вопросы, комментарии и пожелания приветствуются. Писать можно или здесь, в комментариях, или на е-почту mne@romka.eu.

Комментарии

Уважаемый Ромка!

В процессе сборки вышла проблема с начислением user karma для пользователей. При голосовании за blog entry и коменты баллы для постов начисляются, но на карму никак не влияют. Влияет только количество постов (кроме On comments и On nodes я включил еще начисление On posting для тестирования).

Уже 4 раза начинал сборку сначала... Не подскажете, где может быть ошибка? Хотя бы намекните в какую сторону копать, а то у меня совсем идей уже нет :(

Использовал Drupal 5.14 и последние версии соответствующих модулей.

Такая же проблема была. Попробовал вместо последнего релиза "user_karma-5.x-1.13", поставить "user_karma-5.x-1.9", собственно 1.9 и используется в скринкасте. Все заработало.

у меня тоже проблема с "кармой" у меня вообще она не отображается в профиле :(

Роман, прошу прощения, но не мог бы ты переделать ogalias под 6,5. Очень нужно.
Я просто забыл, что без него ни как и уже все настроил и шаблон сверстал...

Заранее спасибо.!

Думаю, в течении ближайшей недели переведу Швабру на шестерку и перепишу под нее этот модуль.

Ой.. .. Былобы просто замечательно.

Вопрос по теме создания подобного сайта. Появилась необходимость создания на сайте нод, с разбиением на страницы. По такому принципу, как сделано данное описание. Не могли бы вы подсказать, какой модуль для этого использовали и какие настройки?

Это делается модулем Paging.

Спасибо огромное Роман за ваши мануалы. Очень помогли..
Вы не могли бы переделать ogalias под 6,4?

Заранее спасибо.

Как отключить возможность голосовать за самого себя?

http://shvabrashvabr.ru/blog/bags/zapreshchaem-avtoram-golosovat-za-svoi...

У меня почему-то можно голосовать хоть сколько раз. Как это отключить и сделать чтобы только один голос можно было давать?

Скачай последнюю dev версию vote_up_down или подожди beta3 версию

Привет!
У меня вот какая проблема: не правильно выводится представление материала на главную страницу. Посты, набравшие 5 баллов отображаются вверху, а стики - внизу страницы. Настройки меняла- после сохранения показывает правильно. При следующем заходе на главную- та же ошибка: стики внизу.
Посоветуйте пожалуйста, в чем тут может быть проблема. Может это views union глючит? Или так оно и должно быть?

Да, это вьюс юнион глючит, во втором скринкасте я описывал решение этой проблемы.

Подскажите - вроде всё настроил, но есть возможность создавать коллективные блоги, писать в блоги, а вот писать в коллективные блоги - нет такого пункта.... где я облажался?

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

Для того чтобы заврешить настройку OG необходимо перейти в меню "Organic groups configuration" ("admin/og/og"), в группе свойств "Group home page" выбрать созданный нами тип "Коллективный блог" и сохранить изменения.

Вот на этой стадии я застреваю - потому что никакого выбора типа у меня там нет, есть радиокнопка с названием "Home page presentation:" и единственным полем "OG: Group home page - River of news. Default (og_ghp_ron)". Ничего другого похожего я там не нашёл.

Что делать, как быть?

Если последняя версия OG для 5.x, то ничего выбирать уже не надо.

Я так и не понял, в какой момент создаются заголовки на главной типа
"Швабрашвабр → Описание"
Я поднимаю похожий сайт, но у меня в заголовках остается только "Описание".

Это в файле темы настраивается. Как сделать подобную фичу для блока "Прямой эфир" я написал, аналогично можно сделать и для нод, в файле нужной темы node.tpl.php.

А где шаблон того, что по дефолту создается, взять? К сожалению, я сам воспроизвести не могу.

В файле темы node.tpl.php найдите строчку:

<?php print $title ?>


и замените ее на что-нибудь вроде:

<?php if(!isset($node->og_groups)){ ?>

<?php print $title ?>

<?php
}else{
?>

<?php print $node->og_groups_both[$node->og_groups[0]] . " → "; ?><?php print $title ?>

<?php
}
?>

Название группы не выводиться?
Получается:
→ заголовок ноды.
Вот так попробовал:
<?php print l($node->og_groups[0],'node/'.$node->og_groups[0]) . " → "; ?>" title="<?php print $title ?>"><?php print $title ?>
В этом варианте работает, но имя группы выводится под номером ноды?
2→ заголовок ноды
Правда ссылка, как раз ведет ведет в коллективный блог, что вообщем и нужно, единственный момент, как сделать, чтобы эта ссылка пропадала, после перехода на страницу коллективного блога?
Может здесь дело в pathauto?
уже попросил помощь вот здесь:
http://shvabrashvabr.ru/node/128#comment-122

Вот с таким кодом получилось:

<?php if (($node->og_groups_names)&&(count($node->og_groups_names)>0)){
print(''.l($node->og_groups_names[0],'node/'.$node->og_groups[0]).' → ');
}
print(''.$title.'');?>

Единственный момент, при заходе на топик с постами коллективного блога, ссылки на группу(блог) остаются активными, в принципе конечно можно пережить. но всё же...
Кто знает как решить?
Вариантов два:
1. Убрать ссылки у заголовков в названиях групп (плохой вариант, но терпимый).
2. Убрать из заголовков вообще имя группы (Правильный вариант).

Наверно это можно сделать добавлением еще одно спец. файла (напр. node_group.tpl) в шаблон, где будет изменён метод вывода заголовков и прописывание этой функции в template.php. Я к сожалению не программист и как это сделать я не знаю.

Зы: Рома не получается код разместить, после сохранения некоторые теги и элементы в коде пропадают.

Можно проверять переменную $teaser. Если она равна TRUE, то мы находимся в списке нод и ссылка нужна, если FALSE, то мы в ноде и ссылка не нужна. Код будет примерно таким:

<?php
if($teaser){
// Тут выводим заголовок с ссылкой
} else {
// Тут выводим заголовок без ссылки
}
?>

Рома, в самой ноде и так всё нормально, выводиться только заголовок ноды, я это вопрос решил, ниже указано как.
Ссылки групп остаются в топике материалов привязанных к определенной группе:
группы→название группы→топик.
То есть если на главной ссылки вида: <название группы→название поста>то, что и нужно, то они совсем не к чему, когда заходим в топик тематического блога(группы). Нужно, что бы остались одни заголовки постов.
Можно использовать модифицированный node-(топики групп).tpl, но как его привязать только для вывода топика групп. Если использовать node-blog.tpl, то этот файл будет использоваться и на главной, соответственно вернемся к тому, что и было, то есть к обычным заголовкам нод.
Может с помощью views можно назначить для главной использование нужного node.tpl, тогда как быть с остальными страницами, где нужен такой вывод заголовков?
Или, не знаю возможно ли такое, добавить код, который будет определять, что node.tpl выводиться в данный момент в топике постов группы, и при этом определении убирать ненужную ссылку или присваивает класс(span) CSS? с помощь которого, так же можно убрать отображение ссылки.
Перерыл друпал.ру, не нашел готового решения, есть варианты, как убрать эту ссылку когда мы в ноде, подобно тому, как и предложено тобой. Я решил этот вопрос ещё проще, создав файл node-content.tpl.
Правда где-то проскочил текст, что можно добавить код в template.php, что бы по крайней мере убрать гиперссылку с названия группы(как всегда, самого кода нет, зато есть ссылка на друпал.орг), но это не лучший вариант. Названий групп, в топике этих групп все-таки быть не должно.

Я видимо после праздников отупел несколько :) Не могу пройти вот этот уровень:
----
После того как новый тип материала сохранен нужно зайти в его свойства (в нашем случае это "admin/content/types/group/"), перейти на вкладку "Add field" (она появляется если включен модуль Content) и добавить поле типа "Text — Text Field" с именем (Name) "alias" и заголовком (Label) "Псевдоним". Важно указать именно это имя, так как оно используется модулем OG Alias, для создания псевдонимов. Это поле необходимо сделать обязательным (галочка Required).
---
У меня следующие поля у "Коллективных блогов":
Все правильно или нет?

shvbr.png

Все разобрался вроде, утро вечера мудреннее, но не во всем :)
Так и неполучилось, чтобы путь к материалам стал blog/[ogalias]/[title]
так и пишет /content/[title] :((
pathauto.png
где копать? :(

Оглавление здесь не работает.
Ссылки http://shvabrashvabr.ru/blog/drupal/opisanie?page=0,1
и пр. показывают то же самое, что
http://shvabrashvabr.ru/blog/shvabra/opisanie

Правильная ссылка — http://shvabrashvabr.ru/blog/shvabra/opisanie?page=0,1, а не http://shvabrashvabr.ru/blog/drupal/opisanie?page=0,1.

Ну если правильно, что эта правильная ссылка показывает то же самое, что и неправильная, т.е. то же, что и
http://shvabrashvabr.ru/blog/drupal
то всё нормально.

Поясняю проблему: ссылки в оглавлении этой статьи не работают. И тот вариант, что предлагаете вы - тоже.

Минуту спустя: сорри, туплю.
Не работают только ссылки, что
"Оглавление
Статья получилась большой, по этому я ее разбил на несколько страниц: "
А те, которые внизу страницы (я их в прошлый раз и не пробовал) - работают.

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

Еще ошибка тут: /og/all?filter0=test

user warning: Unknown column 'users.name' in 'field list' query: SELECT COUNT(*) FROM ((SELECT node.nid, node.title AS node_title, node.changed AS node_changed, users.name AS users_name, users.uid AS users_uid, og.description AS og_description, og.selective AS og_selective FROM node node LEFT JOIN votingapi_cache votingapi_cache_vote_points_sum ON node.nid = votingapi_cache_vote_points_sum.content_id AND votingapi_cache_vote_points_sum.content_type = 'node' AND votingapi_cache_vote_points_sum.value_type = 'points' AND votingapi_cache_vote_points_sum.tag = 'vote' AND votingapi_cache_vote_points_sum.function = 'sum' WHERE (node.status = '1') AND (node.type IN ('blog')) AND (votingapi_cache_vote_points_sum.value > 5) ) UNION (SELECT node.nid, node.title AS node_title, node.changed AS node_changed, users.name AS users_name, users.uid AS users_uid, og.description AS og_description, og.selective AS og_selective FROM node node WHERE (node.status = '1') AND (node.type IN ('blog')) AND (node.sticky = '1') )) AS sq in /home/socialp/public_html/includes/database.mysql.inc on line 172.
user warning: Unknown column 'users.name' in 'field list' query: (SELECT node.nid, node.title AS node_title, node.changed AS node_changed, users.name AS users_name, users.uid AS users_uid, og.description AS og_description, og.selective AS og_selective FROM node node LEFT JOIN votingapi_cache votingapi_cache_vote_points_sum ON node.nid = votingapi_cache_vote_points_sum.content_id AND votingapi_cache_vote_points_sum.content_type = 'node' AND votingapi_cache_vote_points_sum.value_type = 'points' AND votingapi_cache_vote_points_sum.tag = 'vote' AND votingapi_cache_vote_points_sum.function = 'sum' WHERE (node.status = '1') AND (node.type IN ('blog')) AND (votingapi_cache_vote_points_sum.value > 5) ) UNION (SELECT node.nid, node.title AS node_title, node.changed AS node_changed, users.name AS users_name, users.uid AS users_uid, og.description AS og_description, og.selective AS og_selective FROM node node WHERE (node.status = '1') AND (node.type IN ('blog')) AND (node.sticky = '1') ) ORDER BY node_title ASC, node_title ASC LIMIT 0, 90 in /home/socialp/public_html/includes/database.mysql.inc on line 172.

Захожу сюда: /user/1 и вижу красным:

user warning: Unknown column 'baj_users.name' in 'field list' query: (SELECT node.nid, baj_users.name AS baj_users_name, baj_users.uid AS baj_users_uid FROM node node LEFT JOIN votingapi_cache votingapi_cache_vote_points_sum ON node.nid = votingapi_cache_vote_points_sum.content_id AND votingapi_cache_vote_points_sum.content_type = 'node' AND votingapi_cache_vote_points_sum.value_type = 'points' AND votingapi_cache_vote_points_sum.tag = 'vote' AND votingapi_cache_vote_points_sum.function = 'sum' WHERE (node.status = '1') AND (node.type IN ('blog')) AND (votingapi_cache_vote_points_sum.value > 5) ) UNION (SELECT node.nid, baj_users.name AS baj_users_name, baj_users.uid AS baj_users_uid FROM node node WHERE (node.status = '1') AND (node.type IN ('blog')) AND (node.sticky = '1') ) in /includes/database.mysql.inc on line 172.

У меня эта ошибка появилась после создания первой въюхи с объединением. Пришлось отключить модуль view_union - глюк пропал. Надо искать замену или view_union или organic groups. :(

После того как поставил модуль OG Alias, начало глючить все. Страницы автоматом не переадрессовываются. Например обновляю настройки, меня перекидывает на пустую страницу: admin/build/modules/list/confirm

У меня тоже самое было, я его отключил и все норм.

это же не правильно

Выложил обновленную версию ОГ алиаса, попробуйте использовать её, глюки должны пропасть.

У типа контента, который используется в качестве коллективного блога создано текстовое поле с именем "alias"?

Ром, можешь выложить архив сборки с бекапом мюскла?

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

Кстати, почему профили не работают: http://shvabrashvabr.ru/user/10

Хостинг глючит, в ближайшее время перееду на другой...

Перенес сайт на другой хостинг, но теперь есть другая проблема: анонимы профили пользователей видят без проблем, а вот авторизованные пользователи получают "Page not found". Разбираюсь...

Проблема решена.

А в чем проблема была?

Back to top