Познаем Drupal вместе. Drupal создать страницу


Программное создание страницы в Drupal 7 >Познаем Drupal вместе

Наконец то продолжу рассказ про хуки. Что главное в любом сайте? Конечно же контент! А где контент находится? На страничках! Вот о создании страниц и поговорим.

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

Для программного создания страницы нам прежде всего понадобится создать пустой модуль, после чего весь код будет писаться в файле modulename.module.

hook_menu()

Именно с помощью этого хука можно создать страничку в Drupal 7. Кроме того он же отвечает за элементы меню. Хук не принимает никаких аргументов, а возвращает ассоциативный массив элементов меню, каждый элемент такого массива содержит массив с атрибутами конкретного элемента меню, они могут быть следующими:

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

Реализация хука, создание страницы

С хуком немного разобрались, теперь можно его реализовать. Для этого в файле modulename.module, в простейшем случае, пишем следующий код:

/** * Implements hook_menu(). */function modulename_menu() {    $items['mytestpage'] = array(        'title' => 'My test page',        'access callback' => TRUE,        'page callback' => 'mymodule_page_callback',        'type' => MENU_CALLBACK,    );}

Такая реализация хука значит следующее - по адресу site.ru/mytestpage (или site.ru/?q=mytestpage) будет отображаться страничка с заголовком 'My test page', доступная для всех. Элемента меню для неё заданно не будет, а содержимое новой страницы возвращает функция mymodule_page_callback(). Теперь необходимо написать саму функцию обратного вызова, например так:

/*** Page callback.**/function mymodule_page_callback() {    return t('Hello! I\'m your first page!');}

Теперь если зайти по адресу site.ru/mytestpage (если включены "чистые ссылки", если нет, то заходим по адресу site.ru/?q=mytestpage) , то можно увидеть страничку с надписью "Hello! I'm your first page!". Элементарная страничка создана.

В функцию обратного вызова можно передавать параметры. Все следующие за указанным в хуке адресом параметры автоматически будут переданы в функцию обратного вызова. И если, например, изменить callback функцию так:

/*** Page callback.**/function mymodule_page_callback($arg = 'Hello') {    return t('@arg! I\'m your first page!',            array('@arg' => $arg));}

То зайдя на сайт по ссылке site.ru/mytestpage/yo, на странице появится "yo! I'm your first page!". Кроме того, массив аргументов можно передать в хуке, элементу page arguments и использовать таким же образом.

Это далеко не все возможности hook_menu() - с его помощью можно установить контроль доступа к странице, управлять ссылками меню, создавать страницы с динамическими адресами (например как node/1, node/2 и т.д.), но обо всем этом в следующий раз. А на сегодня всё, успехов и до скорых встреч!

t-mail.spb.ru

Друпал как CMS. Создание страниц и меню

Я уже писал в прошлом уроке, что Друпал - это две связанных части CMS и CMF. В этом уроке мы рассмотрим как создаются простейшие сайты с помощью CMS Drupal.

Начну с того на какие части обычно разбивается сайт:

Header (верхняя, головная часть), это заголовок сайта, верхний блок. Здесь обычно размещается логотип и название сайта, контактная информация, имя пользователя или что-либо еще.

Header сайта на друпал.png

Left sidebar (Левая колонка сайта) и Right sidebar (Правая колонка сайта). Эти части сайта обычно используются для размещения меню, полей авторизации, новостей, информации о пользователе или любой другой текущей информации.

Sidebar сайта на друпал.png

Content (Содержимое сайта, центральный блок с контентом). Эта часть основная, сюда выводится вся главная информация сайта: статьи, подробные описания новостей, списки информации и все остальное, что нужно разместить на сайте.

content сайта на друпал.png

Footer (подвал, нижняя часть сайта). В этой части располагаются обычно копирайты и данные о создателя сайта, а также здесь может дублироваться полностью или частично основное меню.

Весь материал который мы будем размещать появляется в блоке сайта content, ссылки на размещаемый материал мы будем выкладывать в меню в левый sidebar. Создадим наш первый материал, тип материала выберем Page:

сайт на друпал создание материала.png

Вообще Page и Story не сильно отличаются, у них есть Заголовок (Title), содержание (Body) и другие схожие поля. Разница между Page  и Story в том что Page  нельзя комментировать, а Story можно.

Заполним поля Title и Body, а также раскроем поле меню и заполним его, родительским пунктом выберем Navigation. Нажимаем "сохранить" и наша новая страница создана.

