Проверка статуса приложения Блог на витрине

В теме дизайна наличие блога проверяется такой конструкцией:

{if $theme_settings.sidebar_show_latest_posts && $wa->blog}

Однако если на витрине в структуре сайта отсутствует правило для приложения "Блог", то "$wa->blog" всё равно возвращает какие-то данные и успешно проходит проверку "{if $wa->blog}". Является ли это ошибкой фреймворка (что возвращается значение) или же в теме дизайна стоит использовать какую-то другую проверку (и если да, то какую)?

1 ответ

  • 1
    Алексей Webasyst 27 октября 2020 22:11 #

    {$wa->blog} проверяет только доступность приложения и больше никаких проверок не производит.
    Можете {$wa->blog->blogs()} вызывать и проверять на пустоту ссылку

    • +1

      дампанул {$wa->blog->blogs()} на витрине, где в структуре сайта нет правил для приложения блог

      Вот скрин:

      https://yadi.sk/i/tVVHgZTv0CS5CQ


      Вот что вернулось:

      dumped from wa-cache/92d68d/apps/shop/templates/compiled/shop_ru_RU/9c/c4/28/9cc428c6177dc106aab8916946f84edc9b653b57.file.sidebar.html.php line #284:
      
      [
        1 => [
          'name' => 'Новости',
          'icon' => 'blog',
          'color' => 'b-white',
          'id' => '1',
          'url' => 'novosti',
          'status' => 'public',
          'rights' => 1,
          'icon_url' => false,
          'icon_html' => '<i class="icon16 blog" title="Новости"></i>',
          'link' => '',
          'class' => 'b-white icon16 blog',
          'value' => 1,
          'title' => 'Новости',
        ],
        2 => [
          'name' => 'Статьи',
          'icon' => 'blog',
          'color' => 'b-white',
          'id' => '2',
          'url' => 'stati',
          'status' => 'public',
          'rights' => 1,
          'icon_url' => false,
          'icon_html' => '<i class="icon16 blog" title="Статьи"></i>',
          'link' => '',
          'class' => 'b-white icon16 blog',
          'value' => 2,
          'title' => 'Статьи',
        ],
        4 => [
          'name' => 'Конкурсы',
          'icon' => 'blog',
          'color' => 'b-white',
          'id' => '4',
          'url' => 'konkurs',
          'status' => 'public',
          'rights' => 1,
          'icon_url' => false,
          'icon_html' => '<i class="icon16 blog" title="Конкурсы"></i>',
          'link' => '',
          'class' => 'b-white icon16 blog',
          'value' => 4,
          'title' => 'Конкурсы',
        ],
      ]


      Чёт я туплю и не понимаю как это работает. Задача: убрать блог с витрины, где он не нужен. Как реализовать?

    • +1

      перечитал ваше сообщение, наковырял вот такую проверку для вывода блога. Неужели нужно делать примерно так? Попроще способа нет?

      {if $wa->blog}
          {$is_blog_disabled = false}
          {foreach $wa->blog->blogs() as $item}
              {if !$item.link}
                  {$is_blog_disabled = true}
                  {break}
              {/if}
          {/foreach}
          {if !$is_blog_disabled}
              блог
          {/if}
      {/if}

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите