Действия

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

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, как раз его значение будет отображаться в прогрессбаре. В примере в той статье этого нет, хотя...

Для того, чтобы у ваших пользователей была возможность вставить какой-нибудь код в качестве текста на ваш сайт (например, вам надо вставить в статью примеры написанного кода на пхп, а Друпал по умолчанию все теги из текста удаляет) - нужно установить и настроить модуль 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(*); ';...

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

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

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

Если вы написали свой платёжный шлюз для Drupal Commerce, и вам нужно чтобы после выбора нашего способа платежа пользователь автоматически перенаправлялся на сайт платёжной системы (это классическая схема обычно), то в хуке _commerce_payment_method_info нам нужно добавить всего одну строчку 'offsite_autoredirect' => TRUE,! Пример:

...

Часто стандартных наборов правил для Rules не хватает и возникает необходимость выполнить свой php-код. Включать на сайте модуль php нельзя! Ибо это черевато соблазнами добавить какой-то код в базу данных, а это не drupal-way и черевато проблемами и ошибками. Итак, для того чтобы выполнить какое-то своё действие при срабатывании события по Rules, надо реализовать ряд хуков:

/**
 * Implement hook_rules_action_info()
 
 * Declare any meta data about actions for Rules
 */
 
function...

Автор: "Чулан", оригинал: http://habrahabr.ru/post/78845/, использовал на одном сайте - реально работает.

Прочитав статейку Дмитрия Котерова о ресайзе ифрэймов решился поделиться своим решением.

Этим решением пользуемся на продуктивном сайте.

Итак, дано:
1. Нужно показывать в ифрэйме страницы с других доменов без скроллбара
2. Внутри ифрэйма могут совершаться переходы
3. Сайты в ифрэйме могут менять высоту без перегрузки (AJAX или просто раскрытие каких-нибудь невидимых элементов)
4. Во включаемые...

Если при включении ajax в вашей вьюс всё работает только один раз, а в консоль браузера выпадает ошибка:
Uncaught TypeError: Object [object Array] has no method 'replace'
то это значит, что вам нужно установить следующий патч: https://drupal.org/files/drupal-ajax_javascript_error-1715508-2.patch
конкретно, в файле misc/ajax.js надо заменить...

Если вам нужно выставить значения по умолчанию для некоторых раскрытых фильтров во вьюс программно, то вам не поможет хук _form_alter, потому что раскрытые фильтры не оттуда берут default_value.
Оказывается, нужно использовать хук _views_pre_build(&$view), в котором изменять handler нужного фильтра, примерно так:

function zz_np_views_pre_build(&$view) {...

При вёрстке сайтов необходимо всегда учитывать мобильные устройства, но проблема в том, что если в тексте встречаются таблицы, то он никак не хотят адекватно уменьшаться и ухудшают весь вид страницы, становясь то слишком длинными, то вылезая за границы экрана.
Решение есть - элегантный способ от Todd Parker, при котором таблица просто прячется, вместо неё показывается сообщение "Таблица: нажмите для увеличения", и при нажатии таблица раскрывается на полный экран, позволяя её более-менее сносно просмотривать. При нажатии кнопки "Назад" можно вернуться к текущему тексту.
Решение...

Например, у вас есть вьюс в виде таблицы, в которой есть столбец "статус", и вам нужно подсвечивать строку в зависимости от того, какое значение поля "Статус" у каждой строки, то вам нужно использовать хук _preprocess_views_view_table:

function THEME_preprocess_views_view_table(&$vars) {
  $view = $vars...

Ко мне периодически приходят клиенты, у которых есть Друпал-сайт, но он очень медленно работает или даёт высокую нагрузку на базу данных. Многие из таких клиентов думают, что проблема в самом Друпале, и мечутся в выборе "переделать весь сайт на другой цмс типа Битрикса" или заказать всё-таки оптимизацию сайта. Чаще всего заказывают оптимизацию, потому что это дешевле, и оказываются абсолютно правы - проблема не в Друпале, а в разработчиках, которые этот Друпал настраивают.
Одно и то же действие в Друпале можно сделать несколькими путями. При этом разработчики зачастую выбирают самый...

Страницы