Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Zero108

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

Recommended Posts

Потому что ссылку надо повесить на вкладку не такую, какую можно в этом менеджере задать. В менеджере ссылки на аддоны идут, а нужно сделать ссылку на страницу *.html в IP.Content, сделанную мной.

В менеджере на кастомную вкладку вешается любая ссылка, никаких ограничений нет.

Ha2NTYnJ.jpg

 

P.S. Ваш "стандартный" способ создания вкладки, с помощью меню "Приложения", это и есть костыль, при наличии контента.

 

P.P.S. Кроме этого, там вложенные меню можно делать, правда только одноуровневые. Это на случай, если не знаете.

Share this post


Link to post
Share on other sites

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

 

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

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

RewriteCond %{QUERY_STRING} =app=secrets

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

 

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

  • Upvote 1

Share this post


Link to post
Share on other sites

Сделал так:

 

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'

 

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

Edited by Zero108

Share this post


Link to post
Share on other sites

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

 

{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>'>

  • Upvote 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

{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>'>

 

щас попробую

Share this post


Link to post
Share on other sites

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

Edited by Zero108

Share this post


Link to post
Share on other sites

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

 

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

  • Upvote 1

Share this post


Link to post
Share on other sites

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

Edited by Zero108

Share this post


Link to post
Share on other sites

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

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

 

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

  • Upvote 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

Edited by Zero108

Share this post


Link to post
Share on other sites

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

 

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

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

Share this post


Link to post
Share on other sites

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

Edited by Zero108

Share this post


Link to post
Share on other sites

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

 

Правка для того, чтобы была активна только кастомная вкладка. Шаблон "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 поправьте сами.

  • Upvote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...