php - know - Establecer una variable global en Magento, la forma de GUI?
ubuntu know timezone (5)
Recientemente comencé a usar Magento para la tienda web de un cliente, y todavía necesito entender sus sistemas.
La tienda en línea debe tener varios enlaces y también obtener información de otro dominio, donde se encuentra el sitio web corporativo. Preferiría no codificar el nombre de dominio o la URL, sino definirla en algún lugar y usar ese valor en las plantillas phtml en toda la tienda web. Esto hace que sea fácil ajustarlo cuando movemos el sitio entre las URL de desarrollo, en etapas y de producción.
¿Alguien puede sugerir la manera Magento de hacer esto? Preferiblemente, podríamos agregar un campo a la GUI de configuración de la tienda en el backend, similar a la forma en que se establece {{base_url}}. ¿O tal vez estoy pensando de la manera incorrecta?
La manera más fácil sería agregar un nodo al archivo core config xml de magento. Pero eso no es recomendable ya que causará problemas con las actualizaciones. Para establecer valores personalizados sin editar el núcleo ... revisa este enlace
Soy demasiado nuevo para agregar un comentario a la respuesta de Alan, pero aquí hay más información de Magento:
- XML for Admin Configurations - "Este documento describe cómo definir campos para el uso de su módulo en la sección de Configuración".
-Ed.
Magento ofrece soporte (relativamente) fácil para valores de configuración personalizados. La mejor manera que he encontrado para lograr esto es crear un único módulo magento que contenga todos sus valores de configuración personalizados.
Como cualquier cosa de Magento, hay muchos pasos, y cualquiera que esté equivocado podría hacerte tropezar (¡o a mí!).
Crear un módulo de Magento vacío
Primero, querrá configurar un módulo magento para mantener todos sus valores de configuración personalizados. Crear un módulo magento involucra
- Crea un archivo xml en la aplicación / etc / modules
- Crear una estructura de carpetas en la aplicación / code / local / Companyname
Companyname es una cadena única que sirve como espacio de nombres, y la mayoría de los tutoriales de magento recomiendan que use el nombre de su compañía aquí. Para los propósitos de este tutorial, usaré "". Donde quiera que vea la cadena , reemplácela con su propia cadena única.
Por lo tanto, para el paso 1, cree un archivo en la aplicación / etc / modules llamada "_Customconfig.xml" y coloque lo siguiente en el interior
<?xml version="1.0"?>
<config>
<modules>
<_Customconfig>
<active>true</active>
<codePool>local</codePool>
</_Customconfig>
</modules>
</config>
Consejo aleatorio de Magento: hay partes del sistema magento que consideran que el espacio en blanco es significativo, por lo que siempre es mejor no incluir espacios en blanco con los valores de sus atributos (<activo> verdadero </ activo> frente a <activo> verdadero </ activo>
A continuación, crea la siguiente carpeta
mkdir app/code/local//Customconfig
mkdir app/code/local//Customconfig/etc
Y crea un archivo en
app/code/local//Customconfig/etc/config.xml
con los siguientes contenidos
<?xml version="1.0"?>
<config>
<modules>
<_Customconfig>
<version>0.1.0</version>
</_Customconfig>
</modules>
</config>
Felicidades, acabas de configurar un nuevo Módulo de Magento. Si borra su caché magento y va a
System -> Configuration -> Advanced -> Disable Modules Output
Debería ver su módulo en la lista.
Agregue un archivo System.xml a su módulo
A continuación, vamos a agregar un archivo system.xml. Este archivo se utiliza para agregar un valor de configuración personalizado a magento, que podrá tomar en cualquier lugar que desee durante el ciclo de solicitud de magento. Agrega un archivo en
app/code/local//Customconfig/etc/system.xml
Eso contiene lo siguiente
<config>
<sections>
<design>
<groups>
<my_or_their_group translate="label">
<label>A grouping of config values. Make your own, or us an existing group.</label>
<frontend_type>text</frontend_type>
<sort_order>50</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>0</show_in_website>
<show_in_store>0</show_in_store>
<fields>
<my_config translate="label">
<label>This will be my config''s label</label>
<frontend_type>text</frontend_type>
<sort_order>50</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>0</show_in_website>
<show_in_store>0</show_in_store>
</my_config>
</fields>
</my_or_their_group>
</groups>
</design>
</sections>
</config>
<diseño> es el nombre de la sección en la que se mostrará su configuración. "General, web, diseño, configuración de moneda, etc." En general, esta será una versión en minúsculas del título, es decir, "General" se convierte en "general", "Diseño" se convierte en "diseño". Si no está seguro de cuál debería ser esta etiqueta externa, busque a través de los módulos principales de magento. es decir, grepping para "Configuración de moneda" revela una mención en
app/code/core/Mage/Directory/etc/system.xml
<currency translate="label" module="directory">
<label>Currency Setup</label>
Entonces usarías la etiqueta <currency / <, y no la <currency_setup /> más intuitiva
<my_or_their_group translate = "label"> es el nombre del grupo en el que aparecerá su variable de configuración. Los grupos son los menús desplegables Ajax que contienen campos de configuración. Por ejemplo, la sección General tiene un grupo de "Opciones del país" y un grupo de "Opciones locales". De nuevo, verifique los módulos centrales existentes si no está seguro de cómo colocar un valor en un grupo existente.
También notará un atributo de traducción aquí, junto con una etiqueta de etiqueta correspondiente. Esto le permite usar cualquier cadena que desee en la interfaz HTML como título de grupo, pero internamente mantenga el nombre como un nombre de etiqueta XML válido. Nuestra etiqueta se llama
<my_or_their_group />
pero en la interfaz, el grupo tendrá el título
Una agrupación de valores de configuración. Haga su propio, o nosotros un grupo existente.
Finalmente, <my_config translate = "label"> es el nombre del yoru conifg value. De nuevo, observe el atributo de traducir . Se aplican las mismas reglas que arriba.
La otra estructura xml es necesaria, y (principalmente) se utiliza para controlar qué tipo de entradas HTML se utilizarán para su configuración. Si desea un elemento de interfaz particular, busque un ejemplo en el módulo central y copie la estructura XML.
Esto le permitirá establecer y buscar valores de configuración en la interfaz de la GUI de Magento. Puede recuperar sus valores utilizando el método estático getStoreConfig del objeto Mage global y especificando el URI de su valor de configuración. El URI se crea usando la sección / grupo / nombre de tu configuración.
Mage::getStoreConfig(''design/my_or_their_group/my_config'');
Alan, gracias por tu respuesta! Fue la clave que me abrió el misterio. Incluso después de haber estado leyendo tu excelente guía . Como hago todo lo posible para no modificar los archivos centrales, he comenzado a hacer extensiones para mi negocio de comercio electrónico. Y obtuve uno que creo que es lo suficientemente bueno para lanzarlo a las personas, pero quería poder configurarlo en el administrador, por lo que no había necesidad de editar archivos.
Comencé con su código anterior y vi que el "menú" agregado no estaba en "General", sino en "General-General", General-Web, Diseño-General, etc. Quería que mi cosa apareciera en General , pero no quería hacer como todos los demás y agregar un grupo de menú completo para mis extensiones.
Si el lector vino de Google con el deseo de poner mis opciones en algún lugar fácil en el Administrador, entonces sigue leyendo (y esta es la razón por la que estoy agregando otra respuesta). Primero: haz lo que dice Alan arriba. Haga que su menú aparezca en General-> General-> Su menú. Nota: deberá borrar el caché Y TAMBIÉN cerrar la sesión a medida que se almacena alguna información en la sesión.
Para que aparezca tu propio menú en "General", tienes que hacer lo mismo que si recibes tu propio grupo, o incluso Tab en la barra de menú superior, tienes que darte permiso de ACL en config.xml
:
<!-- file: config.xml -->
<config>
<adminhtml>
<acl>
<resources>
<admin>
<children>
<system>
<children>
<config>
<children>
<ytf translate="title">
<title>Youtube Feed</title>
</ytf>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
</adminhtml>
</config>
Aquí está mi system.xml
que corresponde a la configuración. Tenga en cuenta que ytf
es el menú principal. Modelé esto fuera del módulo "True Order Edit" de TniyBrick. También un gotcha: ytf
y ytfeed
tienen sutiles diferencias con sus entradas. La entrada ytf
es lo que aparece cuando vas a Admin -> config y ves a la izquierda en el grupo General. ytfeed
es la "barra" que se abre en el centro de la página al hacer clic en "General-> Feed de Youtube"
<!-- file: system.xml -->
<config>
<sections>
<ytf translate="label" module="ytfeed">
<label>Youtube Feed</label>
<tab>general</tab>
<frontend_type>text</frontend_type>
<sort_order>700</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<groups>
<ytfeed translate="label" module="ytfeed">
<label>Youtube Feed</label>
<sort_order>50</sort_order>
<expanded>1</expanded>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<username translate="label">
<!-- Mage::getStoreConfig(''ytf/ytfeed/username''); -->
<label>YouTube Username:</label>
<comment>(or YouTube channel name)</comment>
<frontend_type>text</frontend_type>
<sort_order>10</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</username>
</fields>
</ytfeed>
</groups>
</ytf>
</sections>
</config>
Otro enlace que me ayudó mucho:
http://www.scorgit.com/blog/custom-options-in-a-magento-back-end-dropdown-menu/
Actualización: hice una extensión de esta respuesta .
Magento proporciona variables personalizadas desde la versión 1.4 en adelante.
Inicie sesión en el lado del administrador, Sistema -> Variables personalizadas -> cree una nueva variable personalizada con el código "mi_variable".
Ingrese el contenido HTML y el texto sin formato para esta variable
Puede mostrar la variable personalizada en las páginas CMS colocando {{customVar code=my_variable}}
O en páginas .phtml
:
$variableHtml = Mage::getModel(''core/variable'')->loadByCode(''my_variable'')->getValue(''html'');
$variablePlain = Mage::getModel(''core/variable'')->loadByCode(''my_variable'')->getValue(''plain'');