Как передать переменную из ТДС в макет?

#
Как передать переменную из ТДС в макет?
Здравствуйте!
Пытаюсь передать переменную из ТДС одного узла структуры (/settings/) в макет другого узла (/page/), но не получается. Есть ли какие-то встроенные способы это сделать? Есть какой-то аналог Core_Page::instance()->libParams чтобы выцеплять параметры с любой структуры по id, а не текущей?
Константы не подходят. По задумке необходимо все параметры держать в одной ТДС.
Пробовал получить значение в (/settings/) и передать в сессию, а потом в макете (/page/) получить

$myvar = Core_Array::get(Core_Page::instance()->libParams, 'MYPARAM');
session_start();
$_SESSION['MYVAR'] = $myvar;
....
echo $_SESSION['MYVAR'];

Но в данном случае, насколько я понял, сессия не создаётся, ведь открывается другая структура. $GLOBALS["MYVAR"] и define("MYVAR", "myvalue" тоже ругаются на незаданный индекс, если я эти переменные в макете вызываю, хотя в (/settings/) они заданы.
Ускорение сайтов / Любые работы по сайту / Обращайтесь в nivaks-studio.ru
Модератор
#
Re: Как передать переменную из ТДС в макет?
nikolajgromkov,
Вам нужно просто в макете получить lib-опции какой-то определенной структуры?
Модератор
#
Re: Как передать переменную из ТДС в макет?
$aData = Core_Entity::factory('Structure', 123)->Lib->getDat(123);
print_r($aData);
#
Re: Как передать переменную из ТДС в макет?
hostcms,
Можно ли получить параметры из одного Виджета например Core_Array::get(Core_Page::instance()->widgetParams, 'phone' в другой виджет?
Что бы похожие параметры не создавать у виджетов.
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
#
Re: Как передать переменную из ТДС в макет?
hostcms писал(а):
$aData = Core_Entity::factory('Structure', 123)->Lib->getDat(123);
print_r($aData);


Потрясающе, спасибо! Объясните, пожалуйста, как это искать? Как узнать, что у фабрики структуры есть например возможность вызвать Lib, а у него в дальнейшем еще и getDat? Если искать по в гугле эти параметры, то ничего кроме этой темы форума не выдаст. Проблема была именно в том, что я не понимаю как искать это. Для XSL всё достаточно просто - открыл XML и смотри себе все теги, а как быть с классами? Документация API такой информации не даёт https://www.hostcms.ru/api6/class-Core_Entity.html.
Ускорение сайтов / Любые работы по сайту / Обращайтесь в nivaks-studio.ru
Модератор
#
Re: Как передать переменную из ТДС в макет?
nikolajgromkov,
в моделях настроены логические связи (1:1, 1:М, М:М), задаются они в начале моделей, например, у структуры заданы зависимости:
   /**
    * Belongs to relations
    * @var array
    */
   protected $_belongsTo = array(
      'structure' => array('foreign_key' => 'parent_id'),
      'structure_menu' => array(),
      'template' => array(),
      'document' => array(),
      'lib' => array(),
      'site' => array(),
      'user' => array(),
      'siteuser' => array(),
      'siteuser_group' => array(),
   );

см. https://www.hostcms.ru/api6/class-Structure_Model.html Также там есть связь hasMany.

Соответственно, чтобы получить Lib, связанную со структурой, у объекта структуры нужно просто написать Lib. Далее смотрим API у Lib

Почитайте про связи с примерами в разделе ORM
Связь один-ко-многим
Связь многие-ко-многим
Связь "belongs to"
Модератор
#
Re: Как передать переменную из ТДС в макет?
Seri,
widgetParams записывается перед вызовом каждого виджета
#
Re: Как передать переменную из ТДС в макет?
hostcms писал(а):
widgetParams записывается перед вызовом каждого виджета

Если это возможно можете дать пример? Спасибо.
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
Модератор
#
Re: Как передать переменную из ТДС в макет?
Seri,
нет-нет, это был не пример, а объяснение принципа. Перед генерацией каждого виджета данный массив перезаписывается данными, предназначенными для каждого конкретного виджета.
Авторизация