Передача данных из формы Drupal в кодировке отличной от UTF8
Понадобилось, при подключении сайта на 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 портфолио без дополнительных модулей
Решил сделать сайт веб-студии для того, чтобы показать свои работы (портфолио). При чем поставил задачу сделать все с использованием минимума сторонних модулей. Раздел с портфолио можно было бы конечно легко сделать с помощью модуля views, но я решил данную задачу средствами ядра.
Задача такая: надо чтобы на странице со списком работ выводились небольшие картинки с названиями сайтов. Вывод списка надо сделать в виде таблицы с 3-мя работами в ряд. И, естественно, кликнув на картинку или название попадаем на развернутое описание работы.
Блок с количеством пользователей с группировкой по ролям
Может плохо искал, но ничего готового не нашел по данной теме. Сначала решил воспользоваться модулем views, т.к. он уже использовался в моем проекте, но данный модуль пока не умеет делать группировки. Нашел модуль views_groupby, который как видно из названия является дополнением к модулю views и добавляет одну группировочную функцию count(), которая мне то и нужна. Но. То ли модуль этот не доделанный, то ли у меня руки кривые, но никак не захотел он у меня делать группировку по ролям.
Использование модуля HS в Exposed filter без записей в term_node
В одном из проектов я ввел словать с регионами и использовал этот словарь в двух типах материалов: "Место отдыха" и "Организация". Для ввода регионов я использовал модуль hierarchical_select (HS), т.к. регионы выбирались с привязкой к фед. округам. В этом модуле можно в настройках задать опцию - записывать ли регионы в таблицу term_node (т.е. воспринимать этот словарь как обычную таксономию с выводом материалов по ссылкам типа taxonomy/term/1) или же воспринимать этот словарь лишь как справочник, без записей в эту таблицу.
Средний рейтинг по tag модуля fivestar
В модуле друпала fivestar можно сделать голосование по различным критериям (tags). Это делается стандартными средствами модуля, поэтому как именно это делается разобраться труда не составляет. А вот при выводе результатов с помощью views могут возникнуть вопросы.
Создать view с рейтингом только по одному критерию тоже можно стандартными средствами, а вот вывести рейтинг не по одному критерию, а в зависимости от суммы всех критериев, уже не так просто. Во всяком случае как это делается без дополнительного программирования не смог найти. Поэтому в своем модуле пришлось добавить хук:
Модуль uc_aac искажает дизайн в IE
Столкнулся с тем, что модуль для уберкарта uc_aac немного каверкал дизайн страницы в IE. В FF все было нормально, а именно в эксплорере страница с товаром сдвигалась вправо и картинка товара наполовину скрывалась. При чем стоило просто в браузере открыть окно свойств картинки товара, то все становилось на свои места. Не сразу дошло что это именно uc_aac с его ява скриптом, который устанавливает цену товара в зависимости от свойства. Проблема вот в этой строке (uc_aac.js):
$(node).find('.' + i).after(replacement).remove();
Краткий справочник по регулярным выражениям
Регулярные выражения - это то, что все время забывается из-за не слишком частого использования. Поэтому решил сделать для себя шпаргалку.
Drupal batch_set и загрузка больших файлов
Пришлось на днях подправлять модуль 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
При выводе форм, модули Друпал как правило размещают элементы друг под другом. Это касается как названия элемента формы(label), так и непосредственно полей форм.
В случае, когда вы модуль и соответственно формы делаете сами, то проще всего разметку делать в самом модуле при построении формы. (Я обычно пользуюсь suffix-ами и prefix-ами). Но когда уже есть чей-то готовый модуль, то легче изменить расположение основных элементов с помощью CSS. Именно об этом случае я и хочу расказать.
Итак, первый случай - это когда мы хотим разместить label слева от поля ввода.
uc_option_image плюс uc_aac
Понадобилось в уберкарте задействовать одновременно uc_option_image и uc_aac. По отдельности они вроде работают. Но вот вместе... Хотя uc_aac тоже не удалось запустить сразу. На друпал.org об этом много есть рассуждений от обновления nodewords (который у меня тоже стоял) до изменения весам модуля uc_store в системной таблице. Ошибка которая вылазила говорила об отстутсвии функции uc_price(). Как выяснилось у меня стояла не самая последняя версия уберкарта. И в моей версии просто напросто не было файла uc_price.inc, в котором и хранится эта функция.