Теперь ссылка на на страницу  "О Сайте Друпал" появилась в меню слева. Это меню и есть Navigation. Если вы посмотрите в адресную строку, то наша новая страница имеет адрес имя_сайта/node/1. Давайте сделаем эту страницу главной на сайте. Для этого зайдем в Настройка сайта-О сайте и сделаем главную страницу с адресом node/1.

сайт на друпал создание материала главная страница по умолчанию.png

Теперь страница с адресом node/1 наша главная страница сайта. Давайте теперь добавим еще страниц на сайт и выберем ссылки на них в другом меню.

Заходим в Содержание-Создание материала-Page

Теперь вместо Navigation выберем Родительский пункт Primary links:

сайт на друпал создание материала страница Primary links.png

Теперь в header'е появилось меню Primary links, с пунктом Страница 2:

сайт на друпал создание материала Primary links.png

Создадим еще одну страницу и в настройках меню выберем родительский пункт Secondary links и у нас появится еще одно меню под Primary links.

сайт на друпал создание материала Secondary links.png

Таким образом мы наполняем сайт материалами. Если Вам необходимо удалить пункт меню или добавить новый, поменять местами существующие пункты, то это можно сделать в настройках меню: Конструкция сайта-Меню-Список меню. Редактировать материал можно через Содержание-Содержимое-Список

В следующей статье мы рассмотрим как менять внешний вид нашего сайта.

drupalbook.ru

Использование hook_menu() для создания страниц в Drupal 7

hook_menu() используется для программного создания страниц и ссылок меню.

Разберем пример на основе модуля Menu example (машинное имя me) в котором мы создадим тестовую страницу для демонстрации работы с hook_menu().

Первым делом создадим файл cm.info:

name = Menu example description = Examples of using hook_menu() core = 7.x package = Custom

Далее создадим файл cm.module и объявим в нем hook_menu():

/** * Implements hook_menu(). */ function me_menu() {   $items['simple_page'] = array( 'title' => 'Simple page', 'page callback' => 'me_simple_page_content', 'access callback' => TRUE, 'menu_name' => 'main-menu', 'file' => 'me.pages.inc', 'options' => array('attributes' => array('class' => array('test-class'))), );   return $items; }

Разберем вышеприведенный код. В нем мы создаем массив $items в котором каждый ключ соответствует пути создаваемой страницы (в нашем случаем мы создаем страницу путь которой simple_page).

Каждой объявленной странице мы передаем некоторый набор настроек. Рассмотрим представленные в этом примере:

Теперь создадим файл me.pages.inc и объявим в нем функцию me_simple_page_content:

/** * Simple page content. */ function me_simple_page_content() { return 'Content of simple page'; }

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

Включаем модуль:

Включение модуля Menu example

Видим что в главном меню появилась новая страница Simple page

Отображение страницы Simpe page

Теперь рассмотрим как создать табы для страницы Simple page. Для этого добавим в hook_menu() еще два элемента:

$items['simple_page/main-tab'] = array( 'title' => 'Simple page (main tab)', 'page callback' => 'me_simple_page_content', 'access callback' => TRUE, 'menu_name' => 'main-menu', 'file' => 'me.pages.inc', 'type' => MENU_DEFAULT_LOCAL_TASK, );   $items['simple_page/sub-tab'] = array( 'title' => 'Simple page (sub tab)', 'page callback' => 'me_simple_page_content', 'access callback' => TRUE, 'menu_name' => 'main-menu', 'file' => 'me.pages.inc', 'type' => MENU_LOCAL_TASK, );

Тут надо обратить внимание на свойство type оно может иметь следующие значения:

При создании табов один из них всегда должен иметь тип MENU_DEFAULT_LOCAL_TASK (таб по умолчанию), а остальные MENU_LOCAL_TASK. Также они должны иметь одинаковый базовый путь (в нашем случае это simpe_page).

Чистим кэш и смотрим как изменилась наша страница:

Отображение табов на странице Simple page

Теперь создадим страницу локального действия, для этого добавим еще один элемент в hook_menu():

$items['simple_page/sub-tab2'] = array( 'title' => 'Simple page (local action)', 'page callback' => 'me_simple_page_content', 'access callback' => TRUE, 'menu_name' => 'main-menu', 'file' => 'me.pages.inc', 'type' => MENU_LOCAL_ACTION, );

Чистим кэш и смотрим на результат:

Отображение ссылки локального действия

Напоследок рассмотрим список остальных настроек для страниц:

drupal-learning.com


Prostoy-Site | Все права защищены © 2018 | Карта сайта