Как получить доп.параметры поселения?

Хочу скрыть приложения из меню, в доп.параметрах поселения указываю параметр hide=1.

Как теперь получить значение этого параметра в массиве приложений, чтобы скрыть приложения с этим параметром?

{$_links = $wa->apps()}
{foreach $_links as $a}
    <li><a href="{$a.url}">{$a.name}</a></li>
{/foreach}

1 ответ

  • 1
    replicant 19 апреля 2020 14:13 #

    {$wa->globals('hide')} и массив тут непричем. Он не содержит данной информации.

    Можно настроить {$wa->apps()} произвольно в настройках Сайта, а не выводить всю кучу приложений.

    • +1
      Виктор Виктор 19 апреля 2020 14:42 #

      С помощью {$wa->globals('hide')} вы получите параметр текущего приложения, а необходимо получить его в меню приложений для каждой ссылки, как-то так:

      {$_links = $wa->apps()}
      {foreach $_links as $a}
          {if empty($a.hide)} 
              <li><a href="{$a.url}">{$a.name}</a></li>
          {/if}
      {/foreach}

      • +1
        replicant replicant 19 апреля 2020 15:01 #

        Вышеупомянутый массив не содержит таких данных.

        Сами поглядите через {wa_dumpc($wa->apps())}

        array(
          0 => array(
            'url' => '/',
            'name' => 'Магазин',
            'app' => 'shop',
          ),
          1 => array(
            'url' => '/blog/',
            'name' => 'Новости',
            'app' => 'blog',
          ),
        )

        • +1
          Виктор Виктор 19 апреля 2020 15:15 #

          Так я поэтому и задал вопрос. Были бы эти данные в массиве, их было бы несложно вывести. Вопрос собственно и был в том, что, так как параметров поселения нет в массиве, как их можно там получить?

          • +1
            replicant replicant 19 апреля 2020 16:21 #

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

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

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

            Однако есть пара мыслей. Создать в доп. параметрах ключи-обманки.

            Смотрите. Есть массив приложений и поселений в коде выше. Там есть url, name, app.

            Допустим я создам ключи hide=blog или hide=Новости в Магазине, тогда могу сравнивать app != $wa->apps(hide) или name != $wa->apps(hide) ну или типа того прямо внутри forearch перебирающего $wa->apps для элемента массива, указывающего на blog Новости, но при этом делать это находясь в Магазине.

            Т.е. ключи должны указывать не напрямую на скрыть это или нет типа hide=1 в каком-то одном поселении и более нигде, а скрыть что именно и где именно. Причем ключи должны быть прописаны скорее всего во всех ваших поселениях Структуры, которые выведены во фронтенд. Тогда можно сравнить приложение, урл поселения, наименование со значением текущего глобального ключа и как-то попробовать использовать это сравнение.

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

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