Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

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

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Редирект на страницу IP.Content со вкладки главного меню

Добавил вкладку в верхнее меню стандартным способом.

Нужно, чтобы вкладка указывала на страницу

/index.php/page/%D0%BA%D0%BE%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8.html

 

По умолчанию, вкладка указывает на страницу:

/index.php?app=quotations

 

Сайт в облаке IPS, есть доспут к хтакцесс. Прописал в хтакцесс

redirect /index.php?app=quotations /index.php/page/%D0%BA%D0%BE%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8.html

 

- не помогло.

 

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

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

Вам кажется. Это не вкладка а имя текущего текущее приложение (app=%appname%). Только судя по всему имя у приложения все же secrets.

 

Ну, или редирект где-то прописать, как, например, для ссылки:

Добавить после RewriteEngine On

RewriteCond %{QUERY_STRING} =app=secrets

RewriteRule ^index\.php$ /index.php/page/котировки.html? [R=301,L]

 

htaccess сохранить в utf-8

  • Автор

Сделал так:

 

1. Добавил в ACP приложение и указал директорию get_quotations.

 

2. В index.php прописал:

 

if (strpos($_SERVER['REQUEST_URI'], 'index.php?app=get_quotations') !== false) {
   header('Location: /index.php/page/котировки.html');exit;
} 

 

Редиректит, но не удалось сделать для активной вкладки class='left active'

 

Можно как-то назначить класс?

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

Нахрен херней занимаетесь? Выше я написал как сделать условие для текущего приложения:

 

{parse variable="appActive" default="" oncondition="IPS_APP_COMPONENT == 'get_quotations'" value="active"}
<li class='left {parse variable="appActive"}'>

или

 

<li class='left <if test="IPS_APP_COMPONENT == 'get_quotations'">active</if>'>

  • Автор

И вкладка активной не становится. Активная по прежнему вкладка первой страницы сайта, которой является IP.Content.

  • Автор

Нахрен херней занимаетесь? Выше я написал как сделать условие для текущего приложения:

 

{parse variable="appActive" default="" oncondition="IPS_APP_COMPONENT == 'get_quotations'" value="active"}
<li class='left {parse variable="appActive"}'>

или

 

<li class='left <if test="IPS_APP_COMPONENT == 'get_quotations'">active</if>'>

 

щас попробую

  • Автор

Эти варианты не работают.

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

Вообще-то это страница ип.контента, а значит текущее приложение ип.контент. Не достаточно будет добавить условие для выделения одной вкладки, надо еще убрать активность с ип.контента. А это целая система костылей. Либо активны обе вкладки, либо никак

 

<li class='left <if test="strpos(urldecode($_SERVER['REQUEST_URI']), '/index.php/page/котировки.html') !== false">active</if>'>

  • Автор

Оставлю пока "обе активны". Спасибо.

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

Оставлю пока "обе активны". Спасибо.

Вам Dmitriy427 в 16 посте написал решение.

 

Создаете новую вкладку и заполняете поля

  • Автор

Попробую. Создавал не в контенте, а в аддонах.

  • Автор

Создаете новую вкладку и заполняете поля

 

Попробовал. Страничка html создана в контенте. Добавил вкладку, как посоветовал Dmitriy427, сделал ссылку на этот html.

 

Метод siv1987 лучше, потому что в этом скине активная вкладка выделяется по-другому (отличается от неактивной, выделяется классом 'left active'), а стандартным способом, предложенным Dmitriy427, не выделяется, хотя, ссылка работает. Спасибо, что подсказали.

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

Попробовал. Страничка html создана в контенте. Добавил вкладку, как посоветовал Dmitriy427, сделал ссылку на этот html.

 

Метод siv1987 лучше, потому что в этом скине активная вкладка выделяется по-другому (отличается от неактивной, выделяется классном 'left active'), а стандартным способом, предложенным Dmitriy427, не выделяется, хотя, ссылка работает. Спасибо, что подсказали.

Что бы кастомная вкладка выделялась, как вкладка приложения, нужно указать атрибут для ссылки "app=ccs", например. Можно сделать выделение и по значению переменной $_SERVER['request_uri'], но это тоже будет связано с правкой шаблона.

  • Автор

А чем этот метод тогда проще метода sive1987, раз все равно нужно в шаблон лезть руками? Можно ли будет сделать для страницы html, созданной в ip.content, независимое выделение вкладки?

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

Метод проще тем, что не нужно править шаблоны, если вас устраивает то, что активны две вкладки.

 

Правка для того, чтобы была активна только кастомная вкладка. Шаблон "primary_navigation", группа шаблонов skin_ccs_global, найти:

					if( substr( $menuItem['menu_position'], 0, strlen($data['app_dir']) ) == $data['app_dir'] AND ( !$menuItem['menu_permissions'] OR !IPSMember::isInGroup( $this->memberData, explode( ',', $menuItem['menu_permissions'] ) ) ) )

Заменить на:

					if( IPSText::UNhtmlspecialchars($menuItem['menu_url']) == 'http://mysite.mu/index.php/page/котировки.html' AND urldecode($_SERVER['REQUEST_URI']) == '/index.php/page/котировки.html' )
				{
					$tabIsActive	= true;
				}
				elseif( urldecode($_SERVER['REQUEST_URI']) == '/index.php/page/котировки.html' )
				{
					$tabIsActive	= false;
				}
				elseif( substr( $menuItem['menu_position'], 0, strlen($data['app_dir']) ) == $data['app_dir'] AND ( !$menuItem['menu_permissions'] OR !IPSMember::isInGroup( $this->memberData, explode( ',', $menuItem['menu_permissions'] ) ) ) )

 

Найти:

			if( !in_array( $menuItem['menu_id'], $this->menuDrawn ) AND ( !$menuItem['menu_permissions'] OR !IPSMember::isInGroup( $this->memberData, explode( ',', $menuItem['menu_permissions'] ) ) ) )

Заменить на:

			if( IPSText::UNhtmlspecialchars($menuItem['menu_url']) == 'http://mysite.mu/index.php/page/котировки.html' AND urldecode($_SERVER['REQUEST_URI']) == '/index.php/page/котировки.html' )
		{
			$tabIsActive	= true;
		}
		elseif( urldecode($_SERVER['REQUEST_URI']) == '/index.php/page/котировки.html' )
		{
			$tabIsActive	= false;
		}
		elseif( !in_array( $menuItem['menu_id'], $this->menuDrawn ) AND ( !$menuItem['menu_permissions'] OR !IPSMember::isInGroup( $this->memberData, explode( ',', $menuItem['menu_permissions'] ) ) ) )

 

P.S. Код отредактировал, добавил вторую замену. Не знаю, что там с у вас с ЧПУ, поэтому ссылки и uri поправьте сами.

  • Автор

Попробую

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

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

Аккаунт

Навигация

Поиск

Поиск

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

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