Перейти к содержанию

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


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

Вот на DLE например имеются такие теги:

[not-aviable=main] {content} [/not-aviable] 
[aviable=fullstory] {content} [/aviable] 

Как например в GlobalTemplate прописать , а точнее скрыть например <div class="1"></div> на форумах, а показать на страницах? Или скрыть на страницах, а показать в полной новости на этих страницах? Кто владеет данной информацией, помогите советом , очень нужно для моего проекта. Заранее благодарен знатоки!

 

И PS Не по теме:

Снимок.PNG

Изменено пользователем andros0789
удалил лишний тег
Ссылка на комментарий
Поделиться на другие сайты

Кто же все таки подскажет? А то тема вниз ушла уже...:/

Ссылка на комментарий
Поделиться на другие сайты

9 часов назад, andros0789 сказал:

Как например в GlobalTemplate прописать , а точнее скрыть например <div class="1"></div> на форумах, а показать на страницах?

А в чем проблема?

<div class="1 ipsHide"></div>

Не будет показываться нигде

а в css прописываем

body[data-pageapp="cms"] .1 {
	display: block;
}

Вариант 2 - еще лучше/ Через переменную $location , которая в GlobalTemplate есть.

{{if $location['app'] == 'cms'}}
	<div class="1"></div>
{{endif}}

 

9 часов назад, andros0789 сказал:

Или скрыть на страницах, а показать в полной новости на этих страницах?

Здесь сложнее, т.к. и $location['app']  и $location['module']  будут одинаковыми. Но есть  выход, называется bodyClasses .

В шаблоне  страницы record.phtml добавляем bodyClasses, например вот так 

{{\IPS\Output::i()->bodyClasses[] = 'fullNews';}}

И тогда у нас body уже имеет доп. класс fullNews / Соот-но или через css  body.fullNews или чекркз проверку существования класса

{{if !in_array('fullNews', \IPS\Output::i()->bodyClasses )}}

блаблабла

{{endif}}

 

9 часов назад, andros0789 сказал:

И PS Не по теме:

Там три буквы пропущено, фильтр плохих слов не прошли

Ссылка на комментарий
Поделиться на другие сайты

kgb, эт получается пол шаблна глобал будет в тегах?)) в принципе нормальное решение) Просто есть много страниц, подкатегорий, баз данных и тд..шаблон почти везде одинаковый, но есть где например есть боковой блок а есть где его нет...вот и сижу голову ломаю)

Ссылка на комментарий
Поделиться на другие сайты

13 часов назад, andros0789 сказал:

kgb, эт получается пол шаблна глобал будет в тегах?)) в принципе нормальное решение) Просто есть много страниц, подкатегорий, баз данных и тд..шаблон почти везде одинаковый, но есть где например есть боковой блок а есть где его нет...вот и сижу голову ломаю)

Во первых кто тебя заставляет все лепить в глобал шаблоне? Во-вторых, ты спросил, я показал механизмы, которы, кстати, сам движек использует.  Например bodyClasses используется для вывода меню в зависимости от шаблона, а location для определания места виджетов, добавляемых через менеджер виджетов. Ну и в третьих чем твое от WP

[not-aviable=main] {content} [/not-aviable] 

отличается от

{{if $location['app'] == 'cms'}}
	Блок
{{endif}}

???????

 

Или опиши конкретно, что где хочешь, а то не понятно о каком блоке речь, толи ты его ручками в шаблоне прописываешь, толи это кастом блок от pages толи еще что

Ссылка на комментарий
Поделиться на другие сайты

18 минут назад, kgb сказал:

Во первых кто тебя заставляет все лепить в глобал шаблоне? Во-вторых, ты спросил, я показал механизмы, которы, кстати, сам движек использует.  Например bodyClasses используется для вывода меню в зависимости от шаблона, а location для определания места виджетов, добавляемых через менеджер виджетов. Ну и в третьих чем твое от WP


[not-aviable=main] {content} [/not-aviable] 

отличается от


{{if $location['app'] == 'cms'}}
	Блок
{{endif}}

???????

 

Или опиши конкретно, что где хочешь, а то не понятно о каком блоке речь, толи ты его ручками в шаблоне прописываешь, толи это кастом блок от pages толи еще что

От души за помощь)) буду пилить дальше)

А вот еще вопрос) Как к примеру в краткой новости в Pages прописать показ изображения (к примеру иконку что это видео новость а не обычная новость) в зависимости от категории? К примеру на главной странице новостей показаны новости всех категорий, но у всех идет один шаблон, только с показом иконки PLAY на изображении к новости. которая накладывается условием типа если это видео, то показать, если обычная, то скрыть.^_^

Ссылка на комментарий
Поделиться на другие сайты

9 минут назад, andros0789 сказал:

к примеру иконку что это видео новость а не обычная новость

А чем видео новость отличается от обычной?

Ссылка на комментарий
Поделиться на другие сайты

Только что, kgb сказал:

А чем видео новость отличается от обычной?

внутри будут шаблоны разные) И в краткой новости просто накладывается иконка PLAY

9 минут назад, kgb сказал:

А чем видео новость отличается от обычной?

вот так к примеру, то что нужно

Снимок.PNG

Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, andros0789 сказал:

внутри будут шаблоны разные

Это как? Для отображения базы данных используется - для полной записи - группа шаблонов "display",  для категорий -  "listing", для главной страницы базы - в зависимости от настроек - или "category_articles" ( с вариантами category_2_column_first_featured, category_2_column_image_feature и т.д. ) или "category_index" . Разные шаблоны для одной базы ,  например разные шаблоны display сделать нельзя. Я не понимаю.

 

Самое простое, добавить поле чекбокс и включать его при добавлении видео-новости. А потом проверять в шаблоне и в зависимости от значения выводить то, что надо

Ссылка на комментарий
Поделиться на другие сайты

Только что, kgb сказал:

Это как? Для отображения базы данных используется - для полной записи - группа шаблонов "display",  для категорий -  "listing", для главной страницы базы - в зависимости от настроек - или "category_articles" ( с вариантами category_2_column_first_featured, category_2_column_image_feature и т.д. ) или "category_index" . Разные шаблоны для одной базы ,  например разные шаблоны display сделать нельзя. Я не понимаю.

 

Самое простое, добавить поле чекбокс и включать его при добавлении видео-новости. А потом проверять в шаблоне и в зависимости от значения выводить то, что надо

Тоже дело говоришь!) Соглашусь)
А вот как к примеру разные два кастомных блока на  разных страницах показать? К примеру в категории один блок а в полной новости другой боковой блок? Так же как и выше описали?

Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, andros0789 сказал:

А вот как к примеру разные два кастомных блока на  разных страницах показать?

Если речь идет о блоках pages, добавляемых  через менеджер виджетов, то стандатным средство это никак, я писал выше, что

15 часов назад, kgb сказал:

и $location['app']  и $location['module']

а движек для определения места блока использует как раз location ( точнее поле "area_area" в таблице "cms_page_widget_areas" ). Так  только создавать  для каждого шаблона bodyClasses

{{\IPS\Output::i()->bodyClasses[] = 'cms_display';}}
{{\IPS\Output::i()->bodyClasses[] = 'cms_listing';}}
и т.д.

и происывать прям блоках условия, правда есть недостаток, блоки кешировать нельзя.

 

Есть другой вариант. Отказаться от менеджера виджетов, а также от глобального сайдбара и прям в шаблонах создать места для блоков, включая сайдбар и вставлять блоки через {block="KEY"}

 

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

Ссылка на комментарий
Поделиться на другие сайты

Только что, kgb сказал:

Если речь идет о блоках pages, добавляемых  через менеджер виджетов, то стандатным средство это никак, я писал выше, что

а движек для определения места блока использует как раз location ( точнее поле "area_area" в таблице "cms_page_widget_areas" ). Так  только создавать  для каждого шаблона bodyClasses


{{\IPS\Output::i()->bodyClasses[] = 'cms_display';}}
{{\IPS\Output::i()->bodyClasses[] = 'cms_listing';}}
и т.д.

и происывать прям блоках условия, правда есть недостаток, блоки кешировать нельзя.

 

Есть другой вариант. Отказаться от менеджера виджетов, а также от глобального сайдбара и прям в шаблонах создать места для блоков, включая сайдбар и вставлять блоки через {block="KEY"}

 

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

как же радует что есть грамотные) Спасибо друг. И извини за былое))было дело как то гадость написал в твой адрес. 

И может насчет третьего напишешь,так сказать для общего познания.

Ссылка на комментарий
Поделиться на другие сайты

9 минут назад, andros0789 сказал:

И извини за былое))

Не помню. Ты пробегись по моим сообщениям, я ведь в выражениях не стесняюсь и для некоторых это тоже гадости, хотя я просто называю вещи своими именами))))))

 

13 минут назад, andros0789 сказал:

И может насчет третьего

Ну я тоже столкнулся с той же проблемой. Если на форумах на главной, в разделах и в темах можно показывать разные блоки, то для Pages везде показывается один, да его еще хрен удалишь)))))) (кстати, у кого проблема с удалением, простой способ - перемещаем в другоу место, например из сайдбара в хидер и тут же удаляем))). В то же время в режиме page bilder движек предусматривает создание кастомных мест для виджетов. Если открыть  шаблоны page_builder то мы увидем там, как пример для трех колонок

