Magento: как мне получить доступ к пользовательским переменным в PHP? - PullRequest
18 голосов
/ 03 июня 2011

Мне известны «Пользовательские переменные» и как их можно использовать с {{}} скобками в шаблонах электронной почты, а также в статических блоках.

Однако я хочу использовать их в коде шаблона, т.е. view.phtml.

Я хочу иметь возможность получить доступ к «обычному значению переменной» для получения значения преобразования, то есть числа / строки в качестве числа для данного «кода переменной».

Ответы [ 6 ]

31 голосов
/ 03 июня 2011

Я делал это в течение некоторого времени, чтобы создавать различные сообщения, которые можно редактировать через интерфейс администратора, поэтому мне не нужно копаться в коде, когда меняется момент.

Для доступа к обычное значение пользовательской переменной с кодом custom_variable_code используйте это:

Mage::getModel('core/variable')->loadByCode('custom_variable_code')->getValue('plain');

ПРИМЕЧАНИЕ: В одном магазине не отображается выпадающий список выбора магазинадля переменной области.Этот ответ не является технически правильным, чтобы быть уверенным в завтрашнем дне в случае наличия нескольких магазинов -> Пожалуйста, посмотрите ответ @Mark van der Sanden ниже и выскажите ему свое мнение.

30 голосов
/ 02 августа 2013

К сожалению, все остальные ответы не на 100% верны. Используйте его следующим образом (обратите внимание на setStoreId(), чтобы получить значение для правильного представления магазина):

$value = Mage::getModel('core/variable')
    ->setStoreId(Mage::app()->getStore()->getId())
    ->loadByCode('variable_code')
    ->getValue('text');

Или получить значение html:

$value = Mage::getModel('core/variable')
    ->setStoreId(Mage::app()->getStore()->getId())
    ->loadByCode('variable_code')
    ->getValue('html');

Если значение html не определено, getValue() возвращает текстовое значение, если вы запрашиваете значение html.

10 голосов
/ 03 июня 2011

Stackoverflow снова почти на помощь.Подумал, что это будет так:

Установка глобальной переменной в Magento, с помощью графического интерфейса?

Но это не так, это было:

  $angle = Mage::getModel('core/variable')->loadByCode('angle')->getData('store_plain_value');
1 голос
/ 15 апреля 2014

// Чтобы получить значение TEXT пользовательской переменной:

Mage::getModel('core/variable')->setStoreId(Mage::app()->getStore()->getId())->loadByCode('custom_variable_code')->getValue('text');

// Чтобы получить значение HTML пользовательской переменной:

Mage::getModel('core/variable')->setStoreId(Mage::app()->getStore()->getId())->loadByCode('custom_variable_code')->getValue('html');

// Идентификатор магазинанастраивается как пользовательские переменные, которые можно редактировать для нескольких магазинов

1 голос
/ 03 июня 2011

Единственный способ, которым я вижу, это добиться, если у вас есть метод в блоке шаблонов, который выдаст нужный результат.

Например, скажем, в шаблоне view.phtml у вас есть следующий код:

<div id="title_container">
    <h2><?= $this->getTitle(); ?></h2>
</div>

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

Просто для пояснения, блок является переменной $ this

Если вы не уверены, каково фактическое имя класса вашего блока, вы можете сделать что-то вроде:

Mage::log(get_class($this));

в var / log / system.log вы напечатаете класс блока этого шаблона.

Это лучший способ.

HTH:)

0 голосов
/ 14 июля 2016

Примечание: настраиваемая переменная может иметь разные значения для разных хранилищ.

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

Используйте это:

$storeId = Mage::app()->getStore()->getId();

  $custom_variable_text = Mage::getModel('core/variable')->setStoreId($storeId)
                          ->loadByCode('custom_variable_code')
                          ->getValue('text');

  $custom_variable_plain_value = Mage::getModel('core/variable')->setStoreId($storeId)
                                ->loadByCode('custom_variable_code')
                                ->getValue('plain');

  $custom_variable_html_value = Mage::getModel('core/variable')->setStoreId($storeId)
                                ->loadByCode('custom_variable_code')
                                ->getValue('html');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...