Швабрашвабр на шестом Друпале

  • 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.


На сайте журнала PC Magazine опубликована статья написанная мною при поддержке Александра Графова. В статье рассказывается о возможностях CMS Drupal 6 и приводятся инструкции для сборки двух сайтов, в том числе и Швабрышвабр — коллективного блога с элементами социальной сети.

Внимание! Выкладываю готовую сборку Швабрашвабр 6. Если по каким-то причинам у вас нет желания или возможности собирать сайт самостоятельно, то вы можете скачать дистрибутив Швабрашвабр 6 (6,5 Mb) и дамп базы для Швабрашвабр 6 (250 Kb). Первый архив необходимо распаковать в корень вашего веб-сервера, второй импортировать в БД, например, при помощи PhpMyAdmin. После этого нужно в файле "sites/default/settings.php" в переменной $db_url указать настройки для соединения с базой данных, после чего сайт будет доступен по адресу http://localhost/shvabrashvabr6.

Если у вас нет настроенного веб-сервера, то вы можете скачать Денвер с интегрированной в него сборкой Швабрашвабр 6 (18 Mb). После запуска скачанного файла следуйте инструкциям инсталлятора, по завершении работы которого вам локально будут доступны сайты http://shvabrashvabr.lc — коллективный блог с элементами социальной сети и http://intranet.lc — корпоративный интранет-сайт.

Логин/пароль администратора каждого демо-сайта: admin/1111.

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

Комментарии

В видеоуроке идет рассказ о пятом Друпале, тут о шестом. Использовать урок для этой сборки практически бессмысленно.

Не хочу показаться банальным, но мысли читать я не умею. Грамотнее формулируйте вопросы. Каким модулям конкретно нужна замена? Да и зачем она нужна? Сборка под шестерку полностью повторяет функционал сборки под пятерку.

Excerpt под шестеркой не нужен, аналогичный этому модулю функционал реализован в ядре. Вместо Views Union можно использовать Views OR, со временем этот функционал будет внесен в ядро Views. Альтернатив BuddyList2 несколько, ссылки на них вы можете найти на странице модуля, я использую User relationships. OG Alias под шестерку я уже давно переписал.

Эээ... И что? Какой-то вопрос есть?

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

А то что Друпал ругается на

"The update.php script is accessible to everyone without authentication check, which is a security risk. You must change the $update_free_access value in your settings.php back to FALSE
хотя в settings.php стоит $update_free_access = FALSE"

Так это он не "хотя", а "потому" ругается. Читайте внимательнее.

Нет, русифицированной версии нет. Принципиально. Каждому заказчику обычно требуется свой перевод. Например кто-то переводит "My account" как "личный кабинет", кто-то как "аккаунт", кто-то как "личная страница". И таких расхождений может много. Вы можете скачать перевод на http://drupaler.ru, поставить его и доработать так, как нужно именно вам.

как разрешить в блогах php определенным группам юзеров? или хотя бы прост разрешить. в настройках вывода толька - фильтрованый хтмл и фулл хтмл ...пхп нет(( с фулл хтмл не пашет...мне очень надо.

Поставил vote_up_down-6.x-1.0, но при голосовании поинты не начисляются и выдается ошибка:
"An HTTP 411 error occured. Your vote was not submitted!"
Как решить проблему?

Скачал, поставил вроде работает только вот выдает:

Выбранный файл /tmp/fileZMMtSE не удается закачать, поскольку каталог назначения languages/ru_e8c1cdc395790343d941d72916bd3063.js неверно сконфигурирован.
Выбранный файл /tmp/filew7rPxx не удается закачать, поскольку каталог назначения languages/ru_e8c1cdc395790343d941d72916bd3063.js неверно сконфигурирован.
warning: Invalid argument supplied for foreach() in /home/vsftpd/dv/sites/all/modules/cck/content.module on line 1270.

В чем ошибка?

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

Проверьте настройки в меню "Administer — File system", там должны быть указаны реально существующие в системе пути.

Хотелось бы более подробно о настройках views на шестом друпале услышать, со всем разобрался а вот со views проблема (

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

Спасибо большое Ромка! Очень интересные статьи!!!

У меня вопрос:

Швабрашвабр6 ставил вместе с Денвером на локалхосте, сайт работает нормально, но при заходе в admin/modules через раз выдает:
Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\shvabrashvabr.lc\www\includes\file.inc on line 891

Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\shvabrashvabr.lc\www\includes\session.inc on line 56

Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\shvabrashvabr.lc\www\includes\cache.inc on line 133

Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\shvabrashvabr.lc\www\includes\session.inc on line 14

Подскажите, где покопаться?

И ещё просьба, выложите, пожалуйста, отдельно дамп базы для intranet.lc.

Хм, удивительно. Попробуй в файле .htaccess, который находится в корне сайта добавить строчки:
php_value memory_limit 256M
php_value max_execution_time 300

Добавил я такие строчки, теперь выдаёт:

Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\shvabrashvabr.lc\www\includes\file.inc on line 891

и пускает раз на пятый.

А как насчет дампа базы для intranet-a?

Всё, поборолось. Перезапуск Денвера не спас, помог перезапуск компа. Интересная связь.

Скачал сборку с денвером, всё работает, проапдейтил модули и всё - карма-система перестала работать, произошло на момент, когда проапдейтил модуль юзер карма.

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

Вот к чему пришли после тестов - D 6.9 + user karma последняя дев версия(не релиз) + последний релиз вот апи + предпоследний релиз вот ап и даун(который бета 1) работают, но выдают такой ворнинг:

warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, '_vote_access' was given in Z:\home\shvabrashvabr.lc\www\includes\menu.inc on line 452.

С последним релизом(бета2) вот ап и даун - карма не работает.

Ваше мнения господа?

Да, действительно, вторая бета модуля Vote Up/Down ведет себя как-то странно. Я сейчас использую последнюю dev-версию, с ней глюков не наблюдается.

Сейчас ещё раз протестил, но результат всё тот же на дев версии вылетает на странице с полной версией записи в блог:

warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, '_vote_access' was given in Z:\home\shvabrashvabr.lc\www\includes\menu.inc on line 452.

Возможно вам известно в чём глюк или как это убрать?

Тут могу только посоветовать или ждать стабильной версии модуля, или обратиться за помощью к его разработчику. Я у себя эту ошибку повторить не смог и по этому пути решения ее подсказать не могу.

Ага баг репорты и на форуме ветки вчера сделал, но пока нет реакции.

Твоё мнение ещё хотел узнать - под хаброподобный сайт лучше выбрать друпал с кастомизацией или ливстрит с допилом, как считаешь?

Эх. Честно, не изучал возможности Ливстрита. Могу сказать только общие слова: для того чтобы сделать стоящий сайт допиливать придется любую систему и Друпал, и Ливстрит. Для Друпала есть огромное количество дополнительных модулей, расширяющих его возможности, но для того чтобы во всем этом разнообразии разобраться нужно потратить много времени. Зато не обязательно быть программистом, чтобы решить многие задачи.

Полагаю что Ливстрит система более простая в освоении, но и более бедная по возможностям. Чтобы сделать выбор ответь для себя на вопросы:

  • Устраивает ли тебя ее функционал и готов ли ты ждать апдейтов от автора системы?
  • Ты сам хороший программист? И готов ли ты детально изучить эту систему до такого уровня, чтобы самостоятельно доработать ее до нужного тебе состояния?
  • Не боишься ли ты, что твой сайт не будет отличаться от десятков других установок Ливстрита? И речь здесь не о теме оформления, а о функционале: стандартные голосовалки +/- у постов, карма, прямые эфиры и т.п.
  • Готов ли на начальных этапах ты днями сидеть в англоязычной документации, чтобы разобраться как прикрутить к Друпалу ту или иную фишку? Или для тебя важнее собрать и запустить проект на скорую руку и если он выстрелит, то ты будешь готов заплатить деньги спецам за перенос твоего проекта на более гибкую платформу (здесь я имею ввиду не только Друпал)?
  • Каким видишь ты свой проект через год? Уверен ли ты, что видение разработчиков Ливстрита совпадает с твоим и через год тебе не придется переезжать на другую систему так как морально перерастешь этот движок, а возможности по его доработке окажутся скудными?

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

Как все же перевести сборку 5-ки на 6-ку?

Ромка, подскажи плиз как добавить поле e-mail пользователя из его профиля в вид со списком сотрудников?

Это вопрос по Швабре или интранет-сайту? Если по интранет-сайту, то профиль сделан модулем Profile? Если да, то так с ходу на вопрос не отвечу. Лучше в ноду типа "сотрудник" добавить при помощи CCK поле e-mail и оно будет доступно для выбора во Views.

Нет, я делал по примеру Сотрудник это материал. Нашел модуль E-mail. В общем все устроило, но я столкнулся с проблемой - нужны дни рождения. Добавил поле дата, все бы хорошо, но нормально фильтр выводит по now, все остальное не хочет выводить. А хотелось реализовать как в модуле birthday, чтобы заранее выводил.. Неделю бился, видимо нужно писать запросы вручную..

Установил сборку, дамп. Сайт поднялся без проблем, но часть русскоязычного текста отображается кривой кодировкой (юзер контент, часть текста в админке). Где нужно подкрутить?
Заранее спасибо.

Посмотрите возможно поможет
http://www.firsthand.ru/node/4

Ромка, расскажи плиз подробнее про "прямой эфир"
Немогу никак разобраться как это на 6ом друпале реализовать.
function theme_views_view_live($view, $type, $nodes)- неработает в 6ом друпале
function theme_views_view_table($view, $type, $nodes) - работает, но изменяет также и другие (все) табличные представления (например из модуля отношений)

Для шестерки нужно использовать другой подход. Надо зайти в свойства представления и в разделе "Base settings — theme" посмотреть список имен шаблонов, которые пытается использовать модуль для отображения представления, шаблон используемый в данный момент в этом списке будет выделен жирным шрифтом. По умолчанию из представленного списка будет существовать только этот один дефолтный шаблон. Далее нужно в папке с модулем Views в подпапке theme, найти используемый в данный момент шаблон, скопировать его в папку с темой, переименовать по образцу из списка в свойствах Views и внести в него необходимые изменения. Возможно, еще придется сбрость theme registry cache (просто нажать кнопку "Сохранить" в списке тем).

Благодарю за всю информацию представленную на сайте. Сейчас собираю швабру сам по скринкасту + статье на шестом друпале. Проявился баг (или кривизна моих рук): создал тестовые записи, проголосовал за них, но карма у тестового пользователя осталась на нуле, а в настройках views так и не появились фильтры VotingApi. С чем это может быть связано? Настройки User Karma и Voting API такие же как в представленной сборке и в скринкасте.

Так речь о пятом или шестом Друпале? Это в пятом новые фильтры во Views появляются после первых голосов, в шестом модулю Views нужно добавить связь (Relationship) с модулем VotingAPI.

О шестом. Буквально несколько минут назад с этим разобрался. А вот с кармой так и не понятно - как была на нуле, так и не меняется.

Ещё такой вопрос: Views Union в шестой ветке нет. Есть ли способы добавить в вывод на главной записи, отмеченные как Sticky?

Для шестерки есть Views OR. Судя по описанию это то что надо, но модуль пока доступен в виде дев-версии и я его не щупал, по этому не могу его рекомендовать.

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

Невероятно, но факт: при сборке Швабры на базе 5 Друпала история с кармой повторяется. Карма вообще не меняется. В таблице votingapi_vote такая картина:

vote_id content_type content_id value value_type tag uid timestamp hostname
35 node 8 1 points vote 3 1231942325 127.0.0.1
36 user 3 0 karma_points karma 1 1231942386 127.0.0.1
37 node 8 1 points vote 1 1231942386 127.0.0.1

Если в настройках User Karma выставить галочку "Show debug messages", при просмотре страницы с новыми записями выводится сообщение:

DEBUG: User ranking for 1: 1
DEBUG: User karma for 1: 0
DEBUG: This karma plugin is not active. Not recalculating.
DEBUG: This karma plugin is not active. Not recalculating.
DEBUG: This karma plugin is not active. Not recalculating.
DEBUG: This karma plugin is not active. Not recalculating.
DEBUG: This karma plugin is not active. Not recalculating.
DEBUG: This karma plugin is not active. Not recalculating.

Делаю всё в точности как в скринкасте. Версии модулей стабильные, хотя с dev то же самое.

to mystex а где хоститесь? у меня тоже проблема с кармой но у меня она вообще не отбражается в профеле....

Тестировалось только на локалхосте. XAMPP текущей версии.
У меня карма отображается, но вот такая ерунда =\

А вот ещё такой вопрос, он касается использования логики ИЛИ внутри Views. У меня есть необязательное поле типа Image - это обложка альбома. Я хочу реализовать следующую фишку: если обложка загружена, то в списке альбомов отображается она, иначе отображается первая картинка из альбома( по сути конструкция if - else). Можно ли во Views реализовать подобное условие или нужны какие-то сторонние плагины?

Немного некорректный вопрос. Фраза "логика ИЛИ" в контексте модуля Views означает логику выборки данных, то есть подразумевается запрос к базе вида "должны быть выбраны данные по условию_1 ИЛИ данные по условию_2". То что нужно вам — это темизация выбранных модулем данных, делается это также как и в примере с темизацией блока "Прямой эфир", который приведен во втором скринкасте.

Установил готовую сборку,возникла следующая проблема:в записях блога не отображаются прикреплённые картинки и появляется такое предупреждение:

warning: imagejpeg(): 100 is not a valid Image resource in z:\home\localhost\www\shvabrashvabr6\sites\all\modules\imageapi\imageapi_gd.module on line 113.

Проблему решил установкой последней версии PHP

Установил сборку с денвером - действительно в Admister не идёт, показывает просто пустую страницу. Собрал на тестовом http://213.186.127.48/~djlesson/s/ - работает только стартовая страница, но не работает ни один линк, и даже картинки не все загрузились почему-то. Устанавливал два раза с нуля. Что это может быть?

Вообще, белый экран — это признак недостатка памяти. Надо или в php.ini исправить значение переменной momory_limit, например так: "memory_limit = 128M", или в корне Друпала в файле .htaccess добавить строчку: "php_value memory_limit 128M". Но в сборке с Денвером я поставил мемори_лимит равный 512Мб и в нем такой ошибки не должно быть...

А не подскажете как сделать, чтобы на форуме не отображалась панель с правой стороны?

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

Ромка, напиши пожалуйста как темизировать vote up down для 6 друпала?

Точно также как и в пятом. В файле vote_up_down.module находишь функцию theme_vote_up_down_widget копируешь её в файл template.php (он должен лежать в папке с твоей темой, если этого файла нет, то его надо создать вручную), переименовываешь функцию в ИМЯ_ТЕМЫ_vote_up_down_widget или phptemplate_vote_up_down_widget и вносишь в неё необходимые изменения. В отличии от пятого Друпала в шестом еще нужно очистить кеш тем (надо просто перейти в меню "Администрирование — Темы оформления" и нажать кнопку "Сохранить").

Пример темизации виджета для пятого Друпала тут: http://shvabrashvabr.ru/blog/bags/zapreshchaem-avtoram-golosovat-za-svoi...

аватар: cascad

Ромка, что писать в этой строчке, какие данные?

$db_url = 'mysqli://shvabrashvabr6:password@localhost/shvabrashvabr6';
$db_prefix = 'shvabrashvabr6';
????? имя базы,имя таблицы... какие в твоём примере

$db_url = 'mysql://login:password@host/db_name';
$db_prefix = '';

Back to top