Предлагаем воспользоваться купоном - cvkyp05r1n1jrdwvefclqwkz6lwx28db - на 10% скидку при покупке GOLD-аккаунта DepositFiles с периодом действия 6 месяцев или 1 год. Купон действителен до 2010-10-19.
Огромный плюс CMS Drupal заключается в том, что в Интернете можно найти множество готовых «элементов» для данной системы управления содержимым. Вам нет необходимости разрабатывать собственные элементы — можно просто воспользоваться уже существующими. Не обошла эта тенденция и PHP-код для создания публикаций, блоков или определения видимости блоков — так называемых «сниппетов».
Например, готовые сниппеты можно найти на странице
http://drupal.org/handbook/customization/php-snippets. Достаточно просто выбрать на этой странице нужный код, после чего создать публикацию на основе найденного кода (либо сделать его частью своей публикации), не забыв выбрать формат ввода PHP code.
Сниппеты — это идеальный учитель, который поможет вам понять, как именно создаются публикации на основе формата ввода PHP code, и научит вас с легкостью создавать свои собственные подобные элементы. Поэтому сейчас возьмем
несколько уроков у этого учителя.
Отображение блока на странице. Отдельно от остальных стоят сниппеты, предназначенные для определения, будет ли блок отображаться на странице. Напомним, что их необходимо вводить на странице настройки блока в поле Страницы после установки переключателя Показывать блок на определенных страницах в положение Показать, если данный PHP-код возвращает TRUE (PHP-режим, только для экспертов). Чтобы отобразить страницу настройки блока,
перейдите к разделу Управление\Конструкция сайта\Блоки, после чего воспользуйтесь ссылкой настроить, расположенной напротив нужного блока.
Показывать блок только на странице собственного профиля пользователя:
<?php global $user; if (arg(0) == 'user' && $user->uid == arg(1)) return TRUE; return FALSE; ?>
Отображать блок только на страницах профилей пользователей:
<?php global $user; if (arg(0) ==
'user') return TRUE; return FALSE; ?>
Показывать блок только для зарегистрированных пользователей:
<?php global $user; return (bool) $user->uid; ?>
Выводить блок только администратору:
<?php global $user; if (is_array($user->roles) && in_array('admin', $user->roles)) { return TRUE; } else return FALSE; ?>
Не показывать блок при просмотре и редактировании топика:
<?php if (arg(0) == 'node' && arg(1)){ $result= db_fetch_object(db_query("SELECT n.type FROM {node} AS n WHERE n.nid=%d LIMIT 1", arg(1))); return ($result->type != 'forum'); } ?>
Содержимое блока. Также стандартными переменными CMS Drupal можно пользоваться и в тексте блока. Для этого установите переключатель области Формат ввода в положение PHP code, после чего вводите PHP-код.
Отображать разное содержимое блока для разных пользователей:
<?php global $user;
if (isset($user->uid)) { if ($user->uid == 1){ echo 'Это будет отображаться для Администратора'; }else{ echo
'Это будет отображаться для зарегистрированных пользователей'; } }else{ echo 'Это будет отображаться для анонимных пользователей'; }
Также не забывайте, что вы можете пользоваться значением стандартных переменных CMS Drupal. Но перед этим необходимо «подключить» их для блока. То есть, воспользоваться строкой global объект. Например: