Друпальчики

Про работу и уважение

Есть у нас в NetSpark на техподдержке один сайт. На днях заказчик попросил внести в него некоторые изменения. А сайт делали не мы, делала его другая компания (воздержусь, не скажу, кто именно). Ну надо — значит надо, взялись за работу.

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

Так вот, стали мы, значит, делать изменения. В частности, потребовалось дать отделу кадров заказчика ограниченный доступ к добавлению информации об их команде (отделы, сотрудники), а также к добавлению вакансий. Обычное дело, ничего особенного. И вот смотрю я в админку, в меню создания материалов, пункты «Отдел сотрудников», «Сотрудник». И вижу ссылки:

Отдел сотрудников — node/add/niger-party
Сотрудник — node/add/niger

Не, я понимаю. Каждый подросток, добравшийся до компьютера, считает себя крайне остроумным. Видимо на этом основании он вставляет свои исключительно смешные шутки во что захочет, в том числе и в работу. А мне вот, например, как я уже сказал, надо дать доступ отделу кадров к добавлению сотрудников. И что они увидят прямо в URL-е добавления? Что разработчик сайта решил обозначить всех сотрудников предприятия (то есть и отдел кадров тоже) — нигерами? Как, интересно, они к этому отнесутся?

И вообще, это как? Какой-то дурачок решил пошутить? Или это осмысленное желание нагадить, трусливо так, исподтишка, чтоб не сразу заметили? Как вообще можно так к своей работе относится, к своим заказчикам? Кем вас будут считать и как относиться к вам будут, если узнают — что вы сами так к своей работе относитесь?

Ну а машинные имена материалов мы, естественно, подправили. В семерке это сделать несложно.

Еще два модуля для Drupal Commerce

Сделали еще два модуля, обратно по заказу портала Javascript.Ru.

Drupal Commerce No Cart

Модуль перенаправляет пользователя на checkout при заказе каждого товара. Перед перенаправлением корзина очищается от предыдущих товаров.
Если заказ не был оформлен до конца, в специальный блок будет выведено предупреждение с предложением оформить заказ или удалить его.
Подробнее

Drupal Commerce Skip Payment

Модуль добавляет способ оплаты «Пропустить оплату», позволяющий оформить заказ без оплаты и сохранить его со статусом pending (в ожидании). На страницы всех заказов в этом статусе модуль добавляет кнопку «Переоформить заказ». С ее помощью пользователь сможет оформить заказ заново с другим способом оплаты.
Подробнее

Drupal Commerce — Interkassa

По заказу портала Javascritp.Ru интегрировали в Drupal Commerce платежную систему «Интеркасса».

Прочитать подробности и скачать модуль можно на сайте NetSpark.Ru.

Микросовет — DrupalQueue

Всякий раз, когда нужно по запуску cron-а обработать несколько объектов, не поленитесь, добавьте три строчки для использования DrupalQueue.

Обрабатываемые объекты — совершенно внезапно — из нескольких превратятся в тысячи. И все равно придется добавлять.

Про вредные платежные системы

Ставил тут на один портал разные платежные системы. Для каких-то взял готовые модули, для других — написал, для третьих — переделал чужие, четвертые без меня поставили. Что их все объединяет?

Да то, что ни у одной из установленных платежных систем (русских и украинских) нет на сайте в форме оплаты кнопки или ссылки «Назад в магазин». Появляется только если ввести что-нибудь неправильно — номер кредитки там, или ID кошелька.

Эй вы, Яндекс.Деньги, Webmoney, Мастербанк, Интеркасса! Не будьте врединами, сделайте ссылку «Обратно в магазин» в дефолтной форме оплаты. Я может по ошибке вашу систему в списке выбрал — и мне нафиг не упало заводить у вас аккаунт, мне надо вернуться и выбрать то, что я хотел.

Посмотрите на PayPal — ссылка на месте, а по популярности фору вам всем вместе взятым даст. Стыдно должно быть.

AJAX и Vote Up Down

Есть такой модуль — Vote Up Down. Весьма полезный, когда речь заходит обо всяких рейтингах, кармах и прочих количественных измерениях деятельности пользователей на сайте. Сам по себе он (модуль) вполне адекватный, в особенности если использовать подмодуль vud_field. К слову, есть тенденция к замене всех составляющих Vote Up Down на одно это поле — вполне в духе седьмого Друпала.

Так или иначе, иногда требуется выполнить на сайте действия непосредственно после очередного пользовательского голоса. И получить по AJAXу ответ от сервера. Самый примитивный пример: голос за/против пользователя изменяет его рейтинг по определенной формуле — и нам надо обновить не только сам виджет голосовалки, но и рейтинг пользователя в каком-нибудь другом месте на странице.

Очевидно, нужно зацепиться в JavaScript-е за какое-нибудь событие. Можно было бы подвесить обработчик .click() на кнопках голоса, но не тут-то было: когда обработчику будет передан контроль — вновь созданный голос еще не будет сохранен на сайте, и следовательно данные, которые мы получим в ответ, не будут актуальными.

Продолжение на NetSpark.Ru

Принял участие в Drupal-подкасте

Принял участие в Drupal-подкастах Саши Дубовского. Поговорили немного обо всем — о домовой странице, о создании и работе NetSpark.Ru, про commerce, сообщество и еще всякое.

Послушать можно тут: http://podcasts.drupal.ru/podcast/14

Извиняйте, что местами меня плохо слышно: использовал передовую технологию «блютуз-хедсет». В скайпе на другом конце было слышно хорошо, а записалось в audacity — увы, вот так. В следующиий раз буду умнее.

Микросовет — сортировка

Всякий раз, когда заказчик заказывает вывод данных — галерею, таблицу товаров, статей или еще чего-то — имеет смысл сразу задуматься: а как эти данные нужно сортировать? По заголовку? По дате? По полю веса, настраиваемому через draggable? Задумайтесь и спросите заказчика.

В 90% случаев заказчик не помнит о сортировке изначально, но ровно в стольких же случаях он вспомнит о ней потом и спросит: «Как?» Стоит предусмотреть этот вопрос заранее — сэкономите время.

Модуль User Comments

Как добавить комментарии к профилям пользователей в Drupal 7? Вопрос среди работающих с Drupal звучит довольно регулярно. Ответ на него простой: никак. Комментировать профили в Drupal 7 нельзя, так как разработчики ядра не отвязали комментарии от нод.
Но проблему (комментирование профилей) решить как-то нужно, и решение всем давно известно. Чтобы писать/выводить комментарии в профилях пользователей надо:

  1. Каждому профилю поставить в соответствие ноду (именно к ней пользователи будут писать комментарии). То есть при создании пользователя — должна создаваться нода. А при удалении пользователя — нода должна удаляться.
  2. Ноду вывести на странице профиля пользователя. Точнее, нужно вывести ту часть, которая отвечает за комментарии.
  3. После написания комментария желательно возвращать пользователя на страницу профиля, а не на страницу с этой нодой.

Скачать модуль, который все это делает, с NetSpark.Ru