Выплыл на .org вопрос "language switcher in a row" (http://drupal.org/node/136974) и я подумал, а не записать ли мое решение в блог, а то забуду
1. Идем в phptemplate.engine, находим там функцию phptemplate_page($content) и добавляем в массив $variables свою переменную:
'lang_switcher' => theme_i18n_language_switcher() - здесь мы собственно заявляем, что значением $lang_switcher будет результат функции theme_i18n_language_switcher(), но ее еще нет, поэтому:
2. Идем в i18n.module и пишем нашу функцию:.
return theme(/*'item_list'*/'links', i18n_get_links($_GET['q'])," ");
}
Я также поправил theme_i18n_language_icon т.к. глупо показывать ссылку, если язык является текущим, кроме того у меня по две картинки на язык (en_a.gif английский язык текущий - ссылка не активна) и вторая картинка для активной ссылки (en.gif - ссылка на английский активна ).
function theme_i18n_language_icon($lang){
if ($path = variable_get('i18n_icon_path', drupal_get_path('module', 'i18n').'/flags/*.png')) {
$languages = i18n_supported_languages();
//patch begin --
$current_lang = i18n_get_lang();
if ($lang==$current_lang) $src = base_path().str_replace('*', $lang."_a", $path);
else $src = base_path().str_replace('*', $lang, $path);
// $src = base_path().str_replace('*', $lang, $path);
// -- patch end
list($width, $height) = explode('x', variable_get('i18n_icon_size', '16x12'));
$attribs = array('class' => 'i18n-icon', 'width' => $width, 'height' => $height, 'alt' => $languages[$lang]);
return "<img src=\"$src\" ".drupal_attributes($attribs)." />";
}
}
3. Последний шаг - идем в page.tpl.php и помещаем в нужное место
Вот собственно и все. (ссылку на сайт дам позже - переезжаем.)
Комментарии
вот только зачем лазить в модуль - не лучше ли писать это в template.php...
Да, несомненно, теперь я с этим соглашусь, а когда выпадет минутка, подумаю как это реализовать...
Этот вариант был сделан на второй неделе знакомства с Друпалом... Заказчики всегда так нетерпеливы...
Drupal - rulez!!! (Ну и думать, тоже очень хорошо!)
Взял все поправленные мной функции, тупо перекопировал в template.php, переназвал (моя тема называется logic) logic_i18n_link, logic_i18n_language_switcher(), logic_i18n_language_icon , logic_page()...
Вернул модуль i18n, phptemplate.engine в исходное состояние... и все заработало!!!
Кому интересно - файл прилагается, а посмотреть www.logic.ru