Статьи о Drupal

На рынке существует множество CRM/ERP систем. Мой главный критерий к ним - настраиваемость. Не все люди мыслят и воспринимают мир одинаково, и создатели CRM/ERP не должны за меня решать, какую информацию мне удобно видеть, а какую - нет. Именно поэтому NetSuite так популярен на западе - он дал готовые продукты И инструменты для самостоятельной настройки их под себя. Но NetSuite для меня дороговат (минимальный тарифный план - тыща долларов в месяц), а у нас есть настраиваемый Друпал + не так уж много требований и хотелок. Я думаю это стандартные доводы всех, кто решает пилить CRM+ERP под...

Отредактируйте .htaccess, после строчки

# Override PHP settings. More in sites/default/settings.php
# but the following cannot be changed at runtime.

добавьте
php_value memory_limit 196M

Чтобы установить drush, воспользуйтесь этой статьей http://nikita-petrov.com/raznoe/ustanovka-drush-na-shared-hosting-swebru

Чтобы выставить нужную версию php конкретно для какого-то сайта, нужно зайти в панель управления...

В основном надо делать все действия из этой статьи: https://www.drupal.org/node/2366283
Самая хитрость состоит в том, что на хостинге sweb для того чтобы запускать php выше 5.2.17 нужно указывать в командах не php а php5.6
Т.е. в первую очередь это включить ssh доступ, залогиниться, зайти в домашнюю папку cd ~
Затем

wget https://getcomposer.org/installer |...

Bootstrap отличный фреймворк для создания тем оформления и по сути я думаю скоро станет стандартом для веб-разработки. Для того, чтобы сделать своб собственную тему оформления, базирующуюся на этой фреймворке, для Друпал, надо сделать следущее:
Первичная подготовка (установка less и базовой темы бутстрап):

sudo drush dl bootstrap
sudo drush dl less
mkdir sites/all/...

Для того чтобы какую-то большую операцию выполнить в несколько приёмов, нужно использовать специальное Batch API Друпала. Хорошая статья по его использованию есть здесь:
http://drupalace.ru/lesson/obrabotka-bolshogo-kolichestva-dannyh-s-pomos...

Но там есть пара нюансов, которые я хотел бы прояснить:
$context['finished'] надо заполнять при каждом шаге, это значение от 0 до 1, как раз его значение будет отображаться в прогрессбаре. В примере в той статье этого нет, хотя...

Я нашел просто невероятно интересную и удобную вещь для работы с патчами, это расширение для drush drush_iq
https://www.drupal.org/project/drush_iq
Что оно делает - можно одной строчкой скачать конкретный патч из issue модуля и применить его, а так же можно одной строчкой создать патч из своих изменений и одновременно закоммитить его в нужную issue на drupal.org - очень удобно!

http://cgit.drupalcode.org/drush_iq/plain/README.txt?id=...

Это статья будет полезна тем, у кого есть доступ для совершения commit'ов в опубликованные друпал-модули. Например, авторам этих модулей. Я буду рассказывать на примере моего модуля comment_mover.
Итак, предположим в какой-то issue вашего модуля кто-то выложил патч для решения какой-то проблемы и вас он устраивает. Теперь надо закоммитить его в наш модуль так, чтобы автором решения был указан тот человек, кто сделал этот патч, и у того человека сделалась запись в его аккаунте об этом коммите.
Есть два варианта - когда данные коммитера уже указаны в патче, и когда нет. Смотрим...

Для того, чтобы у ваших пользователей была возможность вставить какой-нибудь код в качестве текста на ваш сайт (например, вам надо вставить в статью примеры написанного кода на пхп, а Друпал по умолчанию все теги из текста удаляет) - нужно установить и настроить модуль GeShi.
Устанавливаем модуль как всегда: https://www.drupal.org/project/geshifilter
в папку sites/all/libraries/geshi копируем библиотеку geshi (ссылка на нее есть в описании модуля на друпал.орг)
Заходим в нужный текстовый форма /admin/config/content/...

По умолчанию в визуальном редакторе CKEditor у тегов P, SPAN, UL LI и некоторых других обрезаются все html-атрибуты, например class, rel и так далее. Чтобы этого избежать, нужно зайти в редактирование вашего профиля CKEditor http://agent.all-poland.travel/admin/config/content/ckeditor/ (ссылка "изменить"), там зайти в самый низ "Дополнительные настройки" и туда добавить
config.extraAllowedContent = 'span(*); p(*); ul(*); li(*); ';...

Если вас заказчик просит, чтобы некоторые пункты меню являлись группирующими, т.е. не вели ни на какую страниу, а просто раскрывали дочерние пункты меню, но некоторые всё же должны вести на какую-то страницу при нажатии на них, даже если там есть дочерние пункты меню - в таком случае на всё равно не надо ничего кодировать, есть модуль https://www.drupal.org/project/special_menu_items
Устанавливаем его, и у тех пунктов, что не должны являться ссылками просто выставляем в поле "Путь" адрес . Порядок! Еще может понадобиться...

Если у вас не закрывается всплывающее окошко, сделанное в Друпале через ctools, то вы можете использовать один из следующих методов:

// JavaScript
$('#modalBackdrop').click(function() {
   Drupal.CTools.Modal....

Производить отладку через XDebug очень легко - стоит лишь добавить определенную строчку типа ?XDEBUG_SESSION_START=15137 к адресу запроса, и мы можем ставить breakpoint'ы в нужных местах кода чтобы посмотреть значение переменных. Однако что же делать, если на странице вызывается какой-то ajax-скрипт (например, при нажатии на кнопку), и в нём почему-то не срабатывают выставленные breakpoint'ы? Всё дело в том, что к ajax-запросам не добавляется нужной нам переменной XDEBUG_SESSION_START, и наш сервер просто не знает, что нужно останавливаться.
Для решения этой проблемы я пошёл прямым...

Часто встаёт задача при выполнении какого-то javascript'a показать пользователю крятущийся кружочек о том, что скрипт выполняется. В друпале для этого в любом месте страницы достаточно добавить следующий код:

<div class="ajax-progress"><div class="throbber">&nbsp;</...

Страницы