Jump to content

Recommended Posts

Народ помогите, облазил форум и документацию, но не нашел, как посмотреть значения переменных в шаблоне. Единственное, что накопал {$settings|var_dump}

Меня интересует, что-то вроде {get_template_vars} - вывод всех значений переменных из шаблона, но к сожалению в Simpla не работает.

Наверняка есть зарезервированные переменные типа {title}, {title_page} {head}, как узнать полный список?

Link to post
Share on other sites

Зарегистрированных нет, кроме непосредственно зарезервированных smarty. Все переменные, передаваемые в шаблон объявляются в обработчиках (IndexView.php, ProductsView.php, IndexAdmin.php и т.д.) Значение в этих переменных можно посмтореть просто написав ее в шаблоне, типа {$title}. Если в переменной массив, то можно так {print_r({$my_array})}

Link to post
Share on other sites

в любом нужном  шаблоне пишем {debug} 

И после будет открываться всплывающее окно со всеми переменными что передаются в шаблон 

Link to post
Share on other sites

Спасибо, воспользовался {debug}, помогает.

А как мне значение переменной, к примеру {$meta_title} передать в PHP, для того чтобы с ним работать в /root/index.php?

Link to post
Share on other sites

Передать - никак.

 

Если оно было ранее записано в шаблон посредством design->assign, то получить можно через

$mt = $this->design->get_var('meta_title');

 

Скорее всего, Вы занимаетесь изобретением (кривого) велосипеда.  Если бы Вы привели подробности своей задачи, то скорее получили бы совет, который бы облегчил Ваши нелегкие труды...

Edited by Kors
Link to post
Share on other sites

Передать - никак.

 

Если оно было ранее записано в шаблон посредством design->assign, то получить можно через

$mt = $this->design->get_var('meta_title');

 

Скорее всего, Вы занимаетесь изобретением (кривого) велосипеда.  Если бы Вы привели подробности своей задачи, то скорее получили бы совет, который бы облегчил Ваши нелегкие труды...

 

Есть скрипт, учитывающий статистику посещения сайта. Скрипт работает на PHP. Часть кода этого скрипта помещается в php-файл, например index.php. В эту часть кода ему нужно передать НАЗВАНИЕ СТРАНИЦЫ.

 

Т.е. выдернуть из CMS {meta_title} и передать это значение скрипту.

 

На CMS Simple Made это делается приблизительно так:

 

$captured_content = $gCms->smarty->get_template_vars('captured_content');

 

А здесь что-то никак не разберусь, {get_template_vars} ничего не показывает, существующие переменные через {debug} приходится смотреть.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

Другой вариант - вставить в шаблон PHP-код, но где разрешить это действие в конфигурации я пока тоже не нашел. По дефолту конструкция {php}..........{/php} не работает :(

Edited by legko
Link to post
Share on other sites

Есть скрипт, учитывающий статистику посещения сайта. Скрипт работает на PHP. Часть кода этого скрипта помещается в php-файл, например index.php. В эту часть кода ему нужно передать НАЗВАНИЕ СТРАНИЦЫ.

 

Т.е. выдернуть из CMS {meta_title} и передать это значение скрипту.

 

На CMS Simple Made это делается приблизительно так:

 

$captured_content = $gCms->smarty->get_template_vars('captured_content');

 

А здесь что-то никак не разберусь, {get_template_vars} ничего не показывает, существующие переменные через {debug} приходится смотреть.

 

а почему вы не можете этот скрипт разместить в View ?

Link to post
Share on other sites

а почему вы не можете этот скрипт разместить в View ?

 

Спасибо, попробовал, но echo $meta_title; ничего не показывает (значит не считывает значение из CMS), хотя echo "AAAAAAA"; из файла View.php принтуется нормально.

Я так понимаю, что значение переменной $meta_title все-равно нужно вытаскивать как-то так:

$smarty->tpl_vars


... чего дальше еще не разобрался

 

=========================

 

UPD: не View.php не подходит, на главной странице получаю $meta_title, на других страницах нет.

Edited by legko
Link to post
Share on other sites

Спасибо, попробовал, но echo $meta_title; ничего не показывает (значит не считывает значение из CMS), хотя echo "AAAAAAA"; из файла View.php принтуется нормально.

Я так понимаю, что значение переменной $meta_title все-равно нужно вытаскивать как-то так:

$smarty->tpl_vars


... чего дальше еще не разобрался

 

вы также можете включить пхп код в шаблон с помощью тегов: {php}код{/php}.

 

если у вас версия ниже 2.3.5, нужно включить поддержку php в шаблоне - Smarty/libs/Smarty.class.php найти public $allow_php_tag и поставить в true.

 

чтобы включить поддержку в симпла >=2.3.5 идем в api/Design.php

4я строка меняем на 

require_once(dirname(dirname(__FILE__)).'/Smarty/libs/SmartyBC.class.php');

15ю строчку на 

$this->smarty = new SmartyBC()

и уже дальше поставить флаг $allow_php_tag=true в Smarty/libs/Smarty.class.php найти public $allow_php_tag

Link to post
Share on other sites

index.php перед строкой:

// Отладочная информация

делаем:

$myvar = $view->design->get_var('meta_title');
var_dump($myvar);

И дальше уже вставляете свой код и в него переменную $myvar

Edited by yr4ik
Link to post
Share on other sites
  • 2 years later...

в любом нужном  шаблоне пишем {debug} 

И после будет открываться всплывающее окно со всеми переменными что передаются в шаблон 

Ребят подскажите гв каком именно файле прописывать debug или print_r()

И как выводить их, то есть какой адрес указывать в браузере?

И в чём между ними разница?

 

У меня задача посмотреть какие переменные я могу использовать в шаблоне для seo - title description keywords и h1

хочу цену вытащить и одну из характеристик товара но не нашёл этих переменных

Link to post
Share on other sites

Ребят подскажите гв каком именно файле прописывать debug или print_r()

И как выводить их, то есть какой адрес указывать в браузере?

И в чём между ними разница?

 

У меня задача посмотреть какие переменные я могу использовать в шаблоне для seo - title description keywords и h1

хочу цену вытащить и одну из характеристик товара но не нашёл этих переменных

 

{debug} пишите в любом месте нужного вам файла шаблона (как я понимаю вам нужен product.tpl). И там всплевет окно со всеми переданными в шаблон переменными.

 

print_r и var_dump  служат для вывода значения уже известно переменной  (Пример: {$product|var_dump} ) писать их нужно так же в нужных шаблонах.

 

цена будет: {$product->variant->price} (это цена основного варианта). Для свойств - потребуется делать перебор через foreach

Edited by yr4ik
Link to post
Share on other sites

Большое в

 

{debug} пишите в любом месте нужного вам файла шаблона (как я понимаю вам нужен product.tpl). И там всплевет окно со всеми переданными в шаблон переменными.

 

print_r и var_dump  служат для вывода значения уже известно переменной  (Пример: {$product|var_dump} ) писать их нужно так же в нужных шаблонах.

 

цена будет: {$product->variant->price} (это цена основного варианта). Для свойств - потребуется делать перебор через foreach

Большое вам спасибо за разъяснение.
Уже научился смотреть переменные через debug
И за цену отдельно спасибо - всё работает.

Только пока ешё принцип вытаскивания переменной не совсем понятен..
пытался вытянуть переменную характеристики таким образом
{$product->value->features->0->name}

но эт я погорячился :) 
так не работает

а foreach я ещё не освоил..
как я понимаю это надо делать в другом файле..

Link to post
Share on other sites
  • 4 months later...

Доброго времени суток. Почта Банк дал скрипт, и вот чото не могу осилить передачу ему стоимости товара... Simpla 2.3.6
Сам скрипт выглядит так:

<div id="pos-credit-container"></div><script src="https://my.pochtabank.ru/sdk/v1/pos-credit.js" type="text/javascript"></script><script type="text/javascript">// <![CDATA[
  var options = {
  ttCode: 'тут код точки',
  ttName: 'тут ее адрес',
  fullName: '',
  phone: '',
  manualOrderInput: false,
  order: [
  {
  price: вот тут должна быть стоимость, в симпле она в переменной {$product->variant->price}
  }
  ]
};
window.PBSDK.posCredit.mount('#pos-credit-container', options);

  // подписка на событие завершения заполнения заявки
  window.PBSDK.posCredit.on('done', function(id){
  console.log('Id заявки: ' + id)
  });

  // При необходимости можно убрать виджет вызвать unmount
  // window.PBSDK.posCredit.unmount('#pos-credit-container');
// ]]></script>

Подскажите, пжлс!

Link to post
Share on other sites

Подскажите, пжлс!

 

Так в чем проблема? Так и пишите 

price: '{$product->variant->price}'

 

Если у вас код в отдельном файле, создайте переменную 

<script>
var price = '{$product->variant->price}';
</script>

а в скрипте пишите

price: price
Link to post
Share on other sites

 

Так в чем проблема? Так и пишите 

price: '{$product->variant->price}'

 

Если у вас код в отдельном файле, создайте переменную 

<script>
var price = '{$product->variant->price}';
</script>

а в скрипте пишите

price: price

Вот в том-то и дело, что order: [

         {

           price: '{$product->variant->price}'

         }

         ]

};

не работает, банковский модуль просто не выводится. Если ему передавать order: [

         {

           price: 200

         }

         ]

};

то все работает, а с переменной не хочет.

Link to post
Share on other sites

Вот в том-то и дело, что order: [

         {

           price: '{$product->variant->price}'

         }

         ]

};

не работает, банковский модуль просто не выводится. Если ему передавать order: [

         {

           price: 200

         }

         ]

};

то все работает, а с переменной не хочет.

 

Во-первых, такое  может сработать только в файле .tpl.  Где у Вас это делается, неизвестно.

Во-вторых, чтобы сработало в файле .tpl, в него заранее должны быть переданы нужные данные.

В-третьих, Ваш фрагмент явно неверный, так как товаров, вообще говоря, в заказе несколько, а у Вас указывается всегда один...

Link to post
Share on other sites

Редактирую файл product.tpl через Шаблоны у админки. Должно сработать? Так как это шаблон вывода одного конкретного товара, то товар в заказе должен быть один (передаю в банк не корзину, а конкретный товар). "в него заранее должны быть переданы нужные данные." - если переменную {$product->variant->price} вставляю просто в код, то она вводится. В теле скрипта - не работает. ЧЯДНТ?

 




 


   
Link to post
Share on other sites

Редактирую файл product.tpl через Шаблоны у админки. Должно сработать? Так как это шаблон вывода одного конкретного товара, то товар в заказе должен быть один (передаю в банк не корзину, а конкретный товар). "в него заранее должны быть переданы нужные данные." - если переменную {$product->variant->price} вставляю просто в код, то она вводится. В теле скрипта - не работает. ЧЯДНТ?

 

Почти все ДНТ.

 

Проблему описываете кое-как, обрывками, в стиле "Я вставляю вот это в КАКОЙ-ТО файл в КАКОЕ-ТО место". Тем самым пустяковый вопрос превращаете в сложную проблему...

 

Если жалко выложить  все подробности, то продолжайте вставлять. Сначала вставляйте после в 1-ой строки и смотрите результат. Если не решится вопрос, то пробуйте послк 2-ой, затем после 3-ей и т. д.  Когда закончите, можно будет начать сначала, вставлять внутрь строки после N-го символа для всех имеющих смысл значений N. Потом пишете длинный-предлинный отчет...

 

Причин может быть много разных. Например, причина может быть подобно такой

http://forum.simplacms.ru/topic/11766-микроразметка-для-google/?p=105101

 

И гадать можно долго...

Edited by phukortsin
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...