Jump to content

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


Zero108
 Share

Recommended Posts

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

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

/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 или хтакцесса, не прибегая к настройке апача, нгинкса и прочей туманной для меня области?

Link to comment
Share on other sites

Что-нибудь типа такого для хтакцесс:

 

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.c\.a108\.net
RewriteRule ^(.*)$ http://c.a108.net/$1 [R=301,L]
RedirectPermanent / http://www.a108.net/index.php/calendar/3-%D0%B2%D0%B0%D0%B9%D1%88%D0%BD%D0%B0%D0%B2%D1%81%D0%BA%D0%B8%D0%B9-%D0%BA%D0%B0%D0%BB%D0%B5%D0%BD%D0%B4%D0%B0%D1%80%D1%8C/

Link to comment
Share on other sites

Попробовал в globalTemplate заменить согласно рецепту:

 

<a href='{parse url="{$data['app_link']}" seotitle="{$data['app_seotitle']}" template="{$data['app_template']}" base="{$data['app_base']}"}' title='{parse expression="sprintf( $this->lang->words['go_to_prefix'], IPSLib::getAppTitle($data['app_dir']) )"}'>{IPSLib::getAppTitle($data['app_dir'])}</a>

на

 

<if test="$data[app_dir]=='quotations'"><a href='http://www.site.ru/index.php/page/%D0%BA%D0%BE%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8.html' title='{$this->lang->words['blog_display_title']}'>{$this->lang->words['blog_display_title']}</a><else />
<a href='{parse url="{$data['app_link']}" seotitle="{$data['app_seotitle']}" template="{$data['app_template']}" base="{$data['app_base']}"}' title='{parse expression="sprintf( $this->lang->words['go_to_prefix'], IPSLib::getAppTitle($data['app_dir']) )"}'>{IPSLib::getAppTitle($data['app_dir'])}</a></if>	

- не помогло

 

Что еще можно сделать? Просто прописывать код ссылки в globaltemplate не хочу, так как хочу оставить дефолтную вкладку. Неужели придется руками прописывать в шаблоне код кнопки с правильной ссылкой?!

Link to comment
Share on other sites

Вот это не вариант, так как хочется оставить скрытие вкладки и страницы для определенных групп (стандартный функционал).

Link to comment
Share on other sites

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

Каким стандартным? Что мешает тем же стандартным способом прописать ей адрес?

Link to comment
Share on other sites

Иммется в виду, что сейчас добавил кнопку через ACP без правки шаблонов, в меню Управление приложениями и модулями. Также кнопку можно добавить в IP.Content. При таком стандартном добавлении есть очень полезные опции скрытия или показа вкладки определенным группам, но, к сожалению, нельзя прописать абсолютный url. Как прописать абсолютный url или сделать редирект?

 

Вот так в IP.Content можно добавить кнопку, но поля для вставки абсолютного url нет. Возможности сильно ограничены:

 

ykSgP.jpg

Edited by Zero108
Link to comment
Share on other sites

Еще нужно придумать, как класс прописывать "left active", если вкладка выбрана. Вот так не получается.

 

						<if test="showingapp:|:$data['app_show']">
									{parse variable="appActive" default="" oncondition="$data['app_active']" value="active"}
									<li class='left {parse variable="appActive"}'><a href='/index.php/page/котировки.html' title="Перейти в раздел 'Котировки'">Котировки</a></li>
					</if>

Link to comment
Share on other sites

Я что-то не понимаю, почему вы не используете встроенный в IP.Content менеджер главного меню, а выдумываете какие-то костыли?

Ha2NTYnH.jpg

Link to comment
Share on other sites

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

Edited by Zero108
Link to comment
Share on other sites

$data - переменная цикла. Пользовательской вкладке нечего делать в цикле, значит и $data там будет не доступна (разве что вкладка находится в цикле под условием, что она относится к конкретному приложению).

 

<if test="IPSMember::isInGroup($this->memberData, array(1,2))">
   {parse variable="appActive" default="" oncondition="IPS_APP_COMPONENT == 'quotations'" value="active"}
   <li class='left {parse variable="appActive"}'><a href='/index.php/page/котировки.html' title="Перейти в раздел 'Котировки'">Котировки</a></li>
</if>

Код должен быть после цикла

Если же в цикле, то перечитываем свой третий пост с рецептом.

Link to comment
Share on other sites

$data - переменная цикла. Пользовательской вкладке нечего делать в цикле, значит и $data там будет не доступна (разве что вкладка находится в цикле под условием, что она относится к конкретному приложению).

 

{parse variable="appActive" default="" oncondition="IPS_APP_COMPONENT == 'quotations'" value="active"}
<li class='left {parse variable="appActive"}'><a href='/index.php/page/котировки.html' title="Перейти в раздел 'Котировки'">Котировки</a></li>

 

Я удалил вкладку quotations из меню создания вкладок в ACP и вставляю код ссылки непосредственно в global template.

 

Мне кажется, что вот это getCurrentApplication() == 'quotations'" - работать не будет.

Edited by Zero108
Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...