Posted 14 апреля, 20177 yr comment_126749 Вот на DLE например имеются такие теги: [not-aviable=main] {content} [/not-aviable] [aviable=fullstory] {content} [/aviable] Как например в GlobalTemplate прописать , а точнее скрыть например <div class="1"></div> на форумах, а показать на страницах? Или скрыть на страницах, а показать в полной новости на этих страницах? Кто владеет данной информацией, помогите советом , очень нужно для моего проекта. Заранее благодарен знатоки! И PS Не по теме: Edited 14 апреля, 20177 yr by andros0789 удалил лишний тег
14 апреля, 20177 yr comment_126784 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 Не по теме: Там три буквы пропущено, фильтр плохих слов не прошли
14 апреля, 20177 yr Author comment_126786 kgb, эт получается пол шаблна глобал будет в тегах?)) в принципе нормальное решение) Просто есть много страниц, подкатегорий, баз данных и тд..шаблон почти везде одинаковый, но есть где например есть боковой блок а есть где его нет...вот и сижу голову ломаю)
15 апреля, 20177 yr comment_126808 13 часов назад, andros0789 сказал: kgb, эт получается пол шаблна глобал будет в тегах?)) в принципе нормальное решение) Просто есть много страниц, подкатегорий, баз данных и тд..шаблон почти везде одинаковый, но есть где например есть боковой блок а есть где его нет...вот и сижу голову ломаю) Во первых кто тебя заставляет все лепить в глобал шаблоне? Во-вторых, ты спросил, я показал механизмы, которы, кстати, сам движек использует. Например bodyClasses используется для вывода меню в зависимости от шаблона, а location для определания места виджетов, добавляемых через менеджер виджетов. Ну и в третьих чем твое от WP [not-aviable=main] {content} [/not-aviable] отличается от {{if $location['app'] == 'cms'}} Блок {{endif}} ??????? Или опиши конкретно, что где хочешь, а то не понятно о каком блоке речь, толи ты его ручками в шаблоне прописываешь, толи это кастом блок от pages толи еще что
15 апреля, 20177 yr Author comment_126809 18 минут назад, kgb сказал: Во первых кто тебя заставляет все лепить в глобал шаблоне? Во-вторых, ты спросил, я показал механизмы, которы, кстати, сам движек использует. Например bodyClasses используется для вывода меню в зависимости от шаблона, а location для определания места виджетов, добавляемых через менеджер виджетов. Ну и в третьих чем твое от WP [not-aviable=main] {content} [/not-aviable] отличается от {{if $location['app'] == 'cms'}} Блок {{endif}} ??????? Или опиши конкретно, что где хочешь, а то не понятно о каком блоке речь, толи ты его ручками в шаблоне прописываешь, толи это кастом блок от pages толи еще что От души за помощь)) буду пилить дальше) А вот еще вопрос) Как к примеру в краткой новости в Pages прописать показ изображения (к примеру иконку что это видео новость а не обычная новость) в зависимости от категории? К примеру на главной странице новостей показаны новости всех категорий, но у всех идет один шаблон, только с показом иконки PLAY на изображении к новости. которая накладывается условием типа если это видео, то показать, если обычная, то скрыть.
15 апреля, 20177 yr comment_126811 9 минут назад, andros0789 сказал: к примеру иконку что это видео новость а не обычная новость А чем видео новость отличается от обычной?
15 апреля, 20177 yr Author comment_126812 Только что, kgb сказал: А чем видео новость отличается от обычной? внутри будут шаблоны разные) И в краткой новости просто накладывается иконка PLAY 9 минут назад, kgb сказал: А чем видео новость отличается от обычной? вот так к примеру, то что нужно
15 апреля, 20177 yr comment_126813 2 минуты назад, andros0789 сказал: внутри будут шаблоны разные Это как? Для отображения базы данных используется - для полной записи - группа шаблонов "display", для категорий - "listing", для главной страницы базы - в зависимости от настроек - или "category_articles" ( с вариантами category_2_column_first_featured, category_2_column_image_feature и т.д. ) или "category_index" . Разные шаблоны для одной базы , например разные шаблоны display сделать нельзя. Я не понимаю. Самое простое, добавить поле чекбокс и включать его при добавлении видео-новости. А потом проверять в шаблоне и в зависимости от значения выводить то, что надо
15 апреля, 20177 yr Author comment_126814 Только что, kgb сказал: Это как? Для отображения базы данных используется - для полной записи - группа шаблонов "display", для категорий - "listing", для главной страницы базы - в зависимости от настроек - или "category_articles" ( с вариантами category_2_column_first_featured, category_2_column_image_feature и т.д. ) или "category_index" . Разные шаблоны для одной базы , например разные шаблоны display сделать нельзя. Я не понимаю. Самое простое, добавить поле чекбокс и включать его при добавлении видео-новости. А потом проверять в шаблоне и в зависимости от значения выводить то, что надо Тоже дело говоришь!) Соглашусь) А вот как к примеру разные два кастомных блока на разных страницах показать? К примеру в категории один блок а в полной новости другой боковой блок? Так же как и выше описали?
15 апреля, 20177 yr comment_126815 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"} Есть правда третий вариант, который я реализовал, но он требует прямого вмешательства в исходный код. Они там одну строчку не дописали, или забыли или просто не захотели спецом
15 апреля, 20177 yr Author comment_126816 Только что, kgb сказал: Если речь идет о блоках pages, добавляемых через менеджер виджетов, то стандатным средство это никак, я писал выше, что а движек для определения места блока использует как раз location ( точнее поле "area_area" в таблице "cms_page_widget_areas" ). Так только создавать для каждого шаблона bodyClasses {{\IPS\Output::i()->bodyClasses[] = 'cms_display';}} {{\IPS\Output::i()->bodyClasses[] = 'cms_listing';}} и т.д. и происывать прям блоках условия, правда есть недостаток, блоки кешировать нельзя. Есть другой вариант. Отказаться от менеджера виджетов, а также от глобального сайдбара и прям в шаблонах создать места для блоков, включая сайдбар и вставлять блоки через {block="KEY"} Есть правда третий вариант, который я реализовал, но он требует прямого вмешательства в исходный код. Они там одну строчку не дописали, или забыли или просто не захотели спецом как же радует что есть грамотные) Спасибо друг. И извини за былое))было дело как то гадость написал в твой адрес. И может насчет третьего напишешь,так сказать для общего познания.
15 апреля, 20177 yr comment_126817 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 немного может придеться поработать, но это уже мелочи
16 апреля, 20177 yr Author comment_126850 Маленький вопрос, как сокрашать вывод кол-ва комментов и просмотров? {lang="num_views_with_number" pluralize="$record->record_views"} {lang="num_comments" pluralize="$record->record_comments"} Без слова ПРОСМОТРОв и КОММЕНТАРИЕВ. Просто цифры
16 апреля, 20177 yr Author comment_126851 а все понял) { $record->record_comments} и {$record->record_views }
16 апреля, 20177 yr comment_126852 11 минут назад, andros0789 сказал: а все понял) { $record->record_comments} и {$record->record_views } Это хорошо, Но на всякий случай, часто помогает вот это {{echo '<pre>';}} {{print_r($record);}} {{echo '</pre>';exit;}} Что бы понять, что же там у нас в переменной $record (или $row или что там еще будет )
16 апреля, 20177 yr Author comment_126853 Только что, kgb сказал: Это хорошо, Но на всякий случай, часто помогает вот это {{echo '<pre>';}} {{print_r($record);}} {{echo '</pre>';exit;}} Что бы понять, что же там у нас в переменной $record (или $row или что там еще будет ) Воу крутяк! Осталось научиться мне теперь условия составлять)))
20 апреля, 20177 yr Author comment_127028 В 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';}} в настройках содержимого страницы, где у мен свой шаблон. Прописываю условия что идут ниже в твоем примере. Но как определить что я нахожусь в полной новости то?))Вопрос) Убирает блоки на главной и в полной новости, а надо как то ему прописать что только в полной новости)
20 апреля, 20177 yr Author comment_127029 Совет нужен) Если я в шаблон полной новости пропишу скрипт с добавлением класса в body <script> $("#default-body").addClass("fullNews"); </script> А после этого пропишу вместо {{\IPS\Output::i()->bodyClasses[] = 'fullNews';}} Свое условие на проверку класса через hasClass в <body class="fullNews"> для удаления ненужных блоков в полной новости. Нормально будет как думаете знатоки?
20 апреля, 20177 yr comment_127038 2 часа назад, andros0789 сказал: Если я в шаблон полной новости пропишу скрипт с добавлением класса в body Зачем плодить сущности и засорять шаблон скриптом, если {{\IPS\Output::i()->bodyClasses[] = 'fullNews';}} добавит класс fullNews в боди?
20 апреля, 20177 yr comment_127042 50 минут назад, kgb сказал: Зачем плодить сущности и засорять шаблон скриптом, если {{\IPS\Output::i()->bodyClasses[] = 'fullNews';}} добавит класс fullNews в боди? Хорошая конструкция для больших кастомных проектов.
20 апреля, 20177 yr Author comment_127049 2 часа назад, kgb сказал: Зачем плодить сущности и засорять шаблон скриптом, если {{\IPS\Output::i()->bodyClasses[] = 'fullNews';}} добавит класс fullNews в боди? Ну прописал я {{\IPS\Output::i()->bodyClasses[] = 'fullNews';}} в боди в шаблоне страницы, а дальше то что??? Как мне показать свой шаблон полной новости? В этом то и вся беда. Мне нужно в полной новости убрать половину кода ведь. Поэтому и не пойму как убрать с помощью скрипта, точнее добавить скриптом. Прописав скрипт в шаблон полной новости, а в шаблоне страницы прописать в ненужные (блоки которые не нужны в фуллстори) условие.... Как условие прописать, если в классе боди есть fuulNews то не показывать этот блок? {{\IPS\Output::i()->bodyClasses[] = 'fullNews';}} не катит... Так как класс добавляется скриптом. Как в IPS с помощью hasClass сделать проверку класса боди?
20 апреля, 20177 yr comment_127052 {{if in_array('МОЙКЛАСС', \IPS\Output::i()->bodyClasses )}} Класс имеется {{else}} Класса нет {{endif}}
20 апреля, 20177 yr Author comment_127053 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}} К примеру надо убрать этот блок в полной новости. Вот как его показать на главной в Страницах и убрать в полной новости? то ли я че то не то делаю, то ли хз
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.