2012-11-11 3 views
3

Наконец-то я даю Stash (версия 2.3.5 на EE 2.5.3), чтобы посмотреть, насколько он хорош, как все говорят.Пустой вывод с помощью Stash

я следовал документы столько, сколько я могу и настроить тайник в заголовке страницы следующим образом:

{exp:channel:entries channel="homepage" limit="1" dynamic="no"} 
{exp:stash:set_list name="homepage"} 
    {stash:cf_homepage_main_intro}{cf_homepage_main_intro}{/stash:cf_homepage_main_intro} 
    {stash:cf_homepage_strapline}{cf_homepage_strapline}{/stash:cf_homepage_strapline} 

    {cf_homepage_contact_info} 
     {stash:mx_pinterest}{mx_pinterest}{/stash:mx_pinterest} 
     {stash:mx_facebook}{mx_facebook}{/stash:mx_facebook} 
     {stash:mx_twitter}{mx_twitter}{/stash:mx_twitter} 
     {stash:mx_tel}{mx_tel}{/stash:mx_tel} 
     {stash:mx_email}{mx_email}{/stash:mx_email} 
     {stash:mx_address}{mx_address}{/stash:mx_address} 
    {/cf_homepage_contact_info} 
{/exp:stash:set_list} 
{/exp:channel:entries} 

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

{exp:stash:homepage:mx_tel} 

Однако я ничего не получаю.

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

* Stash: RETRIEVED домашняя страница: mx_email со значением *

Я немного не понимаю, куда идти отсюда.

Спасибо,

Карлы

+0

OK - теперь я использовал его для использования {exp: stash: set} и {exp: stash: get}, но все равно не повезло. {exp: stash: set name = "cf_homepage_main_intro"} {cf_homepage_main_intro} {/ exp: stash: set}, а затем {exp: stash: cf_homepage_main_intro} – madebyhippo

ответ

5

Ah! Я вижу в вашем вопросе, что вы пытаетесь вызвать вары из одного шаблона. Таким образом, вы столкнулись с проблемой порядка разбора. Вам нужно добавить параметр process="end" в теги exp:stash:get_list или exp:stash:get. И прочитайте мой article about template partials!

3

Хм, я думаю, что, может быть, у вас есть синтаксис ошибается. Попробуйте:

{exp:stash:get_list name="homepage"} 
    Telephone: {mx_tel} 
{/exp:stash:get_list} 

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

+0

Я следую инструкциям на https://github.com/croxton/ Stash/tree/dev, которые показывают, как это сделать, как указано выше. – madebyhippo

+0

Я согласен с этим ответом. – Natetronn

+1

Вышеприведенный ответ верен, насколько синтаксис, даже на dev. Синтаксис ярлыка не работает для списков. Однако неплохо продолжать использовать set_list; это позволяет вам сохранять вещи DRYer. – adrienne

2

{ехр: заначка: set_list имя = "Домашняя страница"} {ехр: Канал: Записи канала = "домашней страницы" предел = "1" динамический = "нет"}

это Имеет ли значение, что тайник находится внутри цикл, как и в parse order stuff, не придет первым?

+0

Не имеет значения в любом случае :( – madebyhippo

+0

Возможно, это комментарий к вопросу, а не отдельный «Ответ». – adrienne

3

При использовании set_list, append_list и prepend_list вам нужно использовать пару тегов get_list.

То, что вы используете, это ярлык Stash, который совпадает с типом: получите хотя и не то же самое, что и stash: get_list в соответствии с документами.

Использование get_list:

https://github.com/croxton/Stash/tree/dev#expstashget_list-tag-pair

не получить ярлык:

https://github.com/croxton/Stash/tree/dev#shortcut-tags (используется для набора/получения)

Кроме того, ярлык, который вы используете, на самом деле делает использование context :

{exp:stash:your_context:your_var_name} 

Примечание «your_context» в теге выше

+0

Итак, теперь я изменил логику в заголовке в следующем формате: { exp: stash: set name = "cf_homepage_main_intro"} {cf_homepage_main_intro} {/ exp: stash: set} , а затем с помощью {exp: stash: cf_homepage_main_intro} и его все еще не работает. – madebyhippo

+0

Я думаю, что вы все равно должны идти с set_list и вместо этого перейдите в get_list, как указано ниже. – Natetronn

3

Проблема была в том, что я пытался вызвать {get} в рамках одного и того же шаблона, поэтому после тега понадобился процесс = 'end'.

Кроме того, только для справки - это то, что я использую:

{exp:stash:set name="cf_homepage_main_intro"}{cf_homepage_main_intro}{/exp:stash:set} 

, а затем, чтобы получить, что отступать (с ярлыка тега):

{exp:stash:cf_homepage_main_intro process='end'} 

Работа Готово!

Смежные вопросы