Как сделать, чтобы виджет отображался только на индексной странице? - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

СвернутьПрикрепленные теги

Теги не найдены

  • 2 Страниц +
  • 1
  • 2

Как сделать, чтобы виджет отображался только на индексной странице?

#1 Пользователь не на сайте   Zero108 ответил: »

 
 
  • Advanced
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 562
  • Регистрация: 25-Июль 09
  • Репутация: 92
  • IPB version:4.1.x
 

Отправлено 08 Май 2016 - 21:41

Главная страница сайта: /store/
Добавляют виджет (список статей из Pages) на главную страницу.
Виджет начинается отображаться и на страницах вида:
/store/category/4-paintings-for-sale-o/
/store/category/6-osinyn-pavel/

Как сделать так, чтобы виджет отображался только на /store/ ?

Какое условие в какой файл/шаблон прописать?

Нисколько не программист, знаю только, что бывают всякие конструкции вида:

if (strpos($_SERVER['REQUEST_URI'], 'indexindex') || strpos($_SERVER['REQUEST_URI'], 'indexrobots')) {
    header('Location: /');exit;
}

if(isset($_GET['module']) && preg_match('/.*h.*e.*l.*p.*/', $_GET['module'])) {
   $_GET['module'] = 'help';
}

0

#2 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 2 166
  • Регистрация: 26-Октябрь 11
  • Репутация: 814
  • IPB version:I have no IPB
 

Отправлено 15 Май 2016 - 10:12

Там же у Вас кастомный блок используется.
Правьте html блока.
Условие
{{if request.app == 'nexus' and request.module == 'store' and request.controller == 'store' and !isset(request.cat) }}Код блока{{endif}}


Только учтите, что, если блок еще где-то используется, то он не будет отображаться на других страницах. Нужно будет менять условие или создавать новый.
0

#3 Пользователь не на сайте   Zero108 ответил: »

 
 
  • Advanced
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 562
  • Регистрация: 25-Июль 09
  • Репутация: 92
  • IPB version:4.1.x
 

Отправлено 16 Май 2016 - 21:21

В Pages можно создать блок со своим php/html, либо создать блок на основе дефольных настроек. Я выбрал второй вариант. Называется он Custom Blocks, когда его вставляешь на фронте перетаскиванием мышью. Как сделать, чтобы он показывался только на /store/ и не показывался на
/store/category/4-paintings-for-sale-o/
/store/category/6-osinyn-pavel/
и тому подобных страницах?

Сообщение изменено: Zero108 (16 Май 2016 - 21:58)

0

#4 Пользователь не на сайте   Zero108 ответил: »

 
 
  • Advanced
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 562
  • Регистрация: 25-Июль 09
  • Репутация: 92
  • IPB version:4.1.x
 

Отправлено 16 Май 2016 - 21:24

Вот как этот блок выглядит при редактировании:

-IMG-
0

#5 Пользователь не на сайте   Dmitriy427 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 574
  • Регистрация: 15-Октябрь 11
  • Репутация: 152
  • Откуда:Россия, Тула
  • IPB version:3.3.x
 

Отправлено 16 Май 2016 - 22:25

Во вкладке "Content", в выпадающем меню, выбрать "Use as a base for a custom template". Появится textarea с шаблоном виджета, туда добавить условие.
0

#6 Пользователь не на сайте   Zero108 ответил: »

 
 
  • Advanced
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 562
  • Регистрация: 25-Июль 09
  • Репутация: 92
  • IPB version:4.1.x
 

Отправлено 17 Май 2016 - 01:41

Указанные выше способы не помогли, либо я что-то делаю не так:

{{if request.app == 'nexus' and request.module == 'store' and request.controller == 'store' and !isset(request.cat) }}
{{if !empty( $records ) }}
	<h3 class='ipsWidget_title ipsType_reset'>{$title}{lang="aaa1_pages_block_articles"}</h3>
	{{if $orientation == 'vertical'}}
		<div class='ipsPad_half ipsWidget_inner'>
			<ul class='ipsDataList ipsDataList_reducedSpacing'>
				{{foreach $records as $record}}
					<li class='ipsDataItem'>
						<div class='ipsDataItem_icon ipsPos_top'>
							{template="userPhoto" group="global" app="core" params="$record->author(), 'tiny'"}
						</div>
						<div class='ipsDataItem_main'>
							<div class="ipsCommentCount ipsPos_right {{if ( $record->record_comments ) === 0}}ipsFaded{{endif}}" data-ipsTooltip title='{lang="replies_number" pluralize="$record->record_comments"}'>{expression="$record->record_comments"}</div>
							<a href="{$record->url()->setQueryString( 'do', 'getLastComment' )}" title='{lang="view_this_cmsrecord" sprintf="\IPS\Member::loggedIn()->language()->addToStack( 'content_db_lang_sl_' . $record::$customDatabaseId, FALSE ), $record->_title"}' class='ipsDataItem_title ipsType_break'>{wordbreak="$record->_title"}</a><br>
							<span class='ipsType_light ipsType_small'>{lang="byline_nodate" htmlsprintf="$record->author()->link()"} &middot; {datetime="$record->mapped('date')"}</span>
						</div>
					</li>
				{{endforeach}}
			</ul>
		</div>
	{{else}}
		<div class='ipsWidget_inner'>
			<ul class='ipsDataList'>
				{template="recordRow" group="listing" location="database" app="cms" themeClass="IPS\cms\Theme" params="null, null, $records"}
			</ul>
		</div>
	{{endif}}
{{endif}}
{{endif}}


После передобавления виджета на главную страницу /store/, вообще не выводятся данные и сам блок не показывается нигде.

-IMG-

Сообщение изменено: Zero108 (17 Май 2016 - 01:49)

0

#7 Пользователь не на сайте   Dmitriy427 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 574
  • Регистрация: 15-Октябрь 11
  • Репутация: 152
  • Откуда:Россия, Тула
  • IPB version:3.3.x
 

Отправлено 17 Май 2016 - 04:25

Все "request." (с точкой), в условии, замените на "\IPS\Request::i()->".
0

#8 Пользователь не на сайте   Zero108 ответил: »

 
 
  • Advanced
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 562
  • Регистрация: 25-Июль 09
  • Репутация: 92
  • IPB version:4.1.x
 

Отправлено 17 Май 2016 - 11:28

Ничего не изменилось. Список статей не выводится, ничего не отображается при вставке блока на главную страницу Commerce.

{{if \IPS\Request::i()->app == 'nexus' and \IPS\Request::i()->module == 'store' and \IPS\Request::i()->controller == 'store' and !isset(\IPS\Request::i()->cat) }}
{{if !empty( $records ) }}
    <h3 class='ipsWidget_title ipsType_reset'>{$title}{lang="aaa1_pages_block_articles"}</h3>
    {{if $orientation == 'vertical'}}
        <div class='ipsPad_half ipsWidget_inner'>
            <ul class='ipsDataList ipsDataList_reducedSpacing'>
                {{foreach $records as $record}}
                    <li class='ipsDataItem'>
                        <div class='ipsDataItem_icon ipsPos_top'>
                            {template="userPhoto" group="global" app="core" params="$record->author(), 'tiny'"}
                        </div>
                        <div class='ipsDataItem_main'>
                            <div class="ipsCommentCount ipsPos_right {{if ( $record->record_comments ) === 0}}ipsFaded{{endif}}" data-ipsTooltip title='{lang="replies_number" pluralize="$record->record_comments"}'>{expression="$record->record_comments"}</div>
                            <a href="{$record->url()->setQueryString( 'do', 'getLastComment' )}" title='{lang="view_this_cmsrecord" sprintf="\IPS\Member::loggedIn()->language()->addToStack( 'content_db_lang_sl_' . $record::$customDatabaseId, FALSE ), $record->_title"}' class='ipsDataItem_title ipsType_break'>{wordbreak="$record->_title"}</a><br>
                            <span class='ipsType_light ipsType_small'>{lang="byline_nodate" htmlsprintf="$record->author()->link()"} &middot; {datetime="$record->mapped('date')"}</span>
                        </div>
                    </li>
                {{endforeach}}
            </ul>
        </div>
    {{else}}
        <div class='ipsWidget_inner'>
            <ul class='ipsDataList'>
                {template="recordRow" group="listing" location="database" app="cms" themeClass="IPS\cms\Theme" params="null, null, $records"}
            </ul>
        </div>
    {{endif}}
{{endif}}
{{endif}}

Сообщение изменено: Zero108 (17 Май 2016 - 11:29)

0

#9 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 2 166
  • Регистрация: 26-Октябрь 11
  • Репутация: 814
  • IPB version:I have no IPB
 

Отправлено 17 Май 2016 - 12:15

Просмотреть сообщениеZero108 сказал(а):

Ничего не изменилось.

И не изменится.
request.app - краткая запись \IPS\Request::i()->app
Spoiler

0

#10 Пользователь не на сайте   Dmitriy427 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 574
  • Регистрация: 15-Октябрь 11
  • Репутация: 152
  • Откуда:Россия, Тула
  • IPB version:3.3.x
 

Отправлено 17 Май 2016 - 12:50

Цитата

request.app - краткая запись \IPS\Request::i()->app

Я просто не уверен, что краткая нотация работает в шаблонах контента. В родных шаблонах там везде используется "\IPS\Request::i()".
Вложение  ScreenShot 166.jpg (342,11К)
Количество загрузок: 2

Покрайней мере, у меня, в шаблоне для кастомного блока (PHP), она работать не захотела.
0

