Случайный обзор модулей для 6-ки (форматтеры восновном, по-верхам)
Прислано: graceman9
пт, 16/12/2011 - 13:44
Здесь ограничусь кратким описанием, основное - в документе по ссылке.
Этот документ - моё видение темы начатой друпальщицей Kate Marshalkina. Я просто сел и максимально кратко записал всё новое для меня, что успел увидеть за 2-3 дня “компьютерного запоя”. Приятного :)
Ссылка на опубликованный документ гугл-докс
[РЕШЕНО] AHAH ошибка выдает JSON результат вместо самой формы, что нетак?
Прислано: graceman9
пт, 02/12/2011 - 23:22
Сделал форму с AHAH добавлением текстовых полей в стиле "добавить ещё", добавляет.
Но следующая последовательность действий приводит к краху - вместо выдачи очередного сообщения об ошибке форма пропадает и я получаю чистый json-результат коллбэка вместо формы. Итак, действия:
1) открыть форму
2) добавить одно поле кнопкой "добавить ещё" // добавляется поле, вроде ок
3) отправить форму первый раз // выдаст ошибку формы, вроде ок
4) отправить форму второй раз // переход на страницу с json-результатом вместо того чтобы второй раз показать ошибки формы - НЕ ОК!
Можете ли по этому что-то сказать об ошибках моего кода? любые предположения, спасибо.
Если код поможет - выложу, просто много его..
upd 1:
Вот, только что нашел багрепорт:
http://drupal.org/node/591696
upd 2:
Вроде решилось, см. комменты.
Хороший онлайн тестер регулярных выражений (Online regexp tester)
Прислано: graceman9
пт, 02/12/2011 - 23:13
Лучший по моему мнению, и не выдаётся первой строкой при поиске, поэтому несразу нашел.
Плюсы для меня важные:
- тестирование как php та и javascript совместимых выражений (regexp)
- возможности всевозможных конвертаций: только результат, генерировать код, посмотреть совпадения
- удобная справка по regexp на той же странице
Вот этот лучший тестер регулярных выражений для php и javascript:
http://www.pagecolumn.com/tool/regtest.htm
http://www.pagecolumn.com/tool/pregtest.htm
К чему этот пост? Да просто рекламирую понравившуюся утилиту и желаю долгой жизни ей и её авторам!
Остальные тулзы обладали рядом неудобств про которые думаю знают те кто интересовался.
пс: надеюсь это разрешено..
Drupal 7 + Google Maps field = ?
Прислано: graceman9
вт, 25/10/2011 - 13:32
Что с гугло-картами для 7ки? есть стабильная?
Интересует вариант с CCK (читай Field API).
Пролистал существующие на сегодня (25 октября 2011) - то dev-версия, то только для 6ки, то страшно ставить из-за общего колличества багов.
Есть ли успешный опыт?
Таксономия: разделение словарей по таблицам? (мысли, модуль?)
Прислано: graceman9
чт, 29/09/2011 - 08:08
Вопрос: как достать ноды по такому условию:
WHERE term_A_from_vocabulary_X = 100 AND term_B_from_vocabulary_Y = 500
Теперь опишу свои мысли поясняющие вопрос.
#1
В рамках таблицы {term_data} это кривой запрос потому что MySQL промежуточная таблица будет:
node1 | term_A_from_vocabulary_X
node1 | term_B_from_vocabulary_Y
*видно что несуществует условия способного выбрать то что нужно (см. Вопрос)
**может это и очевидно, но я правда долгое время бился об это %)
#2
Использовать промежуточные таблицы (mysql views?) или вложенные запросы:
SELECT * FROM {term_data} WHERE vid = 1
а что тогда с производительностью?
#3
Использовать индексы (напрмер sphinxsearch) для подобных запросов
#4
И тут появилась не здравая мысль! А что если написать модуль аля taxonomy_separate (taxonomy separate vocabulary by table)
Тогда можно спокойно писать:
SELECT n.nid, n.title from {node} n
left join {ts_town_node} tn ON tn.nid = n.nid
left join {ts_town_data} td ON td.town_id = tn.town_id
left join {ts_category_node} cn ON cn.nid = n.nid
left join {ts_category_data} cd ON cn.category_id = cn.category_id
WHERE tn.town_id = 100 AND cn.category_id = 500
*town и category - это машинные названия словарей.
А если я хочу чтобы этот модуль вел себя подобно таксономии как много модулей мне прийдеться переписать/сдублировать для себя??
Есть ли причины почему так делать НЕ надо? (почему так не сделали разрабы Друпала)
#5
Или всё же использовать готовое (CCK)?
Пожалуй это лучшее из приходящего в голову, но чувствуется тоже есть подводные камни.
hook_load и предпросмотр ноды - дополнительные параметры не передаются?
Прислано: graceman9
чт, 01/09/2011 - 14:18
Было дело на начальном этапе - из за неуверенного знания друпал (и по дизайну не было) отключил кнопку предпросмотра ноды.
И когда всё уже работало решили включить предпросмотр.
Копнул глубже и увидел что предпросмотр ноды не подразумевает подгрузки дополнительных полей??
Как быть если hook_load (судя по коду) вызывается только если материал уже есть? а при предпросмотре $node->nid отсутствует.
Надеюсь знатокам вопрос ясен, или писать подробнее?
С радостью взглянул бы на схему (последовательность) вызова хуков, если бы она была.
- Для комментирования войдите или зарегистрируйтесь
[РЕШЕНО влоб] drupal_add_js в AJAX вызове
Прислано: graceman9
пн, 15/08/2011 - 18:49
Как при получении нового кода через ajax также дополнить Drupal.settings новыми значениями?
Делаю drupal_set_js('setting', ... ); и ожидаю что сработает print drupal_get_js('setting'); но что-то пока никак.. зато print drupal_get_js(); выводит и то что нужно и кучу ненужного.
Как изменить url добавления материала node/add/story на custom/add + ещё кое-что?
Прислано: graceman9
вт, 31/05/2011 - 19:12
сабж
[РЕШЕНО] Темизация своей страницы в модуле
Прислано: graceman9
ср, 06/04/2011 - 20:15
Есть модуль и он предоставляет страницу site.ru/my
Если добавить в тему шаблон page-my.tpl.php, то на странице /my мы увидим содержимое page-my.tpl.php
Возможно ли добавить в свой модуль шаблон page-my.tpl.php чтобы использовался он, если в теме нет одноименного шаблона?
Drupal 6 add css inline
Прислано: graceman9
пт, 11/02/2011 - 19:08
Для себя я решил так:
/** * Add css inline via drupal_set_html_head(). * Example: * $css = array( * '#my-selector' => array( * 'color:green', * 'font-weight:bold', * ) * ); */ function mydrupal_add_css_inline($css) { $styles = ''; foreach ($css as $selector => $rules) { $styles .= "\n$selector {"; foreach ($rules as $rule) { $rule = trim($rule, "; \t\n\r\0\x0B"); $styles .= "\n\t$rule;"; } $styles .= "\n}\n\n"; } drupal_set_html_head('<style type="text/css">'. $styles .'</style>'); }
Определяю эту функцию в каком нибудь custom-common модуле чтобы везде было.
[РЕШЕНО] Как запретить просмотр стандартных страниц /node, /taxonomy/term/* и т.п.?
Прислано: graceman9
вт, 30/11/2010 - 12:35
Как запретить сабж для всех?
Решено - коммент #2
Делаем поле описания filefield обязательным (CCK filefield description required patch)
Прислано: graceman9
ср, 17/11/2010 - 11:50
По вопросу http://drupal.ru/node/52815 сделал патч.
!! Патчи я раньше не делал, но с CCK работал. Пишите если что, у себя всё проверил - работает.
Ниже пара скриншотов и сам патч :)
- Для комментирования войдите или зарегистрируйтесь
Отличие полей filename и filepath в таблице files
Прислано: graceman9
пн, 08/11/2010 - 19:34
en: files table filename vs filepath difference
Есть в таблице drupal `files` ключевое отличие полей:
filename - имя файла, которое было на момент загрузки пользователем.
filepath - путь к существующему файлу на сервере.
Например:
filename = 'my_image.jpg'
filepath = 'sites/default/files/my_image_0.jpg'
Тоесть помимо пути к файлу добавляеться дельта файла '_0'.
Drupal масштабируемость vs производительность (размышления)
Прислано: graceman9
ср, 03/11/2010 - 10:12
Надумал сутреца..
Друпал ориентирован на масштабируемость (хотя бы mysql, pgsql..), верно?
Но из-за этого "ориентирования" порой страдает производительность (функциональность?), ведь так? Сюда же мультисайтинг, многоязычность (просто чтобы понять что имею ввиду)
В интернете разбросаны темы как улучшить ту или иную штуку, и официально это не делают в силу масштабируемости. Но если я знаю что не буду использовать pgsql, то я хочу несколько ускорить работу моего mysql.
Пример: столкнулся с кешированием, где кое-что предлагали править в ядре, т.к. без вариантов. Это один пример. Для изменения ядра делают патчи, так? Но всё-равно это несколько неудобно ибо требует наблюдения, контроля.
Суть вопроса: есть ли красивый метод создания "своего" Друпал-сайта, где можно вносить изменения в ядро? и..
- возможность переключиться с оптимизированного (назовём его "мой-друпал") на "по-умолчанию"
- есть ли где-то коллекциея решений ускоряющих друпал в ущерб масштабируемости и валидности?
- может некая тонкая настройка, позволяющая использовать только часть выбранного модуля? Может какая-то конструкция.. незнаю
- хотя бы теоретически что нужно сделать чтобы исправить хоть один из описанных пунктов? может описанные пункты уже имеют устоявшиеся названия? что с этим делают вообще? может это не так важно?
Рассчитываю на то что Вы поймете и додумаете мой вопрос :) Хочется навести порядок в голове по этой теме.
Может что-то из этого уже есть но я не знаю названия?
Спасибо за внимание :)
date_popup + jQuery UI 1.7.3 подружились
Прислано: graceman9
ср, 15/09/2010 - 09:12
Захотелось подружить модуль date => date_popup с темами jQuery UI
(просто посмотрел что 1.7.3 это последняя версия из ветки 1.7 на code.google)
Озадачило что можно использовать лишь стандартную тему модуля date_popup или стандартную jQuery UI.
Сделал такие изменения:
--- /sites/all/modules/date/date_popup/date_popup.module Пт авг 13 21:48:34 2010 +++ /sites/all/modules/date/date_popup/date_popup_173.module Ср сен 15 11:49:09 2010 @@ -51,6 +51,16 @@ $paths[drupal_get_path('module', 'date_popup') .'/themes/datepicker.css'] = t('Date Popup default'); $paths[$jquery_ui_path .'/jquery.ui/themes/base/ui.datepicker.css'] = t('jQuery UI default'); break; + case '1.7.3': + $path = drupal_get_path('module', 'jquery_ui') .'/jquery.ui/themes'; + $files = is_dir($path) ? scandir($path) : array(); + $nomask = array('.', '..', 'CVS'); + foreach ($files as $dir) { + if (is_dir($path .'/'. $dir) && !in_array($dir, $nomask)) { + $paths[$path .'/'. $dir .'/ui.datepicker.css'] = 'jQuery UI '.$dir; + } + } + break; default: $paths[drupal_get_path('module', 'date_popup') .'/themes/datepicker.1.7.css'] = t('Date Popup default'); $paths[$jquery_ui_path .'/jquery.ui/themes/default/ui.datepicker.css'] = t('jQuery UI default'); @@ -69,7 +79,15 @@ return; } - drupal_add_css(variable_get('date_popup_css_file', date_popup_css_default())); + $pathinfo = pathinfo(variable_get('date_popup_css_file', date_popup_css_default()));