Случайный обзор модулей для 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()));

RSS-материал

Новое на сайте

Ссылки партнёров