Как разобраться из-за чего не отображается блок

Если вы создали блок, который должен показывать что-то на каких-то страницах сайта, но вместо этого в ожидаемом месте целевых страниц ничего нет – придерживайтесь приведенного ниже алгоритма диагностики.

Но перед этим желательно в jm визуально проверить, нет ли ошибок в самом блоке:

  • Стоит ли параметр block_is («это блок?»), если параметра нет или в установленном параметре нет флажка – установить.
  • Задан ли стиль, правильный ли он[1]?
  • Заданы ли условия выбора и показа[2]?
  • Задано ли количество отображаемых объектов (параметр «сколько (start,limit)»)?
  • Корректная ли стоит «cортировка»? Если вы собственноручно создали какую-либо свою сортировку, путем редактирования параметра, убедитесь, что она допустима в данном контексте[3].
  • Права объекта и выборки соответствуют задаче? Если не будет прав на просмотр для блока или для выбираемых в него объектов, то и блок целевой посетитель не увидит. Если блок и/или выборка не доступна всем на просмотр, то проверять наличие блока надо авторизовавшись с соответствующими правами.

Теперь последовательность действий для отладки блока:

1. На той странице, где блок должен по замыслу быть, но его нет, включаем режим отладки (Соответствующая кнопка – «debug» – находится в экранном менеджере. Cм. раздел «Режим отладки»).

2. Ищем на странице "рамку" блока, кликаем по ней, видим таблицу с его id и параметрами (если вы не уверены, о каких именно рамках и таблицах идет речь, посмотрите скриншот в том же разделе документации: «Режим отладки»). Если для данного проблемного блока нет таблицы, то это значит, что не сработало условие показа (или «функция (проверки) показа», если она использована вместо условия), либо в текущем шаблоне нет позиции, в которой должен стоять блок. Нужно проверить условие показа и позицию. Если после визуального осмотра параметров причина все еще не ясна, то можно посмотреть xml файл страницы на которой не виден блок (см. «Режим просмотра XML данных»). Если в секции /page/blocks нет узла message с атрибутом id, соответствующим потерянному блоку, значит дело в условии показа. Если блок есть в xml, то причина – отсутствующая в шаблоне позиция (имейте в виду, что в шаблоне может стоять проверка: при определенных условиях позицию можно отключить как таковую).

3. Если таблицу в режиме отладки есть – раскрываем ее и смотрим на самую нижнюю строчку. Здесь перечисляются id объектов, выбранных в блок. Если эта строка пустая, значит в блок просто-напросто ничего не выбрано: либо неправильное условие выбора, либо указано неправильное количество, либо некорректная сортировка, либо ошибочно задана (или не настроена) функция выбора блока, одним словом, ошибка в запросе, либо в блок ничего не выбрано по причине того, что на сайте нет объектов, соответствующих заданным условиям. Не забывайте про права.

4. Если блок видно в режиме отладки и в него что-то выбрано, но на странице блок все равно не видно – значит, скорее всего, дело в стиле: или стиль неподходящий (есть, например, стили, которые показывают только специфические параметры, типа графических заголовков или видео файлов, которых может не быть ни у одного объекта выборки) или стиль не задан или задан неправильно (например, задан управляемый стиль[4], но отсутствует вид списка).

Блоки в отличие от обычных страниц не наследуют стили, у них нет «стилей по умолчанию», они «не понимают» параметры «стиль/список сообщения» - можно использовать только параметры «стиль / список ветви». Рекомендации в данном случае – проверить все стилевые параметры блока, попробовать установить другой стиль (например, стиль – "стандарт [упр. список]", список – "стандарт"), в крайнем случае – посмотреть xsl код «неработающего» стиля на предмет логики его работы и html код страницы, когда блок есть, но «невидим»[5].

5. Если ничего не помогло: возможно, у вас на сайте используется параметры «фильтр выборки блоков» или «фильтр выборки дочерних». По умолчанию блоки сайта могут находиться в любых разделах без ограничений, хотя и принято хранить их в «служебном» разделе. Однако фильтр выборки блоков позволяет сконфигурировать работу сайта так, чтобы блоки, не соответствующие какому-то определенному условию, не обрабатывать. Например, с помощью этого параметра можно ограничить разделы сайта, где сами блоки могут располагаться. Этот параметр по сути работает как дополнительное «условие показа», действующее принудительно для всех блоков. И значение этого параметра может отличаться от раздела к разделу.

Параметр «Фильтр выборки дочерних» в свою очередь позволяет в месте применения (ветви, т.к. он наследуется, так же как и фильтр выборки блоков) создать принудительное дополнение к условию выбора каждого блока.

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



[1] для задания стиля в блоке должен использоваться параметр «стиль ветви», не «стиль сообщения»!

[2] вместо «условия выбора» может быть задан параметр «функция выбора», вместо «условия показа» – «функция показа»

[3] нет ошибок в синтаксисе; используются только имена атрибутов или параметров, хранящихся в отдельных полях; имена атрибутов и параметров корректны для таблицы из которой происходит выборка: например, если мы выбираем не объекты сайта, а пользователей, обычная сортировка по заголовку не подойдет, так как в таблице пользователей нет столбца mess_header.

[4] Управляемыми называются стили, которые определяют только структуру результирующего кода страницы, но не весь ее вид. Другими словами, такие стили определяют как будет выводиться список выбранных объектов: подряд (вертикально/горизонтально), в виде таблицы или иным способом, но вот внешний вид каждого отображаемого блоком элемента (новости, баннера, фотографии и т.д.) определяется уже параметром «вид списка». Управляемые стили содержат в своем названии фразу "[упр. список]".

[5] Причин, вызывающих исчезновение элемента на странице может быть много. В том числе, возможна ситуация, когда нужные элементы в коде страницы есть, но не отображаются из-за специальных или ошибочных css выражений. Например, пропавший блок может быть перекрыт сверху другим блоком, имеющим абсолютное позиционирование и т.п.

Поиск по документации
закрыть 483
открыть 1611
открыть 1200
открыть 1604
открыть 1605
открыть 1606
открыть 1612
закрыть 2196
Контактная информация
603000, Россия,
г. Нижний Новгород,
ул. Студеная, дом 5,
4-й этаж.
info@graphit.ru

(831) 260–16–32