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

Редирект на страницу 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

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

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