Перейти к содержимому
Русский язык для Invision Community 5

Скрытие категорий в зависимости от выбранного языка

Уважаемые знатоки!

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

<script type='text/javascript'>
(function() {
   var hidden  = [1,2]; // Закрытые по умолчанию категории
   var cookie  = ipb.Cookie.get('toggleCats') || '';
   var cookies = cookie.split(',');

   hidden.each(function(id){
       if (cookies.indexOf(id) == -1) {
           cookie += ',' + id;
       }
   });

   cookie = "," + cookie.split(',').uniq().join(',') + ",";

   ipb.Cookie.set('toggleCats', cookie, 1);
})();
</script>

 

Соответственно что бы при выборе к примеру английского языка он скрывал категории 1,2,3 и открывал категории 4,5,6, а при выбранном Русском языке скрывал 4,5,6 и открывал 1,2,3.

Изменено пользователем fdeadalf

Рекомендованные сообщения

var lang = parseInt({$this->memberData['language']});

а дальше уже дело техники. Используя переменную lang определяете какие категории вам нужно закрыть или открыть.

  • Автор

Могли бы написать готовый пример?

Изменено пользователем fdeadalf

  • Автор

Какой функцией обновлять Coockies? То есть каким образом обновить/удалить уже существующую куку toggleCats?

Какой функцией обновлять Coockies?

Выше в скрипте можно увидеть, особо даже не разбираясь в js-е. Хотя если вы сами не догадались это сделать, врядли имя функции вам что-то даст - ipb.Cookie.set

  • Автор

Вот что у меня получилось!

 

<script type='text/javascript'>
(function() {
   var hidden_en  = [1]
   var hidden_ru  = [2,3,4]
   var cookie  = ipb.Cookie.get('toggleCats') || '';
   var cookies = cookie.split(',');
   var lang = parseInt({$this->memberData['language']});

   if(lang == 1)
   {
   hidden_en.each(function(id){
       if (cookies.indexOf(id) == -1) {
           cookie += ',' + id;
       }
   });

   cookie = "," + cookie.split(',').uniq().join(',') + ",";
   ipb.Cookie.set('toggleCats', cookie, 1);
   } 
   if(lang == 2)
   {
   hidden_ru.each(function(id){
       if (cookies.indexOf(id) == -1) {
           cookie += ',' + id;
       }
   });

   cookie = "," + cookie.split(',').uniq().join(',') + ",";
   ipb.Cookie.set('toggleCats', cookie, 1);
   } 


})();

</script>

 

Но при выборе языка приходится удалить куку вручную, чтобы скрылись старые категории и открылись новые, происходит как бы эффект наложения куков. Как изменить скрипт что бы при каждом выборе языка он перезаписывал куку?

  • Автор

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

 

P.S. Я понял, что ipb.Cookie.set только вот как и где её применить в коде так что бы она заменяла предыдущие значения в куках?

Изменено пользователем fdeadalf

  • Автор

Все, сделал сам. Спасибо.

Изменено пользователем fdeadalf

  • 3 недели спустя...

Все, сделал сам. Спасибо.

 

Как делал ? может поделитесь ?!) меня тоже нужен точно такое

Выдно форумчани после нового года отдыхают ))

Все, сделал сам. Спасибо.

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

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.