Переменные в Fenom
Помогите пожалуйста разобраться, скорее всего дело в типе переменных, вопрос в следующем:
Устанавливаю переменную в чанке, она не работает в шаблоне, это все на fenom, подробнее:
Устанавливаю в чанке — head, который вызываю вот так в шаблоне — {include 'head'} две переменные:
Понимаю что так как в чанке назначаются переменные, по этому не работает.
Неужели нужно все-время назначать переменные, в каждом чанке в шаблоне и в самом теле шаблона?
Это не будут лишние запросы?
Может не правильно задаю переменную или вызов не так делаю?
Устанавливаю переменную в чанке, она не работает в шаблоне, это все на fenom, подробнее:
Устанавливаю в чанке — head, который вызываю вот так в шаблоне — {include 'head'} две переменные:
{var $id = $_modx->resource.id}
{var $parent = $_modx->resource.parent}
В этом же чанке вызываю условие, которые работает как надо:{if $id|in:[122, 32, 125] || $parent |in:[122, 32, 125]}<link rel="stylesheet" href="/css/ecp.css">{/if}
А вот это условие уже в шаблоне, а не в чанке:{if $id == '6' || $parent |in:[6,7,94,65,29,106]} Действие 1 {else} Действие 2 {/if}
И это условие уже не отрабатывает.Понимаю что так как в чанке назначаются переменные, по этому не работает.
Неужели нужно все-время назначать переменные, в каждом чанке в шаблоне и в самом теле шаблона?
Это не будут лишние запросы?
Может не правильно задаю переменную или вызов не так делаю?
Комментарии: 6
setPlaceholder можно использовать
Да и проще использовать уже само $_modx->resource.id
Да и проще использовать уже само $_modx->resource.id
Спасибо за ответ, у меня в head получается 6 раз используется, не будет ли это громоздко использовать $_modx->resource.id много раз? Это не будет 6 запросов? Нагрузку не прибавит?
{if $id|in:[1, 5]}<link rel="stylesheet" href="/css/index.css">{/if}
{if $id == '2'}<link rel="stylesheet" href="/css/contact.css">{/if}
{if $id == '3' || $parent == '3'}<link rel="stylesheet" href="/css/pricedown.css">{/if}
{if $id == '5' || $parent == '5'}<link rel="stylesheet" href="/css/about.css">{/if}
{if $id|in:[122, 32, 125] || $parent |in:[122, 32, 125]}<link rel="stylesheet" href="/css/ecp.css">{/if}
{if $id == '6'}<link rel="stylesheet" href="/css/nanocad.css">{/if}
setPlaceholder — сейчас попробую разобраться с ним, спасибо)
в документации написано что {$_modx->resource} — массив с текущим ресурсом, так что запросов не будет
include подключает кусок кода и видит переменные только текущего шаблона, там где он вызывается.
Вариантов несколько:
Вариантов несколько:
- Назначить переменные в самом шаблоне перед всеми include
- Передать переменные в include:
{include "head" id=$id parent=$parent}
- Использовать тег insert вместо include(не проверял, но должно работать)
Спасибо, то что нужно
Сейчас вы в head напишите
неправильно работает в чанке footer?
Вот поэтому и не видны переменные за границами чанка. Ибо то, что вы хотите — это глобальные переменные, что не есть гуд.
Пользуйтесь $_modx->resource.id, это нормально, понятно, удобно.
Ну и setPlaceholder, когда это нужно.
{var $id = $_modx->resource.id}
а в чанке мм… допустим login вот так:{var $id = $_modx->user.id}
вопрос, сколько времени вы будете искать почему конструкция {$id}
неправильно работает в чанке footer?
Вот поэтому и не видны переменные за границами чанка. Ибо то, что вы хотите — это глобальные переменные, что не есть гуд.
Пользуйтесь $_modx->resource.id, это нормально, понятно, удобно.
Ну и setPlaceholder, когда это нужно.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.