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

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

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

Так работает, но если находишься на http://ipb43.ru/ то активна http://ipb43.ru/forum/

остальные ссылки вроде все работают как нужно, как это поправит?

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

Этот пункт каким образом сделан?

Дак стандартно приложением, то есть ссылку вводить не нужно

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

Дак стандартно приложением, то есть ссылку вводить не нужно

 

Походу баг движка. Если отключить js, то выделяются 2 вкладки.

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

Походу баг движка. Если отключить js, то выделяются 2 вкладки.

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

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

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

\applications\core\sources\FrontNavigation\FrontNavigationAbstract.php

 

		if ( $this->active() )
	{
		return TRUE;
	}

заменить на

 		if ( $this->active() )
	{
		if (\is_object($this->link()) and \is_object(\IPS\Request::i()->url()) and \get_class($this->link()) !== \get_class(\IPS\Request::i()->url()))
		{
			return FALSE;
		}

		return TRUE;
	}

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

В таком случае перестают работать вкладки приложений форум, галерея и тд

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

В таком случае перестают работать вкладки приложений форум, галерея и тд

 

Я проверял - работает.

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

Я проверял - работает.

Хмм старанно проверил ещё раз делаю так, внес изменения в файл \applications\core\extensions\core\FrontNavigation\CustomItem.php указанные тут http://ipbskins.ru/forum/topic15583.html/page__view__findpost__p__107688

Далее в файл applications\core\sources\FrontNavigation\FrontNavigationAbstract.php в функции public function activeOrChildActive() заменил как предложено там в этой функции два раза встречается

if ( $this->active() )
       {
           return TRUE;
       }

 

то есть

public function activeOrChildActive()
{
	if ( $this->active() )
	{
		return TRUE;
	}

	foreach ( $this->subItems() as $item )
	{
		if ( $item->active() )
		{
			return TRUE;
		}
	}

	return FALSE;
}

если первое поменять то не чего не меняется если второе

то есть так

public function activeOrChildActive()
{
	if ( $this->active() )
	{
		return TRUE;
	}

	foreach ( $this->subItems() as $item )
	{
		if ( $this->active() )
       {
           if (\is_object($this->link()) and \is_object(\IPS\Request::i()->url()) and \get_class($this->link()) !== \get_class(\IPS\Request::i()->url()))
           {
               return FALSE;
           }

           return TRUE;
       }
	}

	return FALSE;
}

то перестают работать вкладки приложений

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

если первое поменять то не чего

	/**
 * Is this item, or any of it's child items, active?
 *
 * @return	bool
 */
public function activeOrChildActive()
{
	// if ( $this->active() )
	// {
		// return TRUE;
	// }
       if ( $this->active() )
       {
           if (\is_object($this->link()) and \is_object(\IPS\Request::i()->url()) and \get_class($this->link()) !== \get_class(\IPS\Request::i()->url()))
           {
               return FALSE;
           }

           return TRUE;
       }		
	foreach ( $this->subItems() as $item )
	{
		if ( $item->active() )
		{
			return TRUE;
		}
	}

	return FALSE;
}

main.png

calendar.png

files.png

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

	/**
 * Is this item, or any of it's child items, active?
 *
 * @return	bool
 */
public function activeOrChildActive()
{
	// if ( $this->active() )
	// {
		// return TRUE;
	// }
       if ( $this->active() )
       {
           if (\is_object($this->link()) and \is_object(\IPS\Request::i()->url()) and \get_class($this->link()) !== \get_class(\IPS\Request::i()->url()))
           {
               return FALSE;
           }

           return TRUE;
       }		
	foreach ( $this->subItems() as $item )
	{
		if ( $item->active() )
		{
			return TRUE;
		}
	}

	return FALSE;
}

post-47589-0-10306500-1565415605_thumb.png

post-47589-0-28963400-1565415610_thumb.png

post-47589-0-65539400-1565415619_thumb.png

 

Дак в данном случае не чего не меняется визуально, то есть при загрузке страницы main(главная) она загружается с активной вкладкой приложения forum, а после загрузки перескакивает на main

то есть выглядит при загрузке это так

post-16492-0-71097300-1565437301_thumb.jpg

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

У меня почему-то работает.

Может что-то влияет.

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

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