вторник, 18 февраля 2014 г.

DrupalSib приглашает посетить восьмое DrupalCafe в Новосибирске 1 марта 2014 г.


DrupalSib проводит восьмое по счету DrupalCafe в Новосибирске.

Приглашаем всех желающих узнать что-то новое о Drupal и поучаствовать в обсуждении актуальных тем. Вас ждут интересные доклады, обсуждения, обмен опытом в неформальной дружеской обстановке.

Активно предлагайте интересующие Вас темы для выступлений, наши специалисты подготовят доклады по этим темам на следующее DrupalCafe.





Планируются следующие темы докладов:
1. Ильин Евгений "Поиск на Drupal + Apache Solr для содержимого на русском языке - с нуля и до конечного результата"
2. Санданов Чингис "Drupal Commerce, либо Проекты на Drupal с точки зрения РП"
3. Прищепа Павел "Хостинг друпальных сайтов"
4. Валуев Вадим: "Rich text в Друпале"
5. Исай Руслан "Концепция страничка-ориентированной разработки на Drupal"
6. Калинин Антон "Compass CSS Framework"

Место: Новосибирск, ул. Красный проспект, 177, актовый зал НТЭ и ВТ
Начало в 12:00.

Ждем Вас, ваших друзей, коллег и знакомых.

Участникам сообщества DrupalSib просьба зарегистрироваться заранее.
Если ты студент и никогда у нас не был - заполни анкету.

По всем вопросам обращаться:
+7 (913) 467 88 33 - Татьяна
     kiseleva.t@i20.biz

четверг, 16 мая 2013 г.

Stand Up N3 Теминг file input на css.

В разных браузерах инпут загрузки файлов выглядит по разному.
Есть разные js и css снипеты - некоторые из них кросбраузерные, некоторые работают только на html5.

Теминг file input на css.

1. Любой теминг инпута для загрузки на css требует дополнительные обертки для инпута. Что бы задать обертки для всех file input'ов можно прописать функцию процесса к типу элемента managed_file в хуке hook_element_info_alter()

среда, 6 февраля 2013 г.

Stand Up N2 - Как прикрутить jquery ui datepicker к exposed фильтру во views по стандартным полям created/changed

Иногда возникает необходимость сделать datepicker в exposed фильтре вьюва для страндартного поля у любого entity - created или changed. В друпале по дефолту такие поля можно сделать только у поля date используя виджет date_popup (для этого нужен модуль date и date_popup).

DrupalSib приглашает посетить шестое Drupal Cafe!



  DrupalSib организовывает шестое по счету DrupalCafe для объединения неравнодушных к любимой CMS, знакомства и налаживания контактов в IT сообществе Новосибирска, для тех, кто хочет узнать что-то новое в Drupal-разработках, у кого появились вопросы требующие мнения со стороны, оценки коллег.


вторник, 5 февраля 2013 г.

Stand Up N1 - особенности Google с JSON

    В DrupalJedi у нас каждый вечер проводятся вечерние стендапы, где разработчики делятся знаниями, которые получили в течение рабочего дня. Теперь мы будем публиковать самое интересное из наших стендапов в блог ДрупалСиба с меткой "standup".  

    JSON - текстовый формат, который может исспользоваться в любом языке программирования для обмена данными. 

    Google также использует JSON для передачи данных между своими сервисами. Такой JSON зачастую передает конфиденциальные данные, которые злоумышленники могут захотеть украсть, использовав JSON у себя на сайте. Получить его можно подключить к сайту как js файл. Поэтому, для безопасности, google добавляет в начало своего JSON файла строки “while(1);” или &&&START&&&. 

    Пример: while(1);[['u',[['smsSentFlag','false'],['hideInvitations','false'],['remindOnRespondedEventsOnly','true'],['hideInvitations_remindOnRespondedEventsOnly','false_true'],['Calendar ID stripped for privacy','false'],['smsVerifiedFlag','true']]]]

    Как только такой код попадет в теги <script> в html документе, он исполнится как js и в результате это приведет к бесконечному циклу или синтаксической ошибке. Почему же этот хак не мешает работе самих сервисов google? Потому что они работают с JSONом через AJAX запросы, выполнение же AJAX запросов на разные домены запрещены.

суббота, 8 декабря 2012 г.

Снипет для программной отрисовки views exposed form


Иногда нужно отрисовать exposed форму на странице в отдельном регионе или сайдбаре. Есть простой сниппет, который позволяет создать блок для exposed формы.


понедельник, 19 ноября 2012 г.


DrupalSib приглашает всех посетить пятое DrupalCafe
в Новосибирске 24 ноября 2012г.

Друзья, 24 ноября мы снова увидимся на DrupalCafe в Новосибирске.


На пятой встрече DrupalCafe вас ждут интересные доклады, обсуждения, обмен опытом в неформальной дружеской обстановке.

