Искать  
 
   
1 из 2
1
Динамической переменной динамическое значение :)
Отправлено: 30 Апрель 2010 11:53 A.M.   [ Игнорировать ]
Новичок
Rank
Всего сообщений:  18
Зарегистрирован  2009-07-27

Извиняюсь если это уже где-то проскакивало, но при беглом поиске ничего не нашел.
Если делать так как написано в мануале, то все в порядке и все работает.

{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}?

Профиль
 
 
Отправлено: 30 Апрель 2010 02:33 P.M.   [ Игнорировать ]   [ # 1 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  1423
Зарегистрирован  2007-12-27

Вы описали лишь кусок задачи. Опишите ВСЁ. Для чего это вам нужно и что хотите получить?

 Подпись 

ExpressionEngine - SEO-ориентированный движок

Профиль
 
 
Отправлено: 30 Апрель 2010 02:46 P.M.   [ Игнорировать ]   [ # 2 ]
Студент
Avatar
RankRank
Всего сообщений:  142
Зарегистрирован  2008-01-02

Только вчера это делал. Тоже не работало, не стал парится, а сделал это

{exp:query sql="SELECT entry_id FROM exp_weblog_titles WHERE url_title = '{segment_1}'"}
{entry_id}
{
/exp:query} 
Профиль
 
 
Отправлено: 30 Апрель 2010 02:58 P.M.   [ Игнорировать ]   [ # 3 ]
Sr. Member
RankRankRankRank
Всего сообщений:  987
Зарегистрирован  2008-09-27

Правильно) У ЕЕ очень удобная структура БД и ооочень многое можно сделать запросами, порой я даже не использую стандартные тэги, а вывожу запросами, так и оптимизированней и можно связать слоджным запросом сразу несколько таблиц и вытянуть что нужно

Профиль
 
 
Отправлено: 30 Апрель 2010 03:10 P.M.   [ Игнорировать ]   [ # 4 ]
Новичок
Rank
Всего сообщений:  18
Зарегистрирован  2009-07-27
Станислав - 30 Апрель 2010 02:33 P.M.

Вы описали лишь кусок задачи. Опишите ВСЁ. Для чего это вам нужно и что хотите получить?

Задача.

В левой части выводится запись (segment_2) блога (segment_1).
if segment_2==NULL вывести последнюю запись
else вывести запись соответствующую segment_2

В правой части выводиться список всех записей. Текущая запись соотв выделена.

В случае если segment_2!=NULL, то все нормально и не требуется назначение динамической переменной.
Если же segment_2==NULL, то запись не выделяется и необходим способ передачи entry_id из первой секции {exp:weblog:entries} во вторую.

Обойти можно несколькими способами, но все эти способы через зад (sql, доп проход и др.)

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

Сторонникам SQL:
При помощи SQL можно сделать очень много, и некоторые вещи которые нельзя реализовать другими средствами я тоже реализовываю через SQL, но хочется просто сделать стандартными тэгами.

Профиль
 
 
Отправлено: 02 Май 2010 12:51 A.M.   [ Игнорировать ]   [ # 5 ]
Sr. Member
Avatar
RankRankRankRank
Всего сообщений:  463
Зарегистрирован  2009-08-07

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

 Подпись 

Ум - как бюст: надо иметь, но выпячивать не стоит
SSD Cloud Hosting

Профиль
 
 
Отправлено: 04 Май 2010 01:02 P.M.   [ Игнорировать ]   [ # 6 ]
Новичок
Rank
Всего сообщений:  18
Зарегистрирован  2009-07-27
Николай - 02 Май 2010 12:51 A.M.

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

Нет, этот способ подойдет только в случае передачи значения следующей обработке этого-же шаблона (другой запуск парсера), не совсем то.

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

Задачи которые бы позволил решать метод {assign_variable}, достаточно обширны, и многие моменты решались бы гораздо проще чем сейчас.
Но к сожалению, очевидно, парсер EE обрабатывает конструкцию {assign_variable} до обработки всего шаблона, и данная конструкция не работает для динамического присвоения каких либо значений, только статика известная на момент создания шаблона.

Все известные мне методы сохранения динамических значений в процессе обработки шаблона на данный момент достаточно избыточны.
Перечислю:
1. Использование прямых sql запросов
2. Использование повторной конструкции, например {exp:weblog:entries}
3. Использование пространства переменных php, например сессии (можно использовать только для передачи при последующем запуске парсера).

Может кто-то использовал другие способы для решения аналогичной задачи?

Профиль
 
 
Отправлено: 11 Октябрь 2010 10:39 A.M.   [ Игнорировать ]   [ # 7 ]
Новичок
Rank
Всего сообщений:  61
Зарегистрирован  2010-10-05

На этот вопрос так и нет ответа? Попробую описать свою похожую проблему:

Имеем вывод объекта:
{exp:weblog:entries site=“ru” weblog=“catalogue” require_entry=“yes” status=“for_sale|sold|pended|open” show_future_entries=“yes” show_expired=“yes” rdf=“off” limit=“1”}{/exp:weblog:entries}

Ниже хотим сделать запрос и найти похожие объекты по некоторым параметрам:
{exp:query sql=”“}{/exp:query}

Как параметры из {exp:weblog:entries} передать в {exp:query sql=”“}

Хотелось сделать нечто в таком духе:

{exp:weblog:entries site=“ru” weblog=“catalogue” require_entry=“yes” status=“for_sale|sold|pended|open” show_future_entries=“yes” show_expired=“yes” rdf=“off” limit=“1”}
<?php
  $param1 = “{field_id_46}”;
?>
{/exp:weblog:entries}

И использовать:
{exp:query sql=“SELECT * FROM table WHERE param = ’” .$param1. ‘“}{/exp:query}

Но это не работает:
<?php
  $param1 = “{field_id_46}”;
?>

spambox - 04 Май 2010 01:02 P.M.

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

Профиль
 
 
Отправлено: 11 Октябрь 2010 11:31 A.M.   [ Игнорировать ]   [ # 8 ]
Member
RankRankRank
Всего сообщений:  172
Зарегистрирован  2010-07-13

reeposition

 Подпись 

booooring…

Профиль
 
 
Отправлено: 11 Октябрь 2010 11:58 A.M.   [ Игнорировать ]   [ # 9 ]
Новичок
Rank
Всего сообщений:  61
Зарегистрирован  2010-10-05

Это не ответ )

Профиль
 
 
Отправлено: 11 Октябрь 2010 11:59 A.M.   [ Игнорировать ]   [ # 10 ]
Member
RankRankRank
Всего сообщений:  172
Зарегистрирован  2010-07-13

если хорошо подумать, то очень даже ответ.
как минимум можно поместить query внутрь веблога, а результат куда нужно репозиционировать...

 Подпись 

booooring…

Профиль
 
 
Отправлено: 11 Октябрь 2010 12:22 P.M.   [ Игнорировать ]   [ # 11 ]
Новичок
Rank
Всего сообщений:  61
Зарегистрирован  2010-10-05

{exp:reeposition}
{exp:weblog:entries site=“ru” weblog=“catalogue” require_entry=“yes” status=“for_sale|sold|pended|open” show_future_entries=“yes” show_expired=“yes” rdf=“off” limit=“1”}
{reeposition:item id=“1”}{param1}{/reeposition:item}
{/exp:weblog:entries}

{exp:query sql=“SELECT * FROM table WHERE param = ’{reeposition:put_item id=“1”}’”}{/exp:query}
{/exp:reeposition}

Что то в этом роде?

Профиль
 
 
Отправлено: 11 Октябрь 2010 12:29 P.M.   [ Игнорировать ]   [ # 12 ]
Member
RankRankRank
Всего сообщений:  172
Зарегистрирован  2010-07-13

ну это второй вариант, но тут надо смотреть по порядкам парсинга

то что я предлагал:

{exp:reeposition}
{exp
:weblog:entries site=“ru” weblog=“catalogue” require_entry=“yes” status=“for_sale|sold|pended|open” show_future_entries=“yes” show_expired=“yes” rdf=“off” limit=“1”}

{reeposition
:item id=“1”}
{exp
:query sql=“SELECT FROM table WHERE param ’{param1}’”}{/exp:query}
{
/reeposition:item}

{
/exp:weblog:entries}

 {reeposition
:put_item id=“1”}

{
/exp:reeposition} 

у тебя только одна запись в веблоге выводится, так что с точки зрения нагрузки такой вариант допустим - не выховет роста query запросов

 Подпись 

booooring…

Профиль
 
 
Отправлено: 11 Октябрь 2010 12:35 P.M.   [ Игнорировать ]   [ # 13 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  1423
Зарегистрирован  2007-12-27

ну или можно использовать вложенные шаблоны например {embed=“group_template/template” rid={entry_id}}

 Подпись 

ExpressionEngine - SEO-ориентированный движок

Профиль
 
 
Отправлено: 11 Октябрь 2010 12:39 P.M.   [ Игнорировать ]   [ # 14 ]
Новичок
Rank
Всего сообщений:  61
Зарегистрирован  2010-10-05

Не работает (
              {reeposition:item id=“query”}
                {exp:query sql=“SELECT * FROM exp_weblog_data WHERE entry_id =’{entry_id}’”}
                  {if no_results} <td>Поиск не дал результата</td>{/if}
                  {entry_id}
                {/exp:query}
              {/reeposition:item}

Ни в какую не хочет выводить

Да, думаю вложенные шаблоны будет лучшим решением )

Профиль
 
 
Отправлено: 11 Октябрь 2010 12:49 P.M.   [ Игнорировать ]   [ # 15 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  1423
Зарегистрирован  2007-12-27

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

 Подпись 

ExpressionEngine - SEO-ориентированный движок

Профиль
 
 
   
1 из 2
1