Drupal API

Вкладка Добавить в типах материалов

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

Люблю простые решения:

/**
 * Implementation of hook_menu().
 */

function mymodule_menu() {
// Вкладки Добавить в типах материалов.
// Получаем список типов
  $types = node_get_types();
// Перебираем его
  foreach($types as $type) {
// Формируем адрес страницы рядом с вкладками Управления и Отображения полей
    $items['admin/content/node-type/'. str_replace('_', '-', $type->type) .'/add'] = array(
// Заголовок с плейсхолдером для функции t()
      'title' => 'Add new @name',
// В параметры для t() добавляем имя типа
      'title arguments' => array('@name' => $type->name),
// Собственно, вкладка меню
      'type' => MENU_LOCAL_TASK,
// Вызываем системную функцию перенаправления на страницу
      'page callback' => 'drupal_goto',
// Формируем для drupal_goto() адрес страницы добавления материала
      'page arguments' => array('node/add/'. str_replace('_', '-', $type->type)),
// Права доступа на добавление контента этого типа
      'access arguments' => array('create '. $type->type .' content'),
// Размещаем вкладку после всех имеющихся
      'weight' => 20,
    );
  }
// PROFIT
  return $items;
}

Хитрости hook_menu()

В Drupal всегда радует возможность лаконично и просто разработать иногда очень серьезные вещи.

Пусть в вашем модуле требуется отобразить на отдельной странице некий объект хранящийся в базе данных, например, Gorilla. Идентификатор объекта передается в строке запроса. Модуль, соответственно тоже называется gorilla.
А теперь, 10 строк очень универсального кода в студию:

function gorilla_menu() {
  $items = array();
  $items['gorilla/%gorilla'] = array(
    'title' => 'Gorilla item',
    'page callback' => 'theme',
    'access arguments' => array('view gorilla'),
    'page arguments' => array('gorilla_view', 1),
  );
  return $items;
}

Произойдет тут следующее...

OpenLayers 2.x Documentation

The OpenLayers 2.x Documentation Book includes documentation of the module for end-users as well as the API provided for developers.

New users should take a look at Getting Started with OpenLayers to build their first map.

Please post bug reports, support requests, and feature  on the issue tracker instead of using the comment area in the documentation pages.

 

Документация по OpenLayers 2.x включает в себя, как справку для конечных пользователей, так и олписание API для разработчиков.

Начинающие пользователи могут сразу смотреть Быстрый старт с OpenLayers, чтобы сделать свою первую карту.

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

TAPIr - Dynamic Tables API

A baby tapir.A tapir is a funny animal that happens to be this project's mascot. TAPIr is an API developed for Drupal developers to allow the easy creation and configuration of dynamic tables. In fact, we've made it so dynamic, that even the name is flexible! It stands for Tables API, and you get to decide what the r means. Eye-wink (Our favorites include by Ryan, rocks, and renegades.)

Так случилось, что именно такое смешное животное, как тапир стало маскотом этого проекта. TAPIr - это интерфейс, предназначенный для разработки под Drupal и позволяющий создавать и конфигурировать динамические таблицы. Фактически, мы сделали его настолько динамическим, что даже его название изменяемо. Это сокращение от Tables API, но вам самим решать, что означает r на конце. Eye-wink Наиболее популярными расшифровками являются Ryan, rocks, и renegades.

The Tables API mimics the Forms API by building tables based on a Table ID. For now, the Table ID refers to the function used to build the table, though it's not impossible for TAPIr to define a hook like Drupal's hook_forms. The builder function operates on an $op variable to first build the fieldset and then grab the data for the rows for each field. The term fields refers to a column in the table. Fields will be configurable from a settings page for each table so the user can adjust the title of a column, its order in the table, and whether or not it should be shown when the table is rendered.

Программный вывод блоков в Drupal

Необходимость вывода блока в нештатном месте возникает в друпал не очень часто. Системных возможностей и настроек вывода блоков в регионы, а также нескольких модулей для работы с ними в теле нод хватает для подавляющего большинства случаев. Но иногда надо организовать и программный вывод одного или нескольких блоков там, где Макар телят ещё не гонял.

К моему удивлению в API Drupal отсутствует функция block_load(), которая бы позволяла получить нужный блок целиком без лишних телодвижений. Этому, видимо, есть какая-то причина (историческая или функциональная), но мне как-то лень копаться в предыстории вопроса. Поэтому принимаю как данность, что программно, произвольный блок можно получить только прямым вызовом хука hook_block().

Темизация вывода полей CCK

Утверждается, что в Drupal можно темизировать всё. Вернее то, что проходит обработку функциями темизации. А это практически все, что мы видим на сайте.

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

Устранение ошибок в модуле Imce CCK Image

Устранение ошибок в модуле Imce CCK Image (imceimage) посредством пользовательской темизации вывода поля.

Выводим десятичные величины как градусы, минуты и секунды дуги

Вывод значений числоых полей CCK в виде градусной меры посредством пользовательской темизации вывода поля.

Синдикация материалов