#11 Пользователь не на сайте   Zero108 ответил: »

 
 
  • Advanced
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 562
  • Регистрация: 25-Июль 09
  • Репутация: 92
  • IPB version:4.1.x
 

Отправлено 17 Май 2016 - 13:07

Вставил последний код выше. Ничего не изменилось: блок не выводит никакую информацию нигде. Без правок блок выводит Featured статьи из базы данных Articles.

Сообщение изменено: Zero108 (17 Май 2016 - 13:12)

0

#12 Пользователь не на сайте   Dmitriy427 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 574
  • Регистрация: 15-Октябрь 11
  • Репутация: 152
  • Откуда:Россия, Тула
  • IPB version:3.3.x
 

Отправлено 17 Май 2016 - 13:58

{{if !empty( $records ) and \IPS\Request::i()->app == 'nexus' and !isset( \IPS\Request::i()->cat )}}
    <h3 class='ipsWidget_title ipsType_reset'>{$title}{lang="aaa1_pages_block_articles"}</h3>
    {{if $orientation == 'vertical'}}
        <div class='ipsPad_half ipsWidget_inner'>
            <ul class='ipsDataList ipsDataList_reducedSpacing'>
                {{foreach $records as $record}}
                    <li class='ipsDataItem'>
                        <div class='ipsDataItem_icon ipsPos_top'>
                            {template="userPhoto" group="global" app="core" params="$record->author(), 'tiny'"}
                        </div>
                        <div class='ipsDataItem_main'>
                            <div class="ipsCommentCount ipsPos_right {{if ( $record->record_comments ) === 0}}ipsFaded{{endif}}" data-ipsTooltip title='{lang="replies_number" pluralize="$record->record_comments"}'>{expression="$record->record_comments"}</div>
                            <a href="{$record->url()->setQueryString( 'do', 'getLastComment' )}" title='{lang="view_this_cmsrecord" sprintf="\IPS\Member::loggedIn()->language()->addToStack( 'content_db_lang_sl_' . $record::$customDatabaseId, FALSE ), $record->_title"}' class='ipsDataItem_title ipsType_break'>{wordbreak="$record->_title"}</a><br>
                            <span class='ipsType_light ipsType_small'>{lang="byline_nodate" htmlsprintf="$record->author()->link()"} &middot; {datetime="$record->mapped('date')"}</span>
                        </div>
                    </li>
                {{endforeach}}
            </ul>
        </div>
    {{else}}
        <div class='ipsWidget_inner'>
            <ul class='ipsDataList'>
                {template="recordRow" group="listing" location="database" app="cms" themeClass="IPS\cms\Theme" params="null, null, $records"}
            </ul>
        </div>
    {{endif}}
{{endif}}
У меня работает.

P.S. И в краткой нотации тоже работает, впрочем.
0

#13 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 2 166
  • Регистрация: 26-Октябрь 11
  • Репутация: 814
  • IPB version:I have no IPB
 

Отправлено 17 Май 2016 - 14:03

Просмотреть сообщениеZero108 сказал(а):

Вставил последний код выше. Ничего не изменилось: блок не выводит никакую информацию нигде. Без правок блок выводит Featured статьи из базы данных Articles.


Я протестировал.
Первый код работает, если Nexus не является дефолтным приложением.
Второй код работает, если Nexus является дефолтным приложением.

Zero108, смотрите, какие тогда параметры присутствуют у \IPS\Request::i() для составления условия.
0

#14 Пользователь не на сайте   Zero108 ответил: »

 
 
  • Advanced
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 562
  • Регистрация: 25-Июль 09
  • Репутация: 92
  • IPB version:4.1.x
 

Отправлено 17 Май 2016 - 14:54

Цитата

Zero108, смотрите, какие тогда параметры присутствуют у \IPS\Request::i() для составления условия.


Я не программист и в теме топика писал, что Commerce - индексное приложение. Сейчас попробую второй вариант кода выше. Ссылку добавил в профиль.

Сообщение изменено: Zero108 (17 Май 2016 - 14:55)

0

#15 Пользователь не на сайте   Zero108 ответил: »

 
 
  • Advanced
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 562
  • Регистрация: 25-Июль 09
  • Репутация: 92
  • IPB version:4.1.x
 

Отправлено 17 Май 2016 - 15:04

Вообщем, друзья, никак у меня не выходит. Вот видео.

https://youtu.be/ld42n-A5VqI

Когда вставляю дефолтный код - все работает, но на всех страницах (главная и категории), а мне нужно на главной. Ссылка на сайт в профиле. Дефолтный код, который работает, такой (то есть статьи там есть, и все выводится правильно):

Spoiler


Может я что не туда вставляю?
0

Сообщить об этой теме:


  • 2 Страниц +
  • 1
  • 2


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна