Як створити власні регіони в темі?


58

Я хочу додати нову область, яка буде розміщена на сайті. Опишіть процес включення цього нового регіону до моєї теми, по можливості узагальнюйте його для додавання будь-якої нової, власної області.


докладний блог: goo.gl/kD3TZu
Суреш Камруші

Відповіді:


68

Ви визначаєте регіони у вашому темі .info-файлу. Див.: Структура файлу .info

Потім потрібно помістити відповідні теги шаблонів у файл page.tpl.php.

Так, наприклад, якщо ви визначили регіон sidebarу своєму файлі .info, ви додали: <?php print render($page['sidebar']); ?>до відповідного місця на своїй сторінці.t.tl.php.


6
Якщо у вашій темі немає файлу page.tpl.php, ви можете скопіювати за замовчуванням системний модуль у свою тему та змінити її.
Mikey P

5
Omega не потребує page.tpl.php частини, просто оголосіть регіон у .info І ЧИСЛІ КАШИ.
Capi Etheriel

20

Ще один момент: Не пропустіть потрібні регіони!

regions[content] = Content
regions[help] = Help
regions[page_top] = Page top
regions[page_bottom] = Page bottom

Більше про це можна дізнатися на веб- сайті http://drupal.org/update/themes/6/7#closure .

Для уточнення цього питання: Якщо ви визначаєте власні регіони, вам потрібно визначити все, що ви використовуєте, включаючи необхідні. Іншими словами, ви не можете просто визначити додаткові регіони: якщо ви визначаєте будь-які, ви повинні визначити їх усі.


9

Створення регіону для теми Drupal 7 не відрізняється від створення регіону для Drupal 6; відмінності між Drupal 7 та попередніми версіями істотно:

  • Регіони не визначаються за допомогою mytheme_regions()функції, як це було зроблено в Drupal 5, але вони визначені на mytheme.info за допомогою regions[]директив, що також робиться з темами Drupal 6.
  • Регіони відображаються за допомогою функції Drupal render()замість друку вмісту змінної.

За замовчуванням регіони Drupal 7 є такими:

regions[header] = Header
regions[highlighted] = Highlighted
regions[help] = Help
regions[content] = Content
regions[sidebar_first] = Left sidebar
regions[sidebar_second] = Right sidebar
regions[footer] = Footer

Основні теми Drupal 7 тепер включають регіон з назвою "виділено", який використовує той же дисплей, що і область заявки місії в Drupal 6; вони також включають область з назвою "довідка", яка за замовчуванням містить той самий вміст $helpзмінної, що використовується Drupal 6.


4

Регіони тем визначені у вашому .info-файлі теми - див. Документи . Просто додайте рядок, regions[corner] = Cornerщоб отримати кутовий регіон.

Потім потрібно відредагувати файл page.tpl.php та додати місце, <php print render($corner); ?>де ви бажаєте відобразити регіон. Якщо ваша тема не має сторінки.tpl.php, скопіюйте її з базової теми або з системного модуля.

Поширені підводні камені:

  • Якщо у файлі topic.info не було оголошено областей, він використовував регіони Drupal за замовчуванням. Якщо ви хочете додати, вам доведеться повторно оголосити регіони за замовчуванням. Звичайно, ви можете видалити будь-який регіон, але будь ласка, підтримайте потрібні регіони. Перегляньте документи ще раз.

  • Зміни у файлі .info або додавання нових файлів до теми (наприклад, page.tpl.php) будуть помічені лише після очищення кеш-пам'яті.

  • Omega, дуже популярна базова тема, не потребуватиме змін у page.tpl.php, лише у файлі .info. Але вам доведеться відвідати налаштування теми в інтерфейсі та призначити свій регіон зоні.


Це завершення відповідей загальними підводними каменями.
Capi Etheriel

Є regions[content] = Contentєдиним необхідним регіоном у D7? drupal.org/node/171205#regions , здається, має на увазі, але потім drupal.org/node/171224 каже , що необхідні регіони content, help, page_topіpage_bottom
Джим Гаррісон

Я не знаю, чи Drupal перевіряє будь-який з регіонів, але contentце, безумовно, дуже важливо. helpпідтримується ядром (для виведення довідкових повідомлень), page_bottomможливо, там, де друкується нижній js, і, page_topздається, використовується для навігаційних панелей, таких як основна панель інструментів.
Capi Etheriel

2

Виконайте наведені нижче кроки, щоб створити власну область у своїй темі:

  1. Перейдіть у файл topic.info і додайте цей рядок.

    regions[machine_name_of_your_region] = Name of your region
  2. Хоча ви також можете викликати блоки регіонів у шаблоні вузла, зазвичай ви додасте область до шаблону сторінки теми. Зазвичай це page.tpl.php, або якщо у вас є власні файли шаблонів для різних сторінок, редагуйте і їх. Нова область з’явиться лише на сторінках, побудованих навколо шаблону, до якого ви додаєте новий регіон. Вставте його куди завгодно, щоб ваш новий регіон з’явився.

    <?php if ($page['machine_name_of_your_region']): ?>
      <div id="sidebar-first" class="column sidebar"><div class="section">
      <?php print render($page['machine_name_of_your_region']); ?>
      </div></div> <!-- /.section, /#sidebar-first -->
     <?php endif; ?>
    
  3. Конфігурація - Продуктивність - Очистити всі кеші


0

Створіть новий регіон у Темі

Вам просто потрібно визначити це у двох файлах.

  • Тема.info
  • Page.tpl.php

Тема.info

;;;;;;;;;;;;;;;;;;;;;
;; Regions
;;;;;;;;;;;;;;;;;;;;;

regions[navigation]      = 'Navigation'
regions[header]          = 'Top Bar'
regions[highlighted]     = 'Highlighted'
regions[new_region_name] = 'Region Name' ;; Add New Region

Page.tpl.php

Тепер візьміть цей регіон

  <?php if ($page['new_region']): ?>
      <div class="new_region_class">
        <?php print render($page['new_region']); ?>
     </div>
  <?php endif; ?>

Тепер очистіть увесь кеш. Ось у вас є новий регіон у вашій темі. Ви можете бачити це на сторінці налаштування блоку.

Для більш детального відвідування http://drupal.org/node/171205

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.