xandeadx.ru Блог музицирующего веб-девелопера

DrupalВывести текст в виде элемента формы

Опубликовано в

Пример вывода текста в форме с разметкой стандартного элемента:

$form['my_text'] = array(
  '#type' => 'item',
  '#title' => 'My label',
  '#markup' => 'My text',
);

Результат:

<div class="form-item form-type-item">
  <label>My label</label>
  My text
</div>

JavascriptУзнать с помощью API Яндекс.Карт входит ли адрес в пределы МКАДа

Опубликовано в
// Координаты МКАД. Данные лежат здесь - http://pastebin.com/raw.php?i=DKgMrxqF
var mkadCoordinates = ...;
 
// Проверяемый адрес
var address = 'Москва, Кремль';
 
// Создаём полигон в границах МКАД
var mkadPolygon = new ymaps.Polygon(mkadCoordinates, {}, {visible: false});
map.geoObjects.add(mkadPolygon);
 
// Геокодируем проверяемый адрес
ymaps.geocode(address).then(function (result) {
  var addressCoordinates = result.geoObjects.get(0).geometry.getCoordinates();
 
  // Проверяем входят ли координаты адреса в область МКАДа

DrupalКэширование Views с товарами в Drupal Commerce

Опубликовано в

Все формы в друпале защищены с помощью токенов, которые предотвращают подделку межсайтовых запросов. Отсюда вытекает невозможность по умолчанию кэшировать html с формами, например вывод представлений с товарами и кнопкой "Добавить в корзину".

Решаем проблему:

DrupalВыводим в html время затраченное на создание блока

Опубликовано в

В продолжении прошлого поста — выводим время создания контента блока, а точнее время выполнения hook_block_view() (это не время рендеринга):

/**
 * Implements hook_block_list_alter().
 */
function THEMENAME_block_list_alter(&$blocks) {
  $GLOBALS['block_build_microtime'] = microtime(TRUE);
}
 
/**
 * Implements hook_block_view_alter().
 */
function THEMENAME_block_view_alter(&$data, $block) {
  $block->build_time = microtime(TRUE) - $GLOBALS['block_build_microtime'];

DrupalВыводим статистику выполнения Views прямо в html

Опубликовано в

Бывает нужно быстро найти тормозящее представление Views на странице.

Решение:

/**
 * Implements hook_views_post_render().
 */
function THEMENAME_views_post_render(&$view, &$output, &$cache) {
  $execute_time = intval($view->execute_time * 100000) / 100;
  $render_time = intval($view->render_time * 100000) / 100;
  $output .= "\n<!-- Query time: $execute_time ms, Render time: $render_time ms -->";
}

Результат под каждым View:

DrupalПрограммно удалить отдельные строки из результатов Views

Опубликовано в

Пример удаления двух строк из представления myview дисплея page:

/**
 * Implements hook_views_post_execute().
 */
function hook_views_post_execute(&$view) {
  if ($view->name == 'myview' && $view->current_display == 'page') {
    unset($view->result[2]);
    unset($view->result[5]);
  }
}

Вместо hook_views_post_execute() можно использовать hook_views_pre_render() если какие-то данные доступны только там.

DrupalВставка изображений в CKEditor

Опубликовано в

Мой подход к работе с изображениями в CKEditor:

Загрузка изображений на сервер

Картинки загружаются с помощью модуля One Click Upload.

Вставка загруженных ранее изображений

Для выбора картинок с сервера использую IMCE. Многим нравится более продвинутый вариант — elFinder.

DrupalМассово скопировать все значения одного поля в другое

Опубликовано в

Сниппет, копирующий все значения поля field_old в field_new:

$field_name_from = 'field_old';
$field_name_to = 'field_new';
 
$field_info = field_info_field($field_name_from);
$value_columns_from = array();
$value_columns_to = array();
foreach ($field_info['columns'] as $column_name => $column_info) {
  $value_columns_from[] = $field_name_from . '_' . $column_name;
  $value_columns_to[] = $field_name_to . '_' . $column_name;
}
foreach (array('data', 'revision') as $table) {
  db_query("

DrupalПрограммно получить статистику сайта из Яндекс.Метрики

Опубликовано в

Чтобы программно получить статистику сайта с помощью API Яндекс.Метрики нужно:

1. Установить модуль Yandex Services Authorization API.

2. Авторизоваться на странице admin/config/system/yandex_services_auth

3. Сделать запрос к API метрики:

DrupalДобавить css-класс определённой строке таблицы Views

Опубликовано в

Пример добавления класса my-extra-class четвёртой строке таблицы Views:

/**
 * Preprocess function for views-view-table.tpl.php.
 */
function THEMENAME_preprocess_views_view_table(&$vars) {
  if ($vars['view']->name == 'myview' && $vars['view']->current_display == 'default') {
    $vars['row_classes'][3][] = 'my-extra-class';
  }
}