Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

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

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

<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 недели спустя...
Опубликовано:

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

 

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

Опубликовано:

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

Опубликовано:

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

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

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

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.