Переключатель языков в одну линию

Главные вкладки

Аватар пользователя blackvl@drupal.org blackvl@drupal.org 17 апреля 2007 в 17:21

Выплыл на .org вопрос "language switcher in a row" (http://drupal.org/node/136974) и я подумал, а не записать ли мое решение в блог, а то забуду Smile

1. Идем в phptemplate.engine, находим там функцию phptemplate_page($content) и добавляем в массив $variables свою переменную:
'lang_switcher' => theme_i18n_language_switcher() - здесь мы собственно заявляем, что значением $lang_switcher будет результат функции theme_i18n_language_switcher(), но ее еще нет, поэтому:
2. Идем в i18n.module и пишем нашу функцию:.

function theme_i18n_language_switcher(){
  return theme(/*'item_list'*/'links', i18n_get_links($_GET['q'])," ");
}

Я также поправил theme_i18n_language_icon т.к. глупо показывать ссылку, если язык является текущим, кроме того у меня по две картинки на язык (en_a.gif английский язык текущий - ссылка не активна) и вторая картинка для активной ссылки (en.gif - ссылка на английский активна ).

// patched by blackvl@gmail.com for 2 flags per language (active or not)
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 и помещаем в нужное место

<?php
echo $lang_switcher;
?>

Вот собственно и все. (ссылку на сайт дам позже - переезжаем.)

Комментарии

Аватар пользователя blackvl@drupal.org blackvl@drupal.org 18 апреля 2007 в 22:19

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

Аватар пользователя blackvl@drupal.org blackvl@drupal.org 21 апреля 2007 в 20:27

Drupal - rulez!!! (Ну и думать, тоже очень хорошо!)
Взял все поправленные мной функции, тупо перекопировал в template.php, переназвал (моя тема называется logic) logic_i18n_link, logic_i18n_language_switcher(), logic_i18n_language_icon , logic_page()...
Вернул модуль i18n, phptemplate.engine в исходное состояние... и все заработало!!!
Кому интересно - файл прилагается, а посмотреть www.logic.ru

Аватар пользователя ryvstar ryvstar 6 октября 2008 в 11:35

<a href="mailto:blackvl@drupal.org">blackvl@drupal.org</a> wrote:
Drupal - rulez!!! (Ну и думать, тоже очень хорошо!)
Взял все поправленные мной функции, тупо перекопировал в template.php, переназвал (моя тема называется logic) logic_i18n_link, logic_i18n_language_switcher(), logic_i18n_language_icon , logic_page()...
Вернул модуль i18n, phptemplate.engine в исходное состояние... и все заработало!!!
Кому интересно - файл прилагается, а посмотреть www.logic.ru[/quote]

А где же найти этот Ваш преложенный файл?