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

DrupalПрограммно вывести облако тегов

Опубликовано в
// Настройки
$vocabulary_vid = ID_СЛОВАРЯ;
$max_font_size = 40;
$min_font_size = 10;
 
// Получаем термины с количеством нод
$terms = db_query("
  SELECT tid, name, (
    SELECT COUNT(*) FROM {taxonomy_index} ti
    LEFT JOIN {node} n ON ti.nid = n.nid
    WHERE ti.tid = td.tid AND n.status = 1
  ) node_count FROM {taxonomy_term_data} td
  WHERE vid = :vid
  ORDER BY weight
", array(':vid' => $vocabulary_vid))->fetchAll();
 
// Находим термин с максимальным числом нод
$max_node_count = 0;
foreach ($terms as $term) {

РазноеНужно ли добавлять заголовок текущей страницы в хлебные крошки?

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

Практически все макеты сайтов попадающие мне на разработку содержат заголовок текущей страницы в хлебных крошках. Зачем? Понять сложно.

Решил провести микро исследование на эту тему — обошёл ТОП20 интернет магазинов России и вывел статистику:

DrupalИспользование в формах элемента <button type="submit">

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

Как уже писал ранее, в Form API доступны три вида кнопок:

<input type="submit" />
<input type="button" />
<input type="image" />

Если же в форме нужно использовать элемент <button type="submit">...</button>, то можно поступить так:

1. Определить шаблон button_button:

/**
 * Implements hook_theme().
 */
function THEMENAME_theme() {
  return array(
    'button_button' => array(
      'render element' => 'element',
    ),
  );
}
 
/**
 * Button theme function.

РазноеКак правильно писать ТЗ на создание сайта (видео)

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

Видео со школы вебмастеров от Яндекса:

начало лекции в 5:20

1. ТЗ: две буквы с большим потенциалом
2. Что нужно сделать, прежде чем садиться за ТЗ
3. Хорошее ТЗ
4. Кто должен писать ТЗ
5. Плохое ТЗ
6. Жизнь с ТЗ
7. ТЗ по ГОСТ: ад на Земле

DrupalДоступ к XML-RPC функциям только при наличии API Key

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

В ядре друпала нет механизма ограничения доступа к XML-RPC функциям. Все советуют использовать модули Services + Services API Key Authentication, но можно поступить проще:

define('MODULENAME_API_KEY', '...');
 
// Код для сервера
/**
 * Implements hook_xmlrpc().
 */
function modulename_xmlrpc() {
  if (isset($_GET['key']) && $_GET['key'] == MODULENAME_API_KEY) {
    return array(
      'modulename.functionName' => 'modulename_functionname',
    );
  }
}
 
// Код для клиента
$result = xmlrpc('http://example.com/xmlrpc.php?key=' . MODULENAME_API_KEY, array(

DrupalИзбавляемся от ошибки "Parse error. Not well formed" при получении большого числа данных в XML-RPC

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

В Drupal 7.31 ввели ограничение на число данных в ответе, полученном с помощью XML-RPC. Ограничение находится в системной переменной xmlrpc_message_maximum_tag_count и по умолчанию равно 30000. Это значит, что в ответе не может быть больше 30000 xml элементов, иначе функция xmlrpc() будет возвращать FALSE, а xmlrpc_error_msg() вернёт "Parse error. Not well formed".

Чтобы избавиться от ошибки, можно перед вызовом xmlrpc() выполнить:

$GLOBALS['conf']['xmlrpc_message_maximum_tag_count'] = 1000000;

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

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

На dru.io задали хороший вопрос — Как подменить значение раскрытого фильтра.

Ответ:

/**
 * Implements hook_form_FORM_ID_alter().
 */
function MODULENAME_form_views_exposed_form_alter(&$form, &$form_state) {
  if ($form_state['view']->name == 'myview' && $form_state['view']->current_display == 'page') {
    array_unshift($form['#submit'], 'MODULENAME_form_views_exposed_form_submit');
  }
}
 
/**
 * Custom submit for views exposed form.
 */
function MODULENAME_form_views_exposed_form_submit($form, &$form_state) {

DrupalВыводим заглушки для изображений на локальном компьютере

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

Если на локальной dev версии сайта нет пользовательских файлов, в том числе картинок, то бывает полезно вместо дырок выводить заглушки:

/**
 * Preprocess function for theme_image_style().
 */
function THEMENAME_preprocess_image_style(&$vars) {
  if ($_SERVER['HTTP_HOST'] == 'mysite.local') {
    $vars['path'] = 'public://default-image.jpg';
  }
}

Положить в public:// заглушку под именем default-image.jpg, сбросить кэш.

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();
 
  // Проверяем входят ли координаты адреса в область МКАДа