пятница, 9 ноября 2012 г.

Перенаправление запросов с помощью .htaccess

Большинство сайтов на Друпал используют Apache в качестве веб-сервера. Apache позволяет отдельно задавать правила обработки для каждой директории сайта с помощью файлов .htaccess. Настройки распространяются на все вложенные подпапки, если в них нет своего файла .htaccess со своим списком настроек.

Недавно передо мной встала следующая задача:
"Нужен скрипт, содержимое которого будет время от времени меняться и, к тому же, зависеть от входных GET параметров. Т.е. сайт при обращении по адресу "scripts/custom.js?city=70" запускает menu_callback, который генерирует файл скрипта в зависимости от ID города, пришедшего в GET-параметре и некоторых глобальных настроек в админке, и отдает его пользователю."

Ссылка на текущую страницу с якорем

При разработке JS-скриптов часто требуются ссылки, которые никуда не ведут, но запускают определенные действия в скриптах.

Для решения этого часто используют псевдопротокол "javascript:void(0)" или ссылку на якорь - "#". Минусы есть у обоих вариантов (например, тут или тут ), но параметр "href" у ссылки, которая никуда не ведет, тем не менее должен быть.

Итак, в этом посте рассмотрим вариант с якорем.
Для этого нужно просто вызвать функцию l(), в которой использовать external-атрибут:

print l(t('Click me'), '#', array('external' => TRUE));

Вот и все.


JS - Как вызвать метод от целого числа

Итак, если Вам понадобится вызвать метод от целого числа, например:

 7.toString();

то, попробовав сделать это, Вы получите ошибку:

 SyntaxError: Unexpected token ILLEGAL!

Ответ кроется в том, что дробные числа в JS можно записывать как: "7.", опуская дробную часть. Это будет означать - "7.0".

Таким образом, когда браузер парсит JS, выполняя его, он преобразует

 "7.toString()" в  "7.0toString()"

что дает некорректную конструкцию. Для исправления этого достаточно обернуть число в скобки:

 (7).toString();

Результат: строка "7"

Используем less на Drupal

LESS - это собственный язык стилевой разметки, который расширяет способности стандартного css.
Подробнее про less вы можете прочитать на официальном сайте проекта, там есть замечательные примеры его использования.

На less уже написаны множество библиотек, получивших огромную популярность. К примеру, такие, как twitter bootstrap или semantic grid system.

Сниппет для препроцессов шаблонов views в Drupal 7

В друпале 6 для каждого шаблона .tpl.php можно было написать препроцесс, и он бы обязательно вызвался.

В друпале 7 это изменилось, теперь вызов препроцесса для шаблона не является обязательным.

Следующая проблема встречается практически в каждом проекте:
Нельзя написать preprocess/process функцию для специфического шаблона вьюхи. Срабатывают только общие препроцессы:

четверг, 8 ноября 2012 г.

Быстрая отладка сломанной верстки на Panels

В случае когда вы обнаружили, что на странице невалидный HTML, и причина тому неверно открытые/закрытые теги, бывает сходу трудно понять в каком именно месте ошибка. В каком блоке, пане, регионе, лайауте?
Можно конечно ходить и поочереди отключать блоки из вывода на панель, но проще использовать такой снипет:

Делаем информационный виджет для Drupal сайта


Недавно передо мной возникла задача - сделать информационный виджет для одного сервиса, что бы размещать его на сторонних сайтах.
Коротко о сервисе - Сайт "Умное слово на каждый день" - это первый образовательный ресурс подобного рода. Неизвестные широким массам слова появляются каждый день и составляют крупнейший в рунете словарь "умных" слов. Заходи на Everydayword.ru каждое утро и повышай словарный запас.

суббота, 6 октября 2012 г.

Организация шаблонов/препроцессов нод

В случае если вы создаете Друпал-сайт с помощью build/view-модов нод, можно очень удобно разделить шаблоны и препроцессы не только  по типу (что доступно по умолчанию), но и по view-моду.
Общая схема названий будет следующей.


Имена препроцессов
THEMENAME_preprocess_node_NODETYPE_VIEWMODE(&$vars, $hook) {...}
Либо, можно сделать общий препроцесс для view-мода любого контент тайпа.
THEMENAME_preprocess_node__VIEWMODE(&$vars, $hook) {...}

Имена шаблонов
node-NODETYPE-VIEWMODE.tpl.php
Аналогично для общего шаблона view-мода
node--VIEWMODE.tpl.php

суббота, 8 сентября 2012 г.

Мультиязычность в Drupal 7


В этой статье я расскажу вам как за четверть часа сделать ваш сайт мультиязычным.
Итак , что бы сделать контент мультиязычным в Drupal 7 у нас есть два способа:
1) Модуль Internationalization и его подмодули
2) Модуль Entity Translation + модуль Title
Их мы сейчас и рассмотрим.