Передача данных из формы Drupal в кодировке отличной от UTF8

CMS Drupal

Понадобилось, при подключении сайта на Drupal к платежной системе ASSIST передавать данные в кодировке cp1251. Передавал фамилию и имя.
Первым делом нужно было сделать передачу данных на внешний URL:
$form['#action'] = "https://test.assist.ru/shops/cardpayment.cfm";
Логично было предположить, что написав:
$form['#accept-charset'] = "Windows-1251";
я получу форму с виндовой кодировкой. Но не тут то было. Оказывается в Drupal-е UTF8 в формах зашито напрочь:

function theme_form($element) {
  // Anonymous div to satisfy XHTML compliance.

Создание на Drupal портфолио без дополнительных модулей

CMS Drupal

Решил сделать сайт веб-студии для того, чтобы показать свои работы (портфолио). При чем поставил задачу сделать все с использованием минимума сторонних модулей. Раздел с портфолио можно было бы конечно легко сделать с помощью модуля views, но я решил данную задачу средствами ядра.
Задача такая: надо чтобы на странице со списком работ выводились небольшие картинки с названиями сайтов. Вывод списка надо сделать в виде таблицы с 3-мя работами в ряд. И, естественно, кликнув на картинку или название попадаем на развернутое описание работы.

Блок с количеством пользователей с группировкой по ролям

CMS Drupal

Может плохо искал, но ничего готового не нашел по данной теме. Сначала решил воспользоваться модулем views, т.к. он уже использовался в моем проекте, но данный модуль пока не умеет делать группировки. Нашел модуль views_groupby, который как видно из названия является дополнением к модулю views и добавляет одну группировочную функцию count(), которая мне то и нужна. Но. То ли модуль этот не доделанный, то ли у меня руки кривые, но никак не захотел он у меня делать группировку по ролям.

Использование модуля HS в Exposed filter без записей в term_node

CMS Drupal

В одном из проектов я ввел словать с регионами и использовал этот словарь в двух типах материалов: "Место отдыха" и "Организация". Для ввода регионов я использовал модуль hierarchical_select (HS), т.к. регионы выбирались с привязкой к фед. округам. В этом модуле можно в настройках задать опцию - записывать ли регионы в таблицу term_node (т.е. воспринимать этот словарь как обычную таксономию с выводом материалов по ссылкам типа taxonomy/term/1) или же воспринимать этот словарь лишь как справочник, без записей в эту таблицу.

Средний рейтинг по tag модуля fivestar

CMS Drupal

В модуле друпала fivestar можно сделать голосование по различным критериям (tags). Это делается стандартными средствами модуля, поэтому как именно это делается разобраться труда не составляет. А вот при выводе результатов с помощью views могут возникнуть вопросы.
Создать view с рейтингом только по одному критерию тоже можно стандартными средствами, а вот вывести рейтинг не по одному критерию, а в зависимости от суммы всех критериев, уже не так просто. Во всяком случае как это делается без дополнительного программирования не смог найти. Поэтому в своем модуле пришлось добавить хук:

Модуль uc_aac искажает дизайн в IE

CMS Drupal

Столкнулся с тем, что модуль для уберкарта uc_aac немного каверкал дизайн страницы в IE. В FF все было нормально, а именно в эксплорере страница с товаром сдвигалась вправо и картинка товара наполовину скрывалась. При чем стоило просто в браузере открыть окно свойств картинки товара, то все становилось на свои места. Не сразу дошло что это именно uc_aac с его ява скриптом, который устанавливает цену товара в зависимости от свойства. Проблема вот в этой строке (uc_aac.js):

$(node).find('.' + i).after(replacement).remove();

Краткий справочник по регулярным выражениям

Web сайты

Регулярные выражения - это то, что все время забывается из-за не слишком частого использования. Поэтому решил сделать для себя шпаргалку.

Drupal batch_set и загрузка больших файлов

CMS Drupal

Пришлось на днях подправлять модуль Stock & Price CSV Updater для загрузки csv файлов. Загрузка использует в качестве параметра для сравнения товаров - SKU. И первое, что насторожило - это определение в запросах SKU как число. Т.е. например:

db_query("UPDATE {uc_product_stock} SET stock = %d WHERE sku = %d", $stock_level, $ref);

Но в моем случае артикулы были с буквами, поэтому переделал sku = %d на sku = %s.

О расположении элементов форм в Drupal

CMS Drupal

При выводе форм, модули Друпал как правило размещают элементы друг под другом. Это касается как названия элемента формы(label), так и непосредственно полей форм.
В случае, когда вы модуль и соответственно формы делаете сами, то проще всего разметку делать в самом модуле при построении формы. (Я обычно пользуюсь suffix-ами и prefix-ами). Но когда уже есть чей-то готовый модуль, то легче изменить расположение основных элементов с помощью CSS. Именно об этом случае я и хочу расказать.
Итак, первый случай - это когда мы хотим разместить label слева от поля ввода.

uc_option_image плюс uc_aac

CMS Drupal

Понадобилось в уберкарте задействовать одновременно uc_option_image и uc_aac. По отдельности они вроде работают. Но вот вместе... Хотя uc_aac тоже не удалось запустить сразу. На друпал.org об этом много есть рассуждений от обновления nodewords (который у меня тоже стоял) до изменения весам модуля uc_store в системной таблице. Ошибка которая вылазила говорила об отстутсвии функции uc_price(). Как выяснилось у меня стояла не самая последняя версия уберкарта. И в моей версии просто напросто не было файла uc_price.inc, в котором и хранится эта функция.