<div>
	<div class='ipsGrid ipsGrid_collapsePhone'>
		<div class='ipsGrid_span4'>
			{template="widgetContainer" group="pages" app="cms" params="'col1', $widgets, 'vertical'"}
		</div>
		<div class='ipsGrid_span4'>
			{template="widgetContainer" group="pages" app="cms" params="'col2', $widgets, 'vertical'"}
		</div>
		<div class='ipsGrid_span4'>
			{template="widgetContainer" group="pages" app="cms" params="'col3', $widgets, 'vertical'"}
		</div>
	</div>
</div>

Однако попытка создать создесть кастомный виджет контейнер в шаблонах при ручном режиме , например {template="widgetContainer" group="pages" app="cms" params="'MyCustomArea', $widgets, 'vertical'"} ни к чему не привела, не работает.

Выясням. Находим класс, который за это отвечает, он здесь /applications/cms/sources/Pages/Page.php и видим.

Для page_builder такой код

			if ( $this->type === 'builder' )
			{
				list( $group, $name, $key ) = explode( '__', $this->template );
				\IPS\Output::i()->output = \IPS\Theme::i()->getTemplate('pages')->globalWrap( $nav, \IPS\cms\Theme::i()->getTemplate($group, 'cms', 'page')->$name( $this, $this->getWidgets() ), $this );
			}

Где getWidgets() как раз вытаскивает как стандартные так и кастомные места для виджетов.

Ну а для ручного режима код такой

			else
			{
				/* Populate \IPS\Output::i()->sidebar['widgets'] sidebar/header/footer widgets */
				$this->getWidgets();
				\IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'pages', 'cms' )->globalWrap( $nav, $this->getHtmlContent(), $this );
			}

дальше дело техники, возможно несколько вариатнов,  сложнее, проще, лучше хуже, но самый простой, это заменить код для ручного режима вот так

			else
			{
				/* Populate \IPS\Output::i()->sidebar['widgets'] sidebar/header/footer widgets */
				//$this->getWidgets(); //original
				\IPS\Output::i()->sidebar['widgets'] = $this->getWidgets();//custom widget area
				\IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'pages', 'cms' )->globalWrap( $nav, $this->getHtmlContent(), $this );
			}

И упс, в жопу программеров от IPS? мы сами с ушами)))

Теперь мы шаблонах пишем, например 

{template="widgetContainer" group="global" app="core" params="'header_MyTemplate_Display', 'horizontal'"}

или 

{template="widgetContainer" group="global" app="core" params="'sidebar_MyTemplate_Display', 'vertical'"}

или для листинга 

{template="widgetContainer" group="global" app="core" params="'header_MyTemplate_Listing', 'horizontal'"}

Ну и т.д.

и получаем кастомное мето для виджета. Там, Прадва еще с css немного может придеться поработать, но это уже мелочи

Ссылка на комментарий
Поделиться на другие сайты

огромнейшее тебе!

Ссылка на комментарий
Поделиться на другие сайты

Маленький вопрос, как сокрашать вывод кол-ва комментов и просмотров?
{lang="num_views_with_number" pluralize="$record->record_views"}

{lang="num_comments" pluralize="$record->record_comments"}

Без слова ПРОСМОТРОв и КОММЕНТАРИЕВ. Просто цифры

Ссылка на комментарий
Поделиться на другие сайты

а все понял)

{ $record->record_comments}  и {$record->record_views }

Ссылка на комментарий
Поделиться на другие сайты

11 минут назад, andros0789 сказал:

а все понял)

{ $record->record_comments}  и {$record->record_views }

Это хорошо, Но на всякий случай, часто помогает вот это 

{{echo '<pre>';}}
{{print_r($record);}}
{{echo '</pre>';exit;}}

Что бы понять, что же там у нас в переменной $record (или $row или что там еще будет )

Ссылка на комментарий
Поделиться на другие сайты

Только что, kgb сказал:

Это хорошо, Но на всякий случай, часто помогает вот это 


{{echo '<pre>';}}
{{print_r($record);}}
{{echo '</pre>';exit;}}

Что бы понять, что же там у нас в переменной $record (или $row или что там еще будет )

Воу крутяк! Осталось научиться мне теперь условия составлять)))

Ссылка на комментарий
Поделиться на другие сайты

В 14.04.2017 в 23:04, kgb сказал:

 

В 14.04.2017 в 13:17, andros0789 сказал:

Как например в GlobalTemplate прописать , а точнее скрыть например <div class="1"></div> на форумах, а показать на страницах?

