Вы здесь

Выбор языка в выпадающем меню с флажками?

0

Пример без флажков: https://www.dynadot.com/
Много раз видел с флажками, но не смог найти для примера.
Есть модуль Language icons, я сделал флажки без названий языков. Надо теперь чтобы эти флажки были не все подряд а в выпадающем меню с стрелкой вниз - кнопкой выбора. Есть ли готовый модуль на друпал?

Версия Drupal: 
7.x
Категория: 
MultilingualTheming
Вопрос задан 29.04.2015 - 16:07

Добавлено: как вы посоветовали http://labs.abeautifulsite.net/jquery-dropdown/
Я делаю модуль add_id_to_language_icons_block:

function add_id_to_language_icons_block_preprocess_block(&$variables) {
  if ($variables['block']->module == 'locale' && $variables['block']->delta == 'language') {
    dpm($variables['content']);
    $variables['block_html_id'] = drupal_html_id('jq-dropdown-1');
    $variables['classes_array'][] = drupal_html_class('jq-dropdown jq-dropdown-tip');
    $variables['content'] = preg_replace('/language-switcher-locale-url/', 'jq-dropdown-panel', $variables['content']);
    $variables['content'] .= '<a href="#" data-jq-dropdown="#jq-dropdown-1">dropdown</a>';
  }
}

кнопки языков не скрываются, добавляется кнопка dropdown. пишет ошибку:
Uncaught TypeError: $(...).on is not a function(anonymous function) @ jquery.dropdown.js:131(anonymous function) @ jquery.dropdown.js

в html.tpl.php подгрузка скриптов в области head.
JS я подключил в блоке:
drupal_add_js('sites/all/libraries/jquery-dropdown/jquery.dropdown.js', 'file');

но не знаю где что не так.

Комментарий оставлен 29.04.2015 - 20:03

со вторым примером http://dev7studios.com/dropit/ тоже ничего не получается.
я добавил вниз блок с html:

<script type="text/javascript" src="/sites/all/libraries/dropit/dropit.js"></script>
<script type="text/javascript>
$(document).ready(function() {
$('.languagesdrop').dropit();
});
</script>

исправил свой модуль, который добавляет нужны хтмл к блоку языков:

function add_id_to_language_icons_block_preprocess_block(&$variables) {
  if ($variables['block']->module == 'locale' && $variables['block']->delta == 'language') {
    dpm($variables['content']);
    $variables['content'] = '<ul class="languagesdrop"><li><a href="#">Dropdown</a>'.
                             $variables['content'].
                             '</li></ul>';
  }
}

флаги видны, дропдавн ниче не делает, хотя ошибок нету

Комментарий оставлен 29.04.2015 - 20:43

кстати вот как это все не рабоатет: tlito.ru/

Комментарий оставлен 29.04.2015 - 21:19

Ответы

1

Когда я последний раз такую задачу я затемил блок выбора языка.
Попробуй для того чтобы разобраться сделать так.

function THEMENAME_links__locale_block(&$vars) {
  dpm($vars);
  // Меняем html код ссылок смены языка.
  // Пока ведем разработку, за ренден отвечает theme_links().
  return theme_links($vars);
}

Если html код у тебя получается, такой, который тебе нужен, а проблема во фронтеде, то найди рабочий пример в сети, и скопируй оттуда JS и html код, и пробуй.

Если всё равно остаються вопросы посмотри код модулей

Ответ дан 04.05.2015 - 21:46

спасибо https://www.drupal.org/project/lang_dropdown этот модуль мне помог.
1. я установил модуль, 2. появился блок Language switcher dropdown (Текст пользовательского интерфейса)
3. в настройках этого блока был выбор библиотеки для дропдавна. мне понравилась легковесная ddslick которую 4. я добавил в папку libraries скачав с предложенного в настройках блока ссылки. 5. также эта библиотека потребовала версии jquery 1.7.2. что я сделал модулем jquery_update установив 1.8 на внешнем сайте и оставив 1.7 на внутреннем, так как скедитор у меня не работает с Jqeery ваше 1.7
6. и теперь работает языковой дропдавн tlito . ru спасибо

Комментарий оставлен 05.05.2015 - 00:27