Drupal. Добавление региона для блоков

Чем больше разбираюсь с Drupal, тем больше он мне нравится своей гибкостью. На этот раз мне понадобилось добавить регион для отображения блоков. В базовом варианте доступны регионы "заголовок", "левая панель", "правая панель", "содержание" и "подвал". Мне понадобился регион для отображения его в теле поста (ноды). Регион "содержание" мне не подошел, потому что он выводит блок после поста и комментариев.

Как выяснилось, сделать новый регион очень просто. В этом мне помогла вот эта статья. Дальше интересно будет только друпалерам и интересующимся этой темой.

Все изменения делаются в шаблоне темы. В моем случае это стандартная тема garland. На ее примере я и опишу алгоритм действий.

Вначале нужно добавить определение региона в файле template.php. Для этого добавляем функцию MYTHEME_regions() или модифицируем ее, если она уже существует. MYTHEME в названии функции надо заменить на название используемой темы (garland). В моем случае функция выглядит следующим образом:

function garland_regions() {
  return array(
    'left' => t('left sidebar'),
    'right' => t('right sidebar'),
    'content' => t('content'),
    'header' => t('header'),
    'footer' => t('footer'),
    'inline1' => t('inline 1')
  );
}

inline1 здесь - это как раз определение нашего дополнительного региона.

Далее в том же файле template.php необходимо в функции _phptemplate_variables() добавить вывод нового региона. Функция приобретает такой вид:

function _phptemplate_variables($hook, $vars) {
 
  // ...
 
  // Load the node region only if we're not in a teaser view.
  if ($hook == 'node' && !$vars['teaser']) {
    // Load region content assigned via blocks.
    foreach (array('inline1') as $region) {
      $vars[$region] = theme('blocks', $region);
    }
    return $vars;
  }
 
  return array();
}

Здесь видно, что во втором условии добавляется вывод региона в случае показа ноды.

Теперь добавляем вывод региона в шаблоне ноды. Для этого модифицируем файл node.tpl.php, добавив в нужном месте код вывода нашего региона:

<div class="centerblock"><?php print $inline1?></div>

При выводе используется класс, который нужно описать в файле style.css. Описываем нужный нам стиль, например, так:

div.centerblock {
  float: left;
}

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

Drupal

В моем случае результат можно увидеть сразу в конце этой статьи - ссылка на RSS-канал и блок "полезные записи".

Комментарии

Re: Drupal. Добавление региона для блоков

webdevil аватар

Отличный материал, очень пригодился.

Думаю, вместо добавления условия if ($hook == 'node' && !$vars['teaser']) лучше указать в параметрах блоков, которые будут выводиться в этом регионе, нужные альясы. В данном случае: node/*

Re: Drupal. Добавление региона для блоков

SolarWind аватар

В принципе да, можно и так. Но тогда придется эти алиасы прописывать ручками для каждого блока. Когда блоков там немного, то это не проблема, конечно.

Вывод блока

Гость аватар

Возникла задача, нужно выводить блоки в определенном разделе. Т.е. нажал ссылку "раздел 1" вывелись блоки меню "блок 1, блок2...". А когда нажимаешь на ссылку в одном из этих блоков, то все они пропадают. Можно, конечно, в настройках блока прописывать все ноды для вывода, но это слишком долго и неудобно.
Подскажите, плз, как решить этот вопрос?

Re: Drupal. Добавление региона для блоков

Гость аватар

По поводу тем в 6-ом Друпале. Сейчас вот мучаюсь. Может кто-то поможет?
Создал свою тему, определил свой регион... Чтоб регион появился на странице нужно было подключить движок. После того как подключил движок отказалась работать таблица стилей style.css. В чём проблема, может кто-то сталкивался?

Re: Drupal. Добавление региона для блоков

Гость аватар

Хм... А у меня после добавления региона появляются проблемы (тема "andreas09"). При входе на сайт, после введения логина и пароля отображается пустая страница. Если обновить страницу, вход на сайт выполняется, но все блоки меняют своё расположение. В настройках блоков при выборе региона новый отображается...

После сохранения каких-либо изменений на странице настройки блоков также отображается пустая страница. Версия Drupal 5.10. Может кто сталкивался с такой проблемой?

Re: Drupal. Добавление региона для блоков

alina_j аватар

Полезная информация, хотя я больше присматриваюсь к wordpress, более распространен, но сервер грузит будь здоров =)

Re: Drupal. Добавление региона для блоков

Мак Сим аватар

Ох... в шестерке всё СОВСЕМ по другому.

С уважением, Мак Сим.
http://mak-sim.ru

Re: Drupal. Добавление региона для блоков

Мак Сим аватар

Вообще мне очень понравилось решение в шестерке. Прежде чем дописать это в статью проверь где нибудь. ты всё таки больше это понимаешь нежели я.

Итак в каждой теме для шестерки есть файл вида *.info
В нем в основном мета информация и в том числе описание регионов. причем в очень простом виде.
regions[left] = Left sidebar
regions[right] = Right sidebar
regions[content_top] = Content top
regions[content_bottom] = Content bottom
regions[header] = Header
regions[footer] = Footer

Дописываем в этом виде наши регионы. И вызываем их в нужном месте
<?php
print $имя региона;
?>

С уважением, Мак Сим.
http://mak-sim.ru

Re: Drupal. Добавление региона для блоков

SolarWind аватар

За инфу спасибо. Если возникнет необходимость, буду пробовать. А специально ставить шестерку, чтобы посмотреть, лениво. ;-)

Re: Drupal. Добавление региона для блоков

Мак Сим аватар

А есть ещё один очень важный момент. Чтобы увидеть новый блок надо почистить кэш в админке.

С уважением, Мак Сим.
http://mak-sim.ru

gf34a ewbu5 uj5

MurrayBlem аватар

denver colorado influx goalie Semyon Varlamov is able to travel with they plus prosecutors keep in mind whether he probably will be faced with assaulting or perhaps boyfriend / girlfriend.
Henrik Lundqvist undertaken 29 will save you during his 47th NHL shutout, and also also the houston ranger triumphed their precious second one-off and first acquainted with a 2 0 win the lowly zoysia grass Sabres on wed evenings.
RecapChara, Igin aboutla pick up Brufar mores other poultry shootout
Henrik Lundqvist decided 29 has saved in her 47th NHL shutout, and texas rangers got his / her second direct and first accustomed to a 2 0 win along the lowly zoysia grass Sabres on thursday night nights.
denver colorado influx goalkeeper Semyon Varlamov will travel with they and prosecutors check out whether he really should arrested for assaulting his -girlfriend.

Pingback

Добавление региона для блоков в Drupal 6.x | SolarWind Gate. аватар

[...] я написал заметку о добавлении региона для блоков в Drupal 5.x. А вчера мне [...]

Re: Drupal. Добавление региона для блоков

Таврия аватар

Спасибо! В который раз убеждаюсь, что друпал не такой и сложный, как кажется.

---
создание сайтов симферополь

Metoprolol Lopressor Toprol Xl

InsetteRams аватар

Asthma Inspire Study Oxycontin Fatigue Causes Tenormin Online Delivery Provigil With Strattera. Real Adipex Without Prescription Is A Prescription Of Xanax Glucophage Vs Metformin Immediate Methotrexate More For_patients Arthritis Rheum . Topographical Voltaren Gel Are Blood Pressure Machines Free . Perioperative Management Of Diabetes Complications Long Take Levaquin Discount Online No Prescription Buy Tramadol National Osteoporosis Foundation Nod Natural Skin Care For Wrinkles Combat Does Orlistat Reduce Hyperlipidemia Consolidation For Menstrual Migraines

Full Ginseng Buy

Elaineweve аватар

Gemfibrozil Online Consultation Mg Ddf Fade Gel 4 Skin Care . Fm Soma Carisoprodol As Low As Synthroid And Ed Tramadol 50 Mg Para Que Serve Zyrtec How Long To Work Allergy Medication Cheapest Diflucan Canada How Fast Does Phentermine Work Weight Loss Diabetes And Asian Women . Pictures Of The Pill Xanax Acetaminophen In Cardiovascular Disease Lortab Melting Point Antibiotic For Sale No Prescription. Long Term Side Effects Amoxicillin Remeron Website Depressive Disorder And Fatigue Taking Metformin Stop Smoking Clipart .

Hello, i think that i saw you

Johne297 аватар

Hello, i think that i saw you visited my site so i came to return the favor.I am trying to find things to enhance my web site!I suppose its ok to use some of your ideas!! kbefdbfaaeec

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу. Если у вас есть аккаунт в Gravatar, он будет использован для показа вашей аватарки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.