Сниппеты

Небольшой код, который облегчает жизнь

Заменить ссылку модуля flag на изображение

1. Скопировать файл flag.tpl.php в каталог с темой

2. В template.php добавить функцию:

<?php
function phptemplate_preprocess_flag(&$vars) {
  $image_file = path_to_theme() . '/images/flag-' . $vars['flag']->name . '-' . ($vars['action'] == 'flag' ? 'off' : 'on') . '.png';
// Раскомментировать при тестировании
// drupal_set_message("Поиск изображения '$image_file'...");
    $vars['link_text'] = '';
}?>

Создание своих переменных для темы

Рассмотрим создание своих переменных для собственной темы на примере с логином. Для чего нужно создание своих переменных? Для того чтобы на захламлять ваш page.tpl.php, вся логика должна храниться в файле template.php.

добавляем в template.php

function phptemplate_preprocess_page(&$variables) {



global $user;

if($user->uid == 0) {

read more

Данные из профиля в CCK поле

Сегодня я коротко расскажу вам как при помощи Default value и PHP кода выводить данные из поля профиля в поле CCK. Зачем это нужно? Например, сайт - доска объявлений с регистрацией, при регистрации пользователь вводит в поле ФИО - свое ФИО, а затем при создании типа материала "Объявления" в ССК поле ФИО вам придется снова вводить свое ф.и.о. Вот default value нужен для того, чтобы избежать повторного ввода данных.

Вставляем данный код в Default value вашего CCK поля:

Загружать дефолтовые CSS стили только админу

Drupal грузит свои стили всегда, даже если они не нужны, я добавляю этот код в template.php и стили грузятся только для меня.

Image Manager своя директория для каждого пользователя

http://dustweb.ru/log/projects/tinymce_images/

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

Будем исправлять.

Вот как сделал я, изменив файл настроек плагина config.php.

Page.tpl.php для каждого типа материала

В файл template.php поместите следующий код:

function phptemplate_preprocess_page(&$variables) {
if  ($node = menu_get_object()) {
    $variables['node'] = $node;
    $suggestions = array();
    $template_filename = 'page';
    $template_filename = $template_filename . '-' . $variables['node']->type;
    $suggestions[] = $template_filename;
    $variables['template_files'] = $suggestions;
   }
}

Программно создать словарь таксономии

Для сохранения словаря таксономии используется функция taxonomy_save_vocabulary($vocabullary).

<?php
$vocabulary = array(
  'name'  => t("Словарь"). //Название словаря таксономии
  'multiple' => 0, //1 - для тэгов
  'required' => 0, //1 обязательный выбор
  'hierarchy' => 0,
  'relations' => 0, //1 - Множественный выбор
  'module' => 'мой модуль', //имя модуля
  'node' => array('тип материала' => 1), //привязка к типу ноды
  'weight' => -9, //сортировка на странице со списком словарей
);

taxonomy_save_vocabulary($vocabulary); //сохраняем
?>

Как вывести количество материалов определённого типа?

<?php
$type = 'blog';
print db_result(db_query('SELECT count(*) FROM {node} WHERE type = \'%s\' AND status = 1', $type ));
?>

Блок рекламы после N-ой ноды

Задача - в блоге вывести блок рекламы после 1 и 4 записи.

Было найдено простое решение: вставляем код приведенный ниже в шаблон node.tpl.php

<?php if ( !$page && ($id == 1 || $id == 4)) : ?>
[Здесь ваш текст рекламы]
<?php endif; ?>

Теперь блок рекламы будет показан при условии, что это не полная версия ноды, и порядковый номер ноды на странице равен 1 и 4.

читать далее

Использование хука updateN() для отключения dev модулей на продакшн сервере.

Это перевод статьи http://thedrupalblog.com/creating-module-update-function-disable-your-de...

Существует много классных модулей, облегчающих разработку под Друпал, таких как Devel, Coder, Reroute_Email, Demo и т.д., но скорее всего, в готовом проекте они во включенном состоянии нам не особо нужны.

RSS-материал