vectoroc: Блог

Главные вкладки

модуль "график работы"

27 января 2011 в 13:02

Есть ли на друпал модуль, который предоставляет cck поле график работы, где можно выбрать дни недели и часы работы?

Multistep From

14 декабря 2009 в 9:53

Много раз задавался вопросом – почему никто не сделал модуль для облегчения создания multistep форм или wizard-ов?
И вот решил-таки написать что-нибудь сам.
Прикладываю архив с модулем. Там же есть пример использования.

Бонусы, которые предоставляет модуль:

Сломалась таблица menu_links. Кто виноват, и что делать?

9 сентября 2009 в 15:23

Недавно по неизвестным мне причинам сайт перестал работать с сообщением out of memory
Естественно любой друпаллер скажет "памяти добавь, ты что не знаешь, как прожорлив друпал?", но я начал разбираться.

Выяснилось, что выпадает в функции _menu_tree_data. При этом до вызова этой функции потребление памяти 14М, а из функции уже вываливается с нехваткой памяти (~32M).
В _menu_tree_data берутся данные из menu_links, полез смотреть эту таблицу и выяснил, что каждый link_path этой таблице повторяется 10 раз. 1 выглядит наиболее вменяемо, а остальные неправильные, на мой взгляд.

Вот пример записи:

 
admin/build/block/configure    2  17  25  64  0  0  0  0  0  0
admin/build/block/configure    476  0  0  0  0  0  0  0  0  0

Слева links_path, далее идут числа p1/2/3/... p1 - id первого участка меню (т.е. admin/build/block/configure ), далее id для admin/build/block/configure и т.д..
Из 10 копий каждого пункта меню только у первого правильные значения для pN, у остальных p1 > 400 , а p2/3+.. = 0.

В итоге сделал дамп таблицы (в атаче) и truncate. Это помогло, но надолго ли?
Кто-нибудь сталкивался с таким?

Поддержка русских словоформ в format_plural

7 сентября 2009 в 21:56

Искал, уже решил накатать патч в ядро (и накатал...), но тов. Ilya_1st подсказал, что этот вопрос решается через трансляции в .po файле.

В начале .po файла должны быть строки

"Plural-Forms: nplurals=3; plural=((((n%10)==1)&&((n%100)!=11))?"
"(0):(((((n%10)>=2)&&((n%10)<=4))&&(((n%100)<10)||((n%100)>=20)))?(1):2));"

Далее

msgid "Bulk generation of index aliases completed, one alias generated."
msgid_plural ""
"Bulk generation of index aliases completed, @count aliases generated."
msgstr[0] ""
"Массовое обновление индекса синонимов завершено, @count синоним сгенерирован."
msgstr[1] ""
"Массовое обновление индекса синонимов завершено, @count синонима "
"сгенерировано."
msgstr[2] ""
"Массовое обновление индекса синонимов завершено, @count[2] синонимов "
"сгенерировано."

Пример из pathauto/translations/ru.po

CCK и hook_form_alter

5 мая 2009 в 18:14

Задача: надо скрыть от глаз пользователя поле cck (заполняется с помощью js перед отправкой)

Долго ломал голову, пробовал разные способы. В итоге пришел к такому варианту:

function _hidde_field(&$element)
{
        $name = $element['#field_name'] . "[0][value]";
        $id = 'edit-' . str_replace('_', '-', $element['#field_name']) . '-0-value';
        $default_value = check_plain($element[0]['#default_value']['value']);
        $element[0]['#prefix'] = <<<PREFIX
                <input type="hidden" name="$name" id="$id" value="$default_value" />
                <!--
PREFIX;
        $element[0]['#suffix'] = "\n            -->\n";
}

и из hook_form_alter применяю эту функцию к нужным элементам.
В моем случае все это работает правильно, но больше похоже на костыль, чем на правильное решение.
Хотелось бы узнать, как такое правильно делать (что-то вроде [#type]=hidden).