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

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

 

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

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

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

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

#16 Пользователь не на сайте   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 - 15:16

1. Перемещаете виджет туда, где он будет отображаться.
2. В АЦ в настройках блока в поле Content в самый верх вставляете
{{foreach \IPS\Request::i() as $k => $v}}
    {$k} - {$v}<br>
{{endforeach}}

Сохраняете
3. Идете на главную страницу и смотрите, что появилось.
4. Идете на страницу категории и также смотрите, что появилось.
0

#17 Пользователь не на сайте   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:54

Вставил такой ваш код выше дефолтного кода:
Spoiler


Зашел посмотреть превью там же, где вставлял код. Код выдает ошибку:

ErrorException: htmlspecialchars() expects parameter 1 to be string, array given (2)
#0 [internal function]: IPS\IPS::errorHandler(2, 'htmlspecialchar...', '<путь>...', 20, Array)
#1 <путь>/paintinggallery.pro/system/Theme/Theme.php(4056) : eval()'d code(20): htmlspecialchars(Array, 131, 'UTF-8', false)
#2 [internal function]: IPS\Theme\class_content_template_for_block_->run(Object(IPS\Patterns\ActiveRecordIterator), '', NULL)
#3 <путь>/paintinggallery.pro/applications/cms/sources/Blocks/Block.php(287): call_user_func_array(Array, Array)
#4 [internal function]: IPS\cms\Blocks\_Block->getTemplate(Object(IPS\Patterns\ActiveRecordIterator), '', NULL)
#5 <путь>/paintinggallery.pro/system/Widget/Widget.php(224): call_user_func_array(Array, Array)
#6 <путь>/paintinggallery.pro/system/Content/Widget.php(316): IPS\_Widget->output(Object(IPS\Patterns\ActiveRecordIterator), '')
#7 <путь>/paintinggallery.pro/applications/cms/widgets/RecordFeed.php(152): IPS\Content\_Widget->render()
#8 <путь>/paintinggallery.pro/applications/cms/modules/front/pages/builder.php(85): IPS\cms\widgets\_RecordFeed->render()
#9 [internal function]: IPS\cms\modules\front\pages\_builder->previewBlock()
#10 <путь>/paintinggallery.pro/system/Dispatcher/Controller.php(85): call_user_func(Array)
#11 <путь>/paintinggallery.pro/applications/core/modules/front/system/widgets.php(39): IPS\Dispatcher\_Controller->execute()
#12 <путь>/paintinggallery.pro/system/Dispatcher/Dispatcher.php(129): IPS\core\modules\front\system\_widgets->execute()


Скриншот с ошибкой: -IMG-

На фронте все отображается как и раньше.

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

0

#18 Пользователь не на сайте   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
 

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

Только сейчас заметил.

На фронте над блоком отображается следующее:

app - core
module - system
controller - widgets
do - getBlock
blockID - app_cms_Blocks_pgsori0i8
pageApp - nexus
pageModule - store
pageController - store
pageArea - sidebar
orientation - vertical
csrfKey - ed76098e886d613a23e94c661f43dd6f
0

#19 Пользователь не на сайте   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
 

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

Выключил режим разработчика - блок стал кешироваться. В следствие чего нужные условия работают не так, как хотелось.
Если добавить условие "показывать блок только на главной", удалить кеш-файл и перейти на главную страницу, то и на странице категорий блок будет отображаться.
Если добавить условие "показывать блок только на главной", удалить кеш-файл и перейти на страницу категории, то на странице категорий блок будет скрыт и на главной тоже будет скрыт.

Zero108, как вариант создать блок для блока - новый html блок с кодом
{{if !isset(request.cat) }}
    {block="Template_Key"}
{{endif}}

Template_Key - ключ блока статей.
0

#20 Пользователь не на сайте   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
 

Отправлено 18 Май 2016 - 20:09

Можно пошаговую инструкцию? И почему он не будет отображаться на странице категорий?
0

#21 Пользователь не на сайте   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
 

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

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

Можно пошаговую инструкцию?

1. Блок со статьями у Вас уже создан. Оттуда берем только Template Key
2. Создаете новый блок: Type - Custom, Content Editor - Manual HTML.
2.1. Вкладка Details. Name, Description, Category, Template Key роли не играют.
2.2. Вкладка Content.
Поле Content
{{if !isset(request.cat) }}
    {block="articles"}
{{endif}}

articles - Template Key. На видео именно такой ключ.
Поле "Cache this block". Ставим "нет".

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

И почему он не будет отображаться на странице категорий?
Из условия.
1

#22 Пользователь не на сайте   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
 

Отправлено 19 Май 2016 - 20:45

Сделал, как вы сказали. Наконец-то заработало! Спасибо!!!

Сообщение изменено: Zero108 (19 Май 2016 - 20:51)

0

#23 Пользователь не на сайте   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
 

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

Я попробовал аналогичный рецепт с другим виджетом (с Галереи), но не сработало. Видимо, нужны уникальные условия в каждом случае. Вот такой код будет работать? Можно же какой-то универсальный способ сделать..

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];


if (strpos($url,'category') !== true) {
    echo 'add your block here';
}

0

#24 Пользователь не на сайте   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
 

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

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

Видимо, нужны уникальные условия в каждом случае

Не видимо, а так и есть.

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

Вот такой код будет работать?

Где?

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

Я попробовал аналогичный рецепт с другим виджетом (с Галереи), но не сработало.
Напишите подробнее, что нужно сделать, чтобы не работало.
0

#25 Пользователь не на сайте   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
 

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

Цитата

Напишите подробнее, что нужно сделать, чтобы не работало.


Читал много отзывов на сайте IPS, пользователи пишут пожелания, чтобы можно было виджеты на каждую страницу отдельно помещать. Тут, конечно, речь об этом не веду, так как для этого нужно функционал внедрять. Хотелось бы универсальное решение для того, чтобы на индексную страницу любого приложения можно было вставить виджет, который не отображается на любых внутренних страницах этого приложения. Также как делали для статей. Код выше можно приспособить? Например, вставлять его в шаблон или файл.

Сообщение изменено: Zero108 (27 Май 2016 - 20:33)

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
При копировании материалов с сайта
прямая ссылка на источник обязательна