Вывод поля только в мобильной версии

#1 21 января 2019 в 19:54
Всем привет. После последнего обновления из шаблонов много перенесено в system, есть у меня поле advert показываю его только при ($device_type != 'desktop'), теперь такая запись не работает было так в тип-контента_item.tpl.php
  1.  
  2. <?php $device_type = cmsRequest::getDeviceType();?>
  3. <?php if ($device_type != 'desktop') {$item['advert'];} else {$item['advert'] = false;}?>
  4.  
И хлебные крошки тоже пришлось править в system/.../item_view.php
  1.  
  2. //$this->cms_template->addBreadcrumb($item['title']);
  3.  
Вопрос как сделать хук или что-то подобное чтобы не лезть в папку system?
Так же изменить вывод тегов чтобы убрать запятые.
П.С. Использование функций-хелперов не осилил, возможно они не для этого.
#2 21 января 2019 в 23:39
Попробуте echo добавить:
  1.  
  2. <?php if ($device_type != 'desktop') {echo $item['advert'];} else {$item['advert'] = false;}?>
  3.  
Не понятно только почему условие сразу не ставите на нужные устройства (т.е. если это телефон или планшет, то вывести поле)?
#3 22 января 2019 в 09:38

Не понятно только почему условие сразу не ставите на нужные устройства (т.е. если это телефон или планшет, то вывести поле)?

Олег Васильевич я
Телефон и планшет у них одинаковый html только ширина разная (немного css @media screen и все красиво), в desktop появляются еще блоки внутри много чего типа сайдбара, чтобы их не грузить в мобильной версии получилось разбиение на десктоп и недесктоп.
с echo тоже не работает
#4 22 января 2019 в 11:41

Телефон и планшет у них одинаковый html только ширина разная (немного css @media screen и все красиво), в desktop появляются еще блоки внутри много чего типа сайдбара, чтобы их не грузить в мобильной версии получилось разбиение на десктоп и недесктоп.

rector
Так и не понял зачем вам false на компах))

с echo тоже не работает

rector
А какой тип поля у advert?
Ещё так попробуйте:
  1.  
  2. <?php if ($device_type != 'desktop') {echo $fields['advert']['html'];} else {$fields['advert']['html'] = false;}?>
  3.  
#5 23 января 2019 в 09:00

Так и не понял зачем вам false на компах))

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

Ещё так попробуйте

Олег Васильевич я
Такой вариант тоже не подошел.
В предыдущей версии был такой код:
  1.  
  2. <?php $fields_fieldsets = cmsForm::mapFieldsToFieldsets($fields, function($field, $user) use ($item) {
  3. if (!$field['is_in_item'] || $field['is_system']) { return false; }
  4. if ((empty($item[$field['name']]) || empty($field['html'])) && $item[$field['name']] !== '0') { return false; }
  5. if ($field['groups_read'] && !$user->isInGroups($field['groups_read'])) { return false; }
  6. return true;
  7. } ); ?>
  8.  
Здесь проверялись условия показывать или нет, где он теперь.
#6 23 января 2019 в 14:13

Такой вариант тоже не подошел.

rector
А какой всё-таки тип поля?


В предыдущей версии был такой код:
...
где он теперь.

rector
Теперь он в контроллере.
Я обычный любитель (не спец), но можете в личку стукнуть, вместе посмотрим.
#7 23 января 2019 в 15:16
Тип поля статичный текст. Как бы это все сделать через хуки или функций-хелперов. Если в system все править обновляться страшно будет. sad
#8 23 января 2019 в 15:21

На странице использую только 2 рекламных блока в мобильной версии под заголовком статьи и в конце статьи, в десктопе в сайдбаре и в конце статьи, поэтому под заголовком не нужен.

rector
Выведите каждый блок отдельным виджетом, а в настройках виджетов есть настройка на каких дивайсах отображать виджет.
#9 23 января 2019 в 16:18

Тип поля статичный текст

rector
Строковое поле — знаю.
Текст — знаю.
Текст HTML — знаю.
А поля "статичный текст" — не знаю. Какое-то стороннее поле или одно из перечисленных мною?

Если в system все править обновляться страшно будет.

rector
Да всё решается в одном файле шаблона. Просто проверьтесь внимательно.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.