Перейти к публикации
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.

Настройка меню навигации сайта (верхнее меню)

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

Обычное вложенное меню имеет класс ipsNavBar_active, если активно (кликнуто пользователем).

 

<li {{if $active}}class='[b]ipsNavBar_active[/b]' data-active{{endif}} id='elNavSecondary_{$item->id}' data-role="navBarItem" data-navApp="{expression="mb_substr( get_class( $item ), 4, mb_strpos( get_class( $item ), '\\', 4 ) - 4 )"}" data-navExt="{expression="mb_substr( get_class( $item ), mb_strrpos( get_class( $item ), '\\' ) + 1 )"}">

 

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

 

Примеры:

 

Добавляется:

 

<li class="ipsNavBar_active" data-active="" id="elNavSecondary_57" data-role="navBarItem" data-navapp="musicbox" data-navext="Musicbox">

 

Не добавляется:

 

<li id="elNavSecondary_69" data-role="navBarItem" data-navapp="core" data-navext="CustomItem">

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

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

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

Я не понимаю. forum_id - это переменная которую нужно заполнить или этот запрос выводит ид форума в котором я нахожусь?

Опубликовано:
$active = (!\IPS\core\FrontNavigation::$clubTabActive and \IPS\Dispatcher::i()->application->directory === 'forums');

if ($active and \IPS\Request::i()->module == 'forums')
{
$fid = 0;

if (\IPS\Request::i()->controller == 'forums')
{
	$fid = \IPS\Request::i()->id;
}
elseif (\IPS\Request::i()->controller == 'topic')
{
	$fid = \IPS\forums\Topic::load(\IPS\Request::i()->id)->forum_id;
}

if (in_array($fid, array(2,3,10)))
{
	return false;
}
}

return $active;

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

Так, мне надо чтобы пункт в темах вот этого форума был так же выделен во второй вкладке.

 

https://mercury-global.cash/forums/forum/2-merkuriy-global/

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

Так

\applications\core\extensions\core\FrontNavigation\CustomItem.php

 

Добавить

    /**
    * Is Active?
    *
    * @return  bool
    */
   public function active()
   {
       return (string) $this->link() === (string) \IPS\Request::i()->url();
   }

Если у Вас ссылка в меню https://mercury-global.cash/forums/forum/2-merkuriy-global/, то на странице форума \IPS\Request::i()->url() будет аналогичной, а на странице темы https://mercury-global.cash/forums/topic/2-merkuriy-global-izmenil-vashu-zhizn/, что не равно.

 

Проверяйте локацию, составляйте условие.

  • 4 недели спустя...
Опубликовано:

	/**
    * Is Active?
    *
    * @return  bool
    */
   public function active()
   {
    if (\IPS\Request::i()->controller == 'forums')
    {
        return (string) $this->link() === (string) \IPS\Request::i()->url();
    }
    elseif (\IPS\Request::i()->controller == 'topic')
    {
        return (string) $this->link() != (string) \IPS\Request::i()->url();
    }
   }
}

 

Вроде работает, но, выделяется только подменю: http://prntscr.com/l3rg2j

Изначально загружает так: http://prntscr.com/l3rg8h

  • 9 месяцев спустя...
Опубликовано:

Добрый день, добавил в файл код из второго сообщения,

подскажите пожалуйста имеется например Главная страницы то есть http://ipb43.ru в меню добавляется вкладка с внешней ссылкой Главная ссылка http://ipb43.ru но при переходе по этой вкладке она неактивна, приходится добавлять в эту вкладку ссылку ещё раз, только тогда она активна. Далее есть страницы например Новости со ссылкой http://ipb43.ru/index.php?ind=news добавляю её во вкладку Главная и когда нахожусь на этой странице как бы все нормально но при переходе по ссылке http://ipb43.ru/index.php?ind=news&op=news_show_single&ide=187 уже становится активна вкладка Форум, это можно как то поправить?

Так же при добавлении во вкладку ссылки скажем http://ipb43.ru/docs/ это(ЧПУ ссылка) и переходе на эту страницу активна вкладка Форум

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

Можно попробовать искать по части

 

return (!(\IPS\Request::i()->url() instanceof \IPS\Http\Url\Friendly) and mb_strpos((string) \IPS\Request::i()->url(), (string) $this->link()) === 0);

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

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

Так ошибка

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

Какая?

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

Там лишняя ) была, но при исправлении постоянно Главная вкладка активна даже если на форуме

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

Там лишняя ) была

точно.

 

постоянно Главная вкладка активна даже если на форуме

Как выглядят адреса?

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

Дак так же как выше описывал то есть например если в меню добавить http://ipb43.ru/index.php?ind=news то все нормально вменю ссылка активна если же находиться на http://ipb43.ru/index.php?ind=news&op=news_show_single&ide=187 то уже форум активен в меню

 

Если код что вы предложили то все время активна ссылка http://ipb43.ru/ не зависимо где находишься хоть на форуме http://ipb43.ru/forum/ хоть где

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

Я поправил код. Пробуйте

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

Сейчас на странице 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.