
В последнее время на drupal.ru и habrahabr.ru частенько проскакивают темы вроде: «Делаю социальную сеть – бюджет пара сотен! Помогите сделать хабрастартап!» Отечественные аналитики связывают эту тенденцию с тем, что кризис на ипотечном рынке США тянет вниз за собой рынок в целом, что заставляет игроков на бирже вкладывать в высоколиквидные и надежные активы. Традиционно прибежищем инвесторов в смутные времена является золото, медь да стартапы на просторах бывшего СССР.
Как быть, если денег и других ресурсов пока нет, а вот почувстовать себя Денискиным или Андреевым хочется уже сегодня? Попробуем исполнить соцзаказ и попытаемся по-быстрому сделать сайт напоминающий хабр.
Для начала нам понадобится не выдвигающий жестких требований по количеству запросов к БД хостинг. Необходимый минимум памяти – 16 Мб.Скачиваем с официального сайта Drupal 5.6. Оттуда же мы будем черпать и необходимые дополнительные модули.
Инсталляция проходит легко и непренужденно: нужно всего лишь ввести название базы, префикс для таблиц, логин и пароль. После завершения инсталляции нас приветствует главная страница с предложением создать пользователя №1. Этот пользователь в дальнейшем будет обладать неограниченными правами. Благодаря имеющейся гибкой системе управлениями правами можно создавать различные категории пользователей и назначать полагающиеся им привилегии для управления контентом и структурой сайта, но для некоторых задач все же требуется именно пользователь №1. Кроме создания первого пользователя крайне необходимо подправить права доступа к конфигурационному файлу и убрать файл install.php. Заходим в список имеющихся модулей и добавляем к включенным обязательным модулям дополнительные модули ядра: Blog, Comment, Menu, Path, Poll, Profile, Search, Taxonomy, Tracker, Upload.
Создаем для начала 2 словаря: Вид креатива и Теги креатива. Для первого словаря создаем набор тегов: переводы, подкасты, ссылки... Ставим условие обязательного наличия тега в материале из этого выпадающего списка. Для второго задаем свободный множественный выбор тегов – пользователи будут самостоятельно задавать теги в любом количестве. Оба словаря связываем с записью в блоге. При создании креатива пользователю будет предложено выбрать/ввести теги.
На следующем этапе облегчим пользователям публикацию материала. Из значительного количества WYSIWYG-редакторов я бы выделил 2 – BUEditor и TinyMCE, но поскольку 2 редактора для 1 сайта многовато, то оставим BUEditor сайту drupal.ru, а себе установим модуль TinyMCE. Здесь нужно понимать, что для работы с текстом кроме модуля необходим непосредственно сам редактор (его легко найти на сайте автора tinymce.moxiecode.com ). Создаем профиль в редакторе для зарегистрированных пользователей, настраиваем видимость и необходимые кнопки. Также нужно не забыть про набор разрешенных тегов, иначе пользователи замучают вопросами: «Почему моя таблица/картинка не отображается в блоге?» Для удобной работы с картинками устанавливаем модуль IMCE, настраиваем необходимые ограничения по объему и размеру картинок. IMCE хорошо работает с вышеустановленным WYSIWYG-редактором, но если Вы «настоящий профессионал», то никто не мешает отключать редактор и творить тегами без посредников.
Будем считать, что создавать креативы мы уже научились, сейчас попробуем их выводить в нужном нам виде. Скачиваем и устанавливаем группу модулей Views, а также Vote up/down и Voting API. В настройках модуля Voting API выставляем самое оперативное обновление результатов, в настройках Vote up/down привязываем голосовалку к записи в блоге, устанавливаем голосовалку в виде +1/-1 (кнопки можно своровать на хабре ;) или скачать на famfamfam.com), настраиваем доступность не только в статье, но и в тизерах. Подобные настройки осуществляем и для голосования по комментариям. Кстати, о комментариях. В два клика включаем комментарии к блогам и не забываем установить их древовидный вид.
С помощью Views создаем страничный вид для главной страницы. Это будет обычный список из 10 тизеров. В движке даже есть готовый хабракат(break). Поскольку на главную выводятся только самые достойные из актуальных постов, то отфильтруем их по голосам и отсортируем по дате создания. В фильтрах после установки модулей для голосования появляется больше десятка вариантов фильтрации, так что фильтровать можно, как душе угодно. На случай планируемых хабрареволюций в фильтры следует добавить проверку на опубликовано\не опубликовано и, например, на роль или имя автора. Это очень поможет в деле будущих зачисток –несколькими движениями мышки можно будет редактировать прошлое (идею подсказал некто Оруэлл в топике о ретушировании прошлого «1984»).
Для создания подобия прямого эфира используем табличный вид в блоке, сортируем по дате комментария, выводим нужные поля: автор, тематический блог, название креатива. В управлении блоками настраиваем видимость и положение прямого эфира.
Чуть не забыл о самом важном элементе сайта – облаке тегов. Хорошо, что вспомнил, а то какой же это был бы Веб 2.0! Он реализуется непривычно скучно и просто: устанавливаем tagadelic и привязываем его к словарю. Всё, приставка 2.0 готова.
В этом материале ни слова не сказано о дизайне, верстке. Да много о чём не сказано, упомянуты лишь манипуляции с модулями. Здесь не упоминались хуки, сниппеты, да и вообще ни слова о php. На мой взгляд, если человек задается вопросами из 1 абзаца, то начинать ему следует именно со стандартных вещей. И если у Вас действительно есть идея, если Вы делаете толковый САЙТ для людей, а не очередных одноклассников или 125-й клон ютуба, то все приложится – найдутся ресурсы для оригинальной кастомизации открытых решений, написания какого-то функционала с нуля. А если же проект «не пошел», то дело скорее всего не в том, что Вам не хватило $1000000 (ненужное количество нулей затереть) для технической реализации.
Уже после написанного поймал себя на мысли, что не упомянуты добрым словом ЧПУ, реализация компаний и комьюнити. Ладненько, пора заканчивать, а то суббота да и так «слишком много букв».
продолжение
комментарии (140)
а лучше в каждом.
А где можно зарегистрироваться, ну хоть за деньги, и маленький "хабр" готов? Для целей внутрифирменных. Фирма невелика
У меня не праздный интерес, мы просто как раз для себя делаем такой сервайс, и вот думаем делать открытую авторизацию, закрытую, надо оно кому-то или не надо.
Мне нравится что обсуждение в таком формате , как здесь,хорошо воспринимается зрительно и просто удобно.
В отличие от классических форумов и чатов.
Хотелось использовать подобный сервис, как элемент ведения работы над проектами.
Я пробовал для этой цели бизнес-чат http://www.campfirenow.com от 37signals , но мне немного не понравилось у них.
Буду признателен.
Но все-таки с созданием нестандартых фишек у Drupal'а имеются некоторые трудности. Во-первых, сделать свой тип информационной единицы (статьи, описания продукта и т. д.) сложно. Приходится ставить дополнительный модуль, который создает дополнительные таблицы для нужными полями для каждой такой информационной единицы. Это мягко говоря отрицательно сказыается на производительности. Во-вторых, ЧПУ делаются далеко не так просто как хотелось бы (а в добавок с ростом сайта, ой простите, социальной сети, начинают тормозить. Недетско.)
Но идея того, что не обязательно иметь много ресурсов для разработки стартапа передана отменно ;)
2) По поводу "типов информационных единиц" - надо ставить CCK + Views, работает достаточно быстро (насколько это возможно для универсального решения).
Да CCK бегает шустро до определенного времени; у меня долгое время показатели среднего использования CPU на хостинге вообще по нулям стояли. Но потом, когда количество перешло в качество, пришлось платить на порядок больше, хотя контент прибавился не сильно.
просто свой проект хочу переводить. собираю материалы по разным CMS
Обращайся, если чего, могу подсобить чем или проконсультировать в плане вебдева.
Мах
Весь этот геморрой имею как раз от того, что хотел все по-быстрому. Получилось. Но теперь надо искать время, чтобы все переписывать самому с нуля.
"Проблемы" и узкие места начинают сказываться в Drupal от 5тыс уников(на виртуальном).
Если провайдер вам не выделит под сайт 50 Мб - то его сложно вообще назвать провайдером :)
Ну любит у нас народ строить небоскрёбы лопатами и клоны-хабра на бесплатном хостинге...
А потом удивляются, отчего вдруг Drupal плох и почему народ не посещает такие шедевры. Вы попробовали бы Битрикс, так, для сравнения. Ну, или на крайний случай,привели бы ссылку на сайт. Возможно вам и совет могли бы дать по ускорению.
Сколько в среднем уйдет времени, чтоб сделать это все у хорошо подготовленного человека?
http://habrahabr.ru/blog/drupal/
Интересный топик, опередили мою задумку :)
хороших выходных ;)
Заодно разберусь с друпалом, наконец.
Кстати ждем еще open social и openid 2.0!
По 1 топику в год - стараюсь не засорять эфир))
Хотел сразу опубликовать в блог по Друпалу, но тогда карма не позволяла. Перенес сегодня.
Предложения к улучшению: хотелось бы прочитать более подробное хау-ту относительно настройки модулей. Думаю, что у опытных пользователей друпала не возникнет проблем с фразами типа
"Создаем для начала 2 словаря: Вид креатива и Теги креатива. Для первого словаря создаем набор тегов: переводы, подкасты, ссылки..., но тех, кто открывает для себя CMS впервые они могут поставить в тупик.
При прочтении статьи я (как раз такой новичок в друпале) старался параллельно выполнять все ваши инструкции.
Вот, что получилось у меня в конце.
1. Не установился модуль vote_up_down, Не знаю, почему, но cms его не видет.
2. Пока не разобрался, как создать с помощью Views статичный вид главной страницы.
3. Не совсем понятно, как привязать tagadelic к словарям (в самом модуле привязки нет).
Я еще разбираюсь и божьей помощью (и с помощью google), думаю решу эти проблеммы, но думаю, автору статьи следует либо указать вначале статьи тот базис, который нужно знать, для того, чтобы применить изложенный материал на практике, либо больше внимания уделить деталям.
3. /admin/build/block тут уже заготовлены для каждого словаря свои облака :)
С облаком тегов разобрался.
С привязкой вроде тоже (сначала создаю страницу во viewes, а потом ставлю ее frontpage по-умолчанию.
3. Зайдите в "Блоки" ваши облака тегов по всем словарям таксономии уже там. Остается из только включить.
1. Сначала я попытался просто установить vote_up_down (я делал все в том же порядке, как изложено в статье). После того, как cms не захотела его устанавливать, я почитал инструкцию по установке и поставил все необходимые и желательные модули. Но друпал все равно не видит vote_up_down... =(
3. Спасибо! Теги настроил.
Один недочёт, вы хоть и указали в прямом эфире тематический блог, но его реализацию не описали.
Насколько я понимаю, тематические блоги на Хабре коллективные, а коллективные блоги в стандартную поставку Друпал не входят. Эта проблема решается установкой модуля Organic Groups (http://drupal.org/project/og).
Да и ещё про BUEditor. Корректно он работает в Опере только над drupal.ru. Стандартная его поставка в Опере не видна. У TinyMCE (3,0 RC) же есть небольшие проблемы с отображением в Firefox, но он вполне рабочий. IE к сожалению не тестировал, так как у меня его нет.
У меня в Firefox 2.0.0.11 (ubuntu-gutsy) при теме оформления spreadfirefox, пропадала левая граница у редактора, хотя правая была нормально видна. В Firefox 3.0 beta1 не видно обе границы (левую и правую).
Opera 9.25 видит редактор полностью.
Всё банально в вёрстке темы.
Если в теме нигде не используется JavaScript, то для корректного отображения в заголовок шаблона page.tpl.php нужно добавить одну строчку:
<?phpprint $scripts
?>
to blv:
Ну ещё бы, вы же счастливый хабрачеловек.
Не удержался, ответа не знаю :) Догадываюсь, что Tracker.
Чтобы не объяснять что такое трекер, взгляните сами:
http://drupal.ru/tracker
ему и так тяжело, а сейчас все туда попрут :)
http://drupal.org/tracker
:)
Мне показалось, что Tracker, это к понятию User Tracker(-ing) - т.е. логирование откуда и куда по сайту перемещается пользователь. Ошибся.
Есть что-то такое на примете?
Ждем продолжения.
Наглядная демонстрация возможностей Drupal.
http://search.freelancer.com.ua/go-30899…
Удачи им!
P.S. если не ошибаюсь, тот же vote up/down спокойно двет голосовать за себя и не подозревает что есть какие-то сроки голосования. а попробуйте настроить userpoints, что-бы он давал роли после набора определенного количества поинтов, а потом добавьте пару новых ролей и посмотрите что произойдет.
Как лицо, побывавшее в шкуре заказчика, я уж лучше прийму проект на Друпале, чем самописный движ, какой хороший бы он ни был. Почему? Потому что я всегда могу пойти на drupal.ru (drupal.org) и дать денег, шарящим в Друпале людям, чтобы они поддерживали проект.
Ну а на счет денег на хостинг и на "поддержку" - это уж забота заказчика и его идеи. Если идея гиблая, то кто же виноват, что 40К юзеров не могут обеспечить денег на плату поддержке и тем более на хороший хостинг.
Его большой плюс в том, что можно собрать функциональный сайт без умения программировать, как такового.
Однако, у Drupal есть минусы:
1. Cложность в освоении (из-за перегруженности настройками, ИМХО).
2. Стрессоустойчивость к нагрузкам. Система сложная, реализуя свои конкретные цели при помощи Drupal, пользователь (не ведая того) создает множество не нужных таблиц и запросов. Поэтому, если сравнивать нагрузку на сервер, то при больших потоках посетителей, Drupal, разумеется, будет нагружать сервер в несколько раз (а то и десятков раз) больше, чем написанная собственноручно CMS под конкретные цели.
Пример уникальной самописной системы - Хабр.
Пример сайта на Drupal - http://venividi.ru.
С виду сайты очень похожи по функциональности и даже просто внешне.
Но Хабра летает (не в последнюю очередь благодаря НЛО) при 40000 посетителей в день, а VenVidi подтормаживает только лишь при около 600 посетителей за сутки.
кроме того, друпал имеет кеш и его можно научить в тяжелые минуты жизни не лазить в базу, а отображать некоторые не критичные блоки из кеша.
по поводу сборки сайта без умения программировать. с друпалом получается так, что за 20 процентов времени строится 80 процентов функционала. остальные 80 процентов времени идет на борьбу с тривиальными проблемами, которые, благодаря этой универсальности не так просто решить.
модули неплохо работают в накатаной колее, но стоит отойти на шаг в сторону и сделать что-то нестандартное, начинают лезть такие хитрые глюки, которые отловить в этой универсальной среде и в чужом коде, ой как непросто.
вывод: начиная какой-то более-мение не типовый проект, обзаведитесь, как минимум, дебагером. без него там делать нечего.
большое количество модулей действительно порождает бешенное количество запросов к базе. например: один модуль выгребает список пользователей, а другой идет по этому списку и для каждого пользователя обращается к базе и достает какую-то дополнительную информацию. тоесть делает то, что в своем коде можно было сделать одним запросом.
тут, как по мне, только один выход. собрать на базе модулей скелет, а потом просто переписывать и оптимизировать такие места, забыв о какой либо совместимости с новыми версиями. в любом случае для нетипового проекта вам не хватит стандартной функциональность и прийдется дописывать что-то свое.
Да и 600 посетителей в сутки - как-то жестко. Думаю даже если использовать дополнительные модули - друпал намного больше будет держать, правда тут больше зависит от хостинга...
> а VenVidi подтормаживает
> только лишь при около 600 посетителей за сутки
А как же сам Drupal.org? Огромное кол-во посетителей, и работает быстро.
http://drupaldance.com/sites/venividi
самим интересно что выйдет.
Однако в целом, данная функциональность подойдет только для обществ маленькой локалки/небольшого коммьюнити. Для более-менее большого проекта данных телодвижений совсем недостаточно.
1) Одним из основных требований к соц.сетям - возможность общения = для большинства сейчас форум. Сказать что в друпале он ужасный - ничего не сказать. Я еще ни разу не видел нормального родного форума на друпале, и они его и не собираются улучшать похоже. Поэтому надо ставить какой-то шлюз в другие нормальные форумные движки (благо этого добра навалом).
2) Для соц.сетей необходимо ставить модуль Organic Groups, которые реализует функционал групп.
3) Дизайн. Конечно, для начала может сойти и стандартные шаблоны, однако для серьезного проекта необходим самописный подходящий именно вам дизайн. А это, скажу я вам, в друпале (по крайней мере 5) - не совсем тривиальная вещь. (В 6-ке кстати с этим чуть получше).
4) Производительность. Все, что универсально - отдает в жертву производительность. Получаем в среднем на загрузку одной главной страницы залогиненного пользователя - больше 100 запросов к базе. И вот тут уже без спецов не обойтись, а они задарма работать не будут. В друпале массу всего предпринять можно (начиная от локализации вручную, и заканчивая переписыванием всех блоков под себя).
И много еще каких моментов сказать можно.
Как итог: Если задумано получить серьезную соц.сеть - надо очень серьезно подумать, а нужен ли друпал, в конечном итоге все равно придется очень немало заплатить кодерам и дезигнерам, и оптимизаторам. Для начинающего проекта с самым базовым функционалом без каких-либо капиталовложений - самое то.
Об этом и речь. Иногда важно начать...
про загрузку БД согласен.
1) Родной форум.... Есть несколько альтернатив, и родной настраивается\подтачивается как угодно.
2) Не думаю, что этот модуль было необходимо включать в ядро. А вдруг мода завтра пройдёт? А мусор останется...
3) Перенос грамотно созданной вёрстки в исключительных(подчёркнуто 2 раза) случаях занимает 2-3 дня. А в 80-90% настолько тривиален, что его делают школьники 12-13 лет
4) Тут согласен на все 100%: Ездить удобне на легковухе, а песок на камазе и ничего с этим не сделаешь...
Судя по скромному списку: http://www.drupal.ru/high-traffic-sites-…, практически без вложений начинающие небольшие фирмы сделали какие то поделки со скромным функционалом для себя...
А если в поле "ответить" сделать хотя бы 5 строчек и прописать нормальные стили для тега PRE, то в плане юзабилити этот клон будет на порядок лучше.
Другое дело, что раскрутить его до оригинала будет несколько сложнее и друпал ничем тут не поможет.
http://www.oswd.org
Хотя бы то, что уже получилось. Прям без дизайна.
Лента - Agregator
Статьи - это тип story
Группы - organic groups
И так далее. Несколько простых перестановок в исходном коде, дабы убрать приметы Drupal и всё!
А вот нынешний Хабр, уже сильно отличается от Drupal.
Я довольно молодой участник Хабра, поэтому не помню что было во время хабрареволюции. Помню только зелёную страницу.
Как мне кажется от основы Drupal'a отказались именно тогда.
http://web.archive.org/web/2006070316495…
http://korowkin.ru/
А почему бы и нет, для стартапа или воплощении идеи Друпал то что надо. Не надо на первое время заморачиватся на разработке CMS, а работать с чистой идеей и попыткой ее реализации. Потом уже если получится, можно и дальше либо развивать Друпал, переписывая часть для уменьшения нагрузки на сервер при высокой посещаемости как это сделали таки проекты как: www.observer.com, popsugar.com... и т.д. либо все переписать учесть все ошибки в реализации, внести свежие идеи и получить CMS ХабраНЛО :-)
"Традиционно прибежищем инвесторов в смутные времена является золото, медь да стартапы на просторах бывшего СССР."
Пара вопросов:
1) я правильно понял, "Прямой эфир" делается с помощью Views?
2) очень жду продолжения - о том, как делаются комьюнити.
Скажи, пожалуйста, разве "переводы, подкасты, ссылки" не удобнее оформить как общественные блоги (модуль OG), чем как термины в дополнительном словаре?
Скажем, здесь на Хабре "переводы" - это предопределенный администраторами общественный блог?
Материал готовился не по ходу осуществления проекта, я просто зашел в свой хабрацентр и увидел, что в тот день исполнился ровно год со дня регистрации ника на хабре. Вот и решил опубликовать что-нибудь полезное. Всё написанное - воспоминания по отдельным кускам работы над проектами.
Судя по высказываниям, наиболее интересны инструменты "социализации" ресурса.
Постараюсь черкнуть пару строк на эту тему на следующей неделе.
P.S. Отступления про инвесторов и Оруэлла навеяны правдой жизни.
Прикрутил BUEditor. Понравился, но работает как-то криво.
При написании блога и при написании первого комментария к статье он включен. Но если в статье есть уже каменты, то включается встроеный редактор, но ни как не BUEditor.
Все настройки перерыл.
The last step is adding "Tag" Panel View to the Panel Page and testing it with normally working URLs like taxonomy/term/tid. Two types of behaviour are possible on this stage: "Tag" Panel View displays either nothing or all of my content, either grouped by Summary type defined in Views argument configuration, or just a simple list View. What is surprising that Panel Page displays taxonomy term name in it's header, but it seems that this argument is not passed to the Panel View -> View. What am I doing wrong?
Помогите, пожалуйста! Как быть?
А это собсно пример реализации на друпале активной (10тыс хостов в день) социалки в рунете www.butik2.ru