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

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';
  }
}

DrupalВывод отдельных блоков в region.tpl.php

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

По умолчанию в region.tpl.php приходит уже отрендеренный html всех блоков, доступный в переменной $content. Вывести отдельные блоки можно (они лежат в $elements), но нельзя поступить как в node.tpl.php — сначала вывести нужное, а потом просто сделать echo render($content); для вывода всего остального.

Поколдуем немножко:

/**
 * Implements hook_page_alter().
 */
function THEMENAME_page_alter(&$page) {
  foreach (element_children($page) as $region_name) {

DrupalВывести отладочное сообщение Krumo в watchdog

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

Способ больше не работает, так как сообщения в логе теперь проходят через функцию filter_xss_admin(), которая вырезает стили и скрипты. Пользуйтесь DrupalHelper::debug().

Пример вывода в watchdog информации о переменной $variable:

простой способ:

has_krumo();
watchdog('debug', 'message label => ' . krumo_ob($variable), NULL, WATCHDOG_DEBUG);

DrupalИзменить значение поля в Views

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

Способ подменить значение текстового поля field_myfield в представлении myview:

/**
 * Implements hook_views_pre_render().
 */
function hook_views_pre_render(&$view) {
  if ($view->name == 'myview') {
    foreach ($view->result as &$row) {
      $row->field_myfield[0]['rendered']['#markup'] = $row->field_myfield[0]['rendered']['#markup'] ? t('Yes') : t('No');
    }
  }
}

Если в представление будут добавлены два одинаковых поля, то значение поменяется у обоих.

CSSЦикл по ассоциативному массиву в LESS

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

Например на сайте есть несколько разделов (foo, bar, baz), каждый раздел имеет свой цвет фона (green, blue, red). Способ реализации с помощью цикла по ассоциативному массиву:

// Создаём ассоциативный массив
@body-bg-array:
  foo green,
  bar blue,
  baz red;
 
// Создаём функцию для обхода массива
.body-bg-generator(@iterator: 1) when (@iterator <= length(@body-bg-array)) {
  @item: extract(@body-bg-array, @iterator);
  @category: extract(@item, 1);
  @color: extract(@item, 2);
 
  body.category-@{category} {
    background: @color;
  }

DrupalСпособы реализации каталога с большим количеством атрибутов товара (теория)

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

Решил собрать в одном месте способы реализации каталога с большим количеством атрибутов товара (как на Яндекс.Маркете), их плюсы и минусы.