А в чем проблема?


<div class="1 ipsHide"></div>

Не будет показываться нигде

а в css прописываем


body[data-pageapp="cms"] .1 {
	display: block;
}

Вариант 2 - еще лучше/ Через переменную $location , которая в GlobalTemplate есть.


{{if $location['app'] == 'cms'}}
	<div class="1"></div>
{{endif}}

 

В 14.04.2017 в 13:17, andros0789 сказал:

Или скрыть на страницах, а показать в полной новости на этих страницах?

Здесь сложнее, т.к. и $location['app']  и $location['module']  будут одинаковыми. Но есть  выход, называется bodyClasses .

В шаблоне  страницы record.phtml добавляем bodyClasses, например вот так 


{{\IPS\Output::i()->bodyClasses[] = 'fullNews';}}

И тогда у нас body уже имеет доп. класс fullNews / Соот-но или через css  body.fullNews или чекркз проверку существования класса


{{if !in_array('fullNews', \IPS\Output::i()->bodyClasses )}}

блаблабла

{{endif}}

 

Вот и встал вопрос на этом месте у меня)
Прописываю я в класс {{\IPS\Output::i()->bodyClasses[] = 'fullNews';}} в настройках содержимого страницы, где у мен свой шаблон. Прописываю условия что идут ниже в твоем примере. Но как определить что я нахожусь в полной новости то?))Вопрос)
Убирает блоки на главной и в полной новости, а надо как то ему прописать что только в полной новости)

Ссылка на комментарий
Поделиться на другие сайты

Совет нужен) Если я в шаблон полной новости пропишу скрипт с добавлением класса в body

<script>
        $("#default-body").addClass("fullNews");    
</script>

А после этого пропишу вместо 

{{\IPS\Output::i()->bodyClasses[] = 'fullNews';}}

Свое условие на проверку класса через hasClass в <body class="fullNews"> для удаления ненужных блоков в полной новости. Нормально будет как думаете знатоки?

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, andros0789 сказал:

Если я в шаблон полной новости пропишу скрипт с добавлением класса в body

Зачем плодить сущности и засорять шаблон скриптом, если  {{\IPS\Output::i()->bodyClasses[] = 'fullNews';}} добавит класс  fullNews в боди?

Ссылка на комментарий
Поделиться на другие сайты

50 минут назад, kgb сказал:

Зачем плодить сущности и засорять шаблон скриптом, если  {{\IPS\Output::i()->bodyClasses[] = 'fullNews';}} добавит класс  fullNews в боди?

Хорошая конструкция для больших кастомных проектов. 

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, kgb сказал:

Зачем плодить сущности и засорять шаблон скриптом, если  {{\IPS\Output::i()->bodyClasses[] = 'fullNews';}} добавит класс  fullNews в боди?

Ну прописал я  {{\IPS\Output::i()->bodyClasses[] = 'fullNews';}}  в боди в шаблоне страницы, а дальше то что???  Как мне показать свой шаблон полной новости? В этом то и вся беда. Мне нужно в полной новости убрать половину кода ведь. Поэтому и не пойму как убрать с помощью скрипта, точнее добавить скриптом. Прописав скрипт в шаблон полной новости, а в шаблоне страницы прописать в ненужные (блоки которые не нужны в фуллстори) условие.... Как условие прописать, если в классе боди есть fuulNews то не показывать этот блок?

{{\IPS\Output::i()->bodyClasses[] = 'fullNews';}} не катит... Так как класс добавляется скриптом.

Как в IPS с помощью  hasClass сделать проверку класса боди?

Ссылка на комментарий
Поделиться на другие сайты

{{if in_array('МОЙКЛАСС', \IPS\Output::i()->bodyClasses )}}
  Класс имеется
  {{else}}
Класса нет
  {{endif}}

 

Ссылка на комментарий
Поделиться на другие сайты

5 минут назад, Respected сказал:

{{if in_array('МОЙКЛАСС', \IPS\Output::i()->bodyClasses )}}
  Класс имеется
  {{else}}
Класса нет
  {{endif}}

 

То есть получается тут нет такого понятия, если есть класс вывести, если нет то не вывести?)) Я имею ввиду, придется два раза код прописывать

{{if in_array('fullNews', \IPS\Output::i()->bodyClasses )}}
                     <section class="promo-strip span12">
                        <ul class="promo-strip__list row ">
                           {block="newstop4"}
                        </ul>
                     </section>
					{{else}} 

К примеру надо убрать этот блок в полной новости. Вот как его показать на главной в Страницах и убрать в полной новости? то ли я че то не то делаю, то ли хз

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...