Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Zero108

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

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

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

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

Ha2NTYnJ.jpg

 

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

 

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

Поделиться сообщением


Ссылка на сообщение

Вам кажется. Это не вкладка а имя текущего текущее приложение (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

Поделиться сообщением


Ссылка на сообщение
09/08/14 20:58 (изменено)

Сделал так:

 

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

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

И вкладка активной не становится. Активная по прежнему вкладка первой страницы сайта, которой является 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>'>

 

щас попробую

Поделиться сообщением


Ссылка на сообщение
09/08/14 21:08 (изменено)

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

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

Поделиться сообщением


Ссылка на сообщение

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

 

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

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
09/08/14 21:21 (изменено)

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

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

Поделиться сообщением


Ссылка на сообщение

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

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

 

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

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение
09/11/14 22:07 (изменено)

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

 

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

 

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

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

Поделиться сообщением


Ссылка на сообщение

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
09/11/14 22:41 (изменено)

А чем этот метод тогда проще метода 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 поправьте сами.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...