Уважаемые друпаловцы!
Нужно что бы в мультиязычном сайте для каждого языка отображалась отдельная шапка. Т.е. например, для русскоязычного сайта одна шапка, а для английского отдельная.
Вот кусочек кода из page.tpl.php
<?php<div>
<?php print $header2; ?></div></td>
</tr>?>
В Друпале я относительно новичок, потому и возникают такие вопросы. Поискал по форому, ничего подходящего не нашел.
Комментарии
Есть такой глобальный объект $language с помощью которого вы и сможете определить текущий язык в нужном файле шаблона.
<?php
global $language;
var_dump($language);
?>
Думаю, дальше все понятно.
Все понятно, кроме того - а зачем?
Tutmanov Нужно сделать разные блоки для разных языков, которые поместите в регион header2 (в настройках блока вы можете их привязывать к языкам)
to Oleksa@drupal.org
То, что вы написали, больше подходит к выражению "more drupal way"
Обычно, если шапок несколько, их выносят в простые файлы, которые находятся в дириктории темы, и затем включаются в общий шаблон, а не пихают через интерфейс друпала в блоки.
Подход, который вы описали, значительно менее гибкий.
Хорошо вы пропишите в page.tpl.php
if то-то, то include то-то (например 3 языка)
потом создадите 3 отдельных файла для шапок,
в которых опять же будут те же регионы для блоков (
<?php print $header2; ?></div>
) и вы будете делать, то что предложил я
Опять вы с блоками...
Хотите наглядный пример, который не использует никаких блоков и решает поставленную задачу?
Для начала пишем две разные шапки, пусть это будет header1.tpl.php и header2.tpl.php
С содержанием:
My custom header 1...
</div>
My custom header 2...
</div>
Соответственно.
Еще, у нас есть page.tpl.php c содержанием что то типа:
<div id="header">
<?php
global $language;
$lang = $language->language;
if($lang == ru) {
include 'header1.tpl.php';
} elseif($lang == en) {
include 'header2.tpl.php';
}
?>
</div>
...
Еще раз повторю, делать все это через блоки не разумно, будь это шапка или другое оформленное меню.
Реализовал этим способом. Пока никаких проблем не вижу, работает отлично. Спасибо!
Все индивидуально и зависит от задачи - я бы все делал через блоки, а ваш код использовал только если нужны например разные стили для бекграунда:
<?php
global $language;
$lang = $language->language;
if($lang == ru) {
print '<div id="one">';
} elseif($lang == en) {
print '<div id="two">';
}
?>
</div>?>
Я бы делал так:
В template.php в phptemplate_preprocess_page(&$vars) (или для вашей темы vashatheme_)написал:
$lang=='ru'? $header='tak' : $header='inatche'; //Если два языка. Можете if развернуть, можете вставить case
$vars['header_lang']=$header;
Теперь в page.tpl.php в хидере вставляем:
<?php print $header_lang; ?>
И никаких блоков и глобальных переменных
Можно по подробнее, пожалуйста.
Наверно тут опечатка?
Да, конечно Рука дрогнула.
Да я в общем-то, как мне кажется, достаточно подробно написал (только опечатку надо исправить). Ну там
<?php print $header_lang; ?>
в<div id='chto-to'>
для красоты можно обернуть. А логику свою поставьте, я же не знаю, что вы в хидер хотите вставить.А как сделать, что бы была к примеру основная шапка, на спец странице другая, и на форуме третья?
а если картинка в хедере вставляется через цсс?