Динамической переменной динамическое значение

Статус
В этой теме нельзя размещать новые ответы.

mbumba

Профессор
Регистрация
11 Апр 2007
Сообщения
232
Реакции
40
Извиняюсь если это уже где-то проскакивало, но при беглом поиске ничего не нашел.
Если делать так как написано в мануале, то все в порядке и все работает.
Код:
{assign_variable:rid="{segment_1}"}
{rid}
Но если мне нужно сохранить например id выведенной записи, то капздец. Не фурычит.
Код:
{exp:weblog:entries weblog='blogrecords' dynamic='off' limit='1'}
{assign_variable:rid="{entry_id}"}
{/exp:weblog:entries}
{rid}
Может кто знает как получить например entry_id выведенной записи вне конструкции {exp:weblog:entries}?
 
Извиняюсь если это уже где-то проскакивало, но при беглом поиске ничего не нашел.
Если делать так как написано в мануале, то все в порядке и все работает.
Код:
{assign_variable:rid="{segment_1}"}
{rid}
Но если мне нужно сохранить например id выведенной записи, то капздец. Не фурычит.
Код:
{exp:weblog:entries weblog='blogrecords' dynamic='off' limit='1'}
{assign_variable:rid="{entry_id}"}
{/exp:weblog:entries}
{rid}
Может кто знает как получить например entry_id выведенной записи вне конструкции {exp:weblog:entries}?
{segment_1} - Глобальная переменная блога и переопределить ее или присвоить ее значение другой - глобальной переменной шаблона не получится никак :(
Для того, чтобы получить те или иные значения записи вне exp:weblog:entries по текущему сегменту (сегментам) и без использования exp:query существуют многочисленные плагины...
Ну а если вам все же в итоге нужно решить задачу, подобную этой:
Для просмотра ссылки Войди или Зарегистрируйся - напишите импровизированный роутер в индексном шаблоне нужной вам группы шаблонов и подключайте туда все, что вам нужно в зависимости от необходимых условий и состояния строки URL...
 
{segment_1} - Глобальная переменная блога и переопределить ее или присвоить ее значение другой - глобальной переменной шаблона не получится никак :(
Очевидно вы просто невнимательно прочитали.
Мне не надо переопределять segment_1. Я говорю что такое присвоение работает (значение segment_1 присвоить динамической переменной rid). Не получается присвоить динамической переменной rid значение entry_id из секции {exp:weblog:entries}.
Для того, чтобы получить те или иные значения записи вне exp:weblog:entries по текущему сегменту (сегментам) и без использования exp:query существуют многочисленные плагины...
Не подкините ли ссылочку на плагины такого рода?
Ну а если вам все же в итоге нужно решить задачу, подобную этой:
Для просмотра ссылки Войди или Зарегистрируйся - напишите импровизированный роутер в индексном шаблоне нужной вам группы шаблонов и подключайте туда все, что вам нужно в зависимости от необходимых условий и состояния строки URL...
Это мой пост, там описывается та же задача что и здесь.
Общий "роутер", как вы его называете, как раз и описан в index, но мне то как раз нужно получить значение не в index а в одном из внедряемых шаблонов, и значение это будет использоваться в этом же шаблоне.

Для просмотра ссылки Войди или Зарегистрируйся - исходя из этого вроде как должно работать, но не работает.
Возможно ответ почему это не работает в фразе "Этот тег, один из самых первых тегов, обрабатываемых в шаблоне, так как он используется для назначения переменных внутри тегов EE".
Вопрос к знатокам: как тогда обойти эту проблему и вынести из секции {exp:weblog:entries} динамическую переменную с динамическим значением?
 
Откровенно не понятна задача.. можете объяснить "на пальцах".. что конкретно необходимо сделать ?
 
Общий "роутер", как вы его называете, как раз и описан в index, но мне то как раз нужно получить значение не в index а в одном из внедряемых шаблонов, и значение это будет использоваться в этом же шаблоне.

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

В общем случае, задача сводится к:
Вывести значение entry_id вне секции {exp:weblog:entries} в том же шаблоне в той же обработке парсером.


ИМХО, самое логичное в данной ситуации использовать динамические переменные. Но увы, так не работает. Очевидно парсер обрабатывает эти переменные до обработки всего шаблона.
Результат - такая конструкция не дает необходимого результата и вместо вывода значения выводит строку "{entry_id}".
Код:
{exp:weblog:entries weblog='blogrecords' dynamic='off' limit='1'}
{assign_variable:my_var="{entry_id}"}
{/exp:weblog:entries}
{my_var} {!-- выведет просто текстовую строку "{entry_id}", но не цифровое значение --}
Решения которые использовались до сих пор - это повторное использование секции {exp:weblog:entries} или использование прямых SQL запросов.
При помощи конструкции {assign_variable} мне к сожалению не удалось это сделать.
Как посоветовали в Для просмотра ссылки Войди или Зарегистрируйся, можно использовать плагин для работы с сессиями, но этот способ позволит передать динамическую переменную для следующего раза, когда будет обрабатываться этот (или другой) шаблон. Аналогом было бы передавать например через POST.
Может кто-то использовал для решения аналогичной задачи иные (кроме указанных 3-х) способы?
 
Давайте все по порядку:
A. По какому критерию вам нужно получить entry_id?
 
Давайте все по порядку:
A. По какому критерию вам нужно получить entry_id?
Это не совсем критерий - мини алгоритм:
если segment_2==NULL, то вывести последнюю запись в блоге;
если segment_2!=NULL, тогда запись, где entry_id=segment_2;
в другой части шаблона подсветить выведенную запись в списке всех записей.


самым логичным было бы использовать {assign_variable}, как в шаблонах SMARTY, но тут такой подход не сработал.
 
В таком случае в группе должно быть как минимум три шаблона:
1. index - не отображает ничего, содержит логику, которая позволяет вставлять (инклюдить, подключать) другие шаблоны в зависимости от состояния строки URL.

2. entry - подключается к индексному шаблону в случае segment_2!=NULL.
Выводит единственную запись при помощи конструкции exp:weblog:entries,
используя в качестве критерия выборки значение segment_2.

3. last_entry - подключается к индексному шаблону в случае segment_2=NULL.
Выводит единственную запись при помощи конструкции exp:weblog:entries, использую в качестве критерия дату записи или ее entry_id (max значение для указанного в параметрах названия блога).

Подсветить текущую запись в списке без использования доп. запросов можно только для шаблона entry.
 
В таком случае в группе должно быть как минимум три шаблона:
1. index - не отображает ничего, содержит логику, которая позволяет вставлять (инклюдить, подключать) другие шаблоны в зависимости от состояния строки URL.
2. entry - подключается к индексному шаблону в случае segment_2!=NULL.
Выводит единственную запись при помощи конструкции exp:weblog:entries,
используя в качестве критерия выборки значение segment_2.
3. last_entry - подключается к индексному шаблону в случае segment_2=NULL.
Выводит единственную запись при помощи конструкции exp:weblog:entries, использую в качестве критерия дату записи или ее entry_id (max значение для указанного в параметрах названия блога).
Подсветить текущую запись в списке без использования доп. запросов можно только для шаблона entry.
Ну собственно так и работает, кроме пункта 3. Не вижу смысла создавать дополнительный шаблон, если все решает +1 дополнительное условие.
Пока писал ответ в голову пришла идея как можно подсветить запись для шаблона last_entry.
Может кому-то пригодиться.
Достаточно в нем создать для списка записей не одну конструкцию exp:weblog:entries, а две.
В первой конструкции (с лимитом=1) как раз и будет подсвечиваться запись.
Во второй конструкции (используя offset="1") будут выведены все записи начиная со следующей.
Это некий средний вариант без использования дополнительных sql запросов или дополнительных проверок в конструкции exp:weblog:entries
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху