Je connais les 'variables personnalisées' et leur utilisation avec des {{}} crochets dans les modèles de courrier électronique ainsi que dans les blocs statiques.
Cependant, je souhaite les utiliser dans le code de modèle, à savoir view.phtml.
Je veux pouvoir accéder à la «valeur simple variable» pour récupérer une valeur de conversion, c'est-à-dire un nombre/une chaîne en tant que nombre pour un «code de variable» donné.
Je fais cela depuis un certain temps pour créer divers messages modifiables via l'interface d'administration, de sorte que je n'ai pas à fouiller dans le code lorsque le goût du moment change.
Pour accéder à la valeur plain de la variable personnalisée avec le codecustom_variable_code
, utilisez ceci:
Mage::getModel('core/variable')->loadByCode('custom_variable_code')->getValue('plain');
REMARQUE: Magasin unique n'affiche pas la liste déroulante de sélection de magasin pour la portée de la variable. Cette réponse n’est pas techniquement correcte, afin de vous préparer au cas où vous auriez plusieurs magasins.
Malheureusement, toutes les autres réponses ne sont pas correctes à 100%. Utilisez-le comme ceci (notez la setStoreId()
pour obtenir la valeur de la vue magasin correcte):
$value = Mage::getModel('core/variable')
->setStoreId(Mage::app()->getStore()->getId())
->loadByCode('variable_code')
->getValue('text');
Ou pour obtenir la valeur html:
$value = Mage::getModel('core/variable')
->setStoreId(Mage::app()->getStore()->getId())
->loadByCode('variable_code')
->getValue('html');
Si aucune valeur html n'est définie, getValue()
renvoie la valeur textuelle si vous demandez la valeur html.
Stackoverflow presque à la rescousse à nouveau. Je pensais que ce serait ça:
Définition d'une variable globale dans Magento, à l'aide d'une interface graphique?
Mais ce n'était pas, c'était:
$angle = Mage::getModel('core/variable')->loadByCode('angle')->getData('store_plain_value');
La seule façon dont je vois que vous pouvez y parvenir est d’avoir une méthode dans le bloc de modèles, qui produira le résultat souhaité.
Par exemple, dans le template view.phtml, vous avez le code suivant:
<div id="title_container">
<h2><?= $this->getTitle(); ?></h2>
</div>
La fonction peut représenter votre code de variable et toute logique liée à ce qui est affiché dans le titre doit être placée dans le bloc.
Juste pour clarifier, le bloc est la variable $ this
Si vous n'êtes pas sûr du nom de classe réel de votre bloc, vous pouvez faire quelque chose comme:
Mage::log(get_class($this));
dans var/log/system.log, vous imprimerez la classe du bloc de ce modèle.
C'est le meilleur moyen.
HTH :)
// Pour obtenir la valeur TEXT de la variable personnalisée:
Mage::getModel('core/variable')->setStoreId(Mage::app()->getStore()->getId())->loadByCode('custom_variable_code')->getValue('text');
// Pour obtenir la valeur HTML de la variable personnalisée:
Mage::getModel('core/variable')->setStoreId(Mage::app()->getStore()->getId())->loadByCode('custom_variable_code')->getValue('html');
// L'identifiant du magasin est défini comme variables personnalisées pouvant être modifiées pour plusieurs magasins.
Remarque: une variable personnalisée peut avoir des valeurs différentes pour différents magasins.
Donc, pour accéder à stocker une valeur spécifique pour la variable personnalisée avec le codecustom_variable_code
Utilisez ceci:
$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');