BLOG

system.xml

Referencias:

El archivo system.xml es un mecanismo que permite fácilmente introducir campos de configuración editables en el panel de administración (Panel > System > Configuration).

Para ello se estructura en Tabs, Sections, Groups y Fields. Los Tabs contiene Sections, las Sections contiene Groups (fieldsets), y los grupos contienen los campos.

Ejemplo:

<?xml version="1.0" ?>
<config>
    <tabs>
        <mycustom_tab module="[module_name]" translate="label">
            <label>My Configuration Tab</label>
            <sort_order>100</sort_order>
        </mycustom_tab>
    </tabs>
    <sections>
        <mycustom_section module="[module_name]" translate="label">
            <label>My Custom Section</label>
            <sort_order>200</sort_order>
            <show_in_default>1</show_in_default>
            <show_in_website>1</show_in_website>
            <show_in_store>1</show_in_store>
            <tab>mycustom_tab</tab>
            <groups>
                <mycustom_group translate="label">
                    <label>My Custom Group</label>
                    <comment>Some comment about my group</comment>
                    <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>
                    <fields>
                        <mycustom_field translate="label tooltip comment">
                            <label>My Custom Field</label>
                            <comment>Some comment about my field</comment>
                            <tooltip>Field ToolTip</tooltip>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                            <frontend_type>text</frontend_type>
                        </mycustom_field>
                    </fields>
                </mycustom_group>
            </groups>
        </mycustom_section>
    </sections>
</config>

Tabs

<tabs>
    <mycustom_tab module="[module_name]" translate="label">
        <label>My Configuration Tab</label>
        <sort_order>100</sort_order>
    </mycustom_tab>
</tabs>
  • mycustom_tab – Nombre del nodo tab, debe ser un identificador único.
  • module – específica el módulo desde el que se obtendrán las traducciones
  • translate – específica los nodos hijo que serán traducibles (si existen multiples valores se separan por comas)
  • Hijos del nodo:
    • label – es el texto que será mostrado en el renderizado
    • sort_order – identifica la posición del Tab con respecto a otros Tabs
    • class – es la clase css aplicable al Tab

Sections

<sections>
      <mycustom_section module="[module_name]" translate="label">
            <label>My Custom Section</label>
            <sort_order>200</sort_order>
            <show_in_default>1</show_in_default>
            <show_in_website>1</show_in_website>
            <show_in_store>1</show_in_store>
            <tab>mycustom_tab</tab>
      <mycustom_section>
<sections>
  • mycustom_section – Nombre del nodo Section, debe ser un identificador único
  • module – específica el módulo desde el que se obtendrán las traducciones
  • translate – específica los nodos hijo que serán traducibles (si existen multiples valores se separan por comas)
  • Hijos del nodo:
    • label – es el texto que será mostrado en el renderizado
    • sort_order – identifica la posición del Tab con respecto a otros Tabs
    • class – es la clase css aplicable al Tab (se puede utilizar para mostrar una imagen reemplazando el texto, como en el caso de Paypal)
    • header_css – clase css que se aplica cuando se esta editando la Section actual
    • show_in_default – indica si la sección será mostrada cuando el alcance sea global (1 es mostrada, 0 no se muestra)
    • show_in_website – indica si la sección será mostrada cuando el alcance sea website (1 es mostrada, 0 no se muestra)
    • show_in_store – indica si la sección será mostrada cuando el alcance sea StoreView (1 es mostrada, 0 no se muestra)
    • groups – contiene la definición de los grupos contenidos en la Section

Groups

<sections>
      <mycustom_section  module="[module_name]" translate="label">
           <!-- ... -->
           <groups>
                <mycustom_group translate="label">
                    <label>My Custom Group</label>
                    <comment>Some comment about my group</comment>
                    <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>
                </mycustom_group>
           </groups>
      </sections>
</mycustom_section>
  • mycustom_group – Nombre del nodo Group, debe ser un identificador único dentro de la Section
  • module – específica el módulo desde el que se obtendrán las traducciones. El valor module puede ser omitido y heredara el especificado para el Section.
  • translate – específica los nodos hijo que serán traducibles (si existen multiples valores se separan por comas)
  • Hijos del nodo:
    • label – es el texto que será mostrado en el renderizado
    • sort_order – identifica la posición del Tab con respecto a otros Tabs
    • show_in_default – indica si la sección será mostrada cuando el alcance sea global (1 es mostrada, 0 no se muestra)
    • show_in_website – indica si la sección será mostrada cuando el alcance sea website (1 es mostrada, 0 no se muestra)
    • show_in_store – indica si la sección será mostrada cuando el alcance sea StoreView (1 es mostrada, 0 no se muestra)
    • frontend_model – clase block que será utilizada para renderizar el grupo de campos. Por defecto usa adminhtml/system_config_form_fieldset
    • comment – Texto mostrado antes de los campos del fieldset y que suele contener información o advertencias sobre los campos a configurar.
    • expanded – define si el Group aparecerá expandido por defecto y hasta que el usuario lo contraiga. El valor por defecto es contraído.
    • sort_fields – este nodo se utiliza para definir el mecanismo de organización del grupo reemplazando a la ordenación por defecto (sort_order). En caso de definir una ordenación distinta existen dos nodos hijo:
      • by – nombre del campo del nodo hijo por el que se van a ordenar los valores
      • direction_desc – si el valor es 1 la ordenación será inversa
    • fields – contiene la definición de los campos contenidos en el Group

Fields

<sections>
      <mycustom_section  module="[module_name]" translate="label">
           <!-- ... -->
           <groups>
                <mycustom_group translate="label">
                    <!-- ... -->
                    <fields>
                        <mycustom_field translate="label tooltip comment">
                            <label>My Custom Field</label>
                            <comment>Some comment about my field</comment>
                            <tooltip>Field ToolTip</tooltip>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                            <frontend_type>text</frontend_type>
                        </mycustom_field>
                    </fields>
              </mycustom_group>
         </groups>
     </mycustom_section>
</sections>
  • mycustom_field – Nombre del nodo Group, debe ser un identificador único dentro de la Section
  • module – específica el módulo desde el que se obtendrán las traducciones. El valor module puede ser omitido y heredara el especificado para el Section.
  • translate – específica los nodos hijo que serán traducibles (si existen multiples valores se separan por comas)
  • Hijos del nodo:
    • label – es el texto que será mostrado en el renderizado
    • sort_order – identifica la posición del Tab con respecto a otros Tabs
    • config_path – identifica el nodo en el que el valor será guardado. Si no se específica el path será el ([section_name]/[group_name]/[field_name]) en el que se anida. Se almacena el valor en la tabla core_config_data de la BD.
    • show_in_default – indica si la sección será mostrada cuando el alcance sea global (1 es mostrada, 0 no se muestra)
    • show_in_website – indica si la sección será mostrada cuando el alcance sea website (1 es mostrada, 0 no se muestra)
    • show_in_store – indica si la sección será mostrada cuando el alcance sea StoreView (1 es mostrada, 0 no se muestra)
    • frontend_model – clase block que será utilizada para renderizar el grupo de campos. Por defecto usa adminhtml/system_config_form_field
    • frontend_type – tipo de campo a mostrar. Posibles valores:
      • text
      • textarea
      • select – las opciones serán cargadas desde source_model
      • multiselect – las opciones serán cargadas desde source_model
      • import
      • export
      • allowspecific
      • image
      • y cualquier tipo de campo presente en Varien_Data_Form_Element_*
    • can_be_empty – indica si el campo multiselect puede guardarse sin seleccionar un valor
      source_model – especifica la clase del modelo o el callback de un modelo desde el que se obtienen las opciones del select y multiselect. Si se específica la clase del modelo, deberá contener el método toOptionArray($isMultiselect), que retornará un array preparado para cargar las opciones del elemento. Ejemplo de un modelo (deberá cargarse desde config.xml) “Curso_CargaModulo_Model_Adminhtml_System_Config_Source_Color” (será necesario cargar este modelo de datos (esto se verá más adelante)

      class Curso_CargaModulo_Model_Adminhtml_System_Config_Source_Color
      {
         public function toOptionArray()
         {
             $themes = array(
                 array('value' => 'green', 'label' => 'Green'),
                 array('value' => 'blue', 'label' => 'Blue'),
                 array('value' => 'beige', 'label' => 'Beige'),
             );
             return $themes;
         }
      }
      

      Si se específica el callback de un modelo mediante la estructura “module_name/model_name::methodName”, este deberá devolver un array asociativo con el par  value-label. Lista de modelos usados frecuentemente:

      • adminhtml/system_config_source_admin_page – returns list of all the items in Magento Admin menu
      • adminhtml/system_config_source_cms_page – returns list of CMS Pages
      • adminhtml/system_config_source_customer_group – returns list of customer groups
      • adminhtml/system_config_source_date_short – returns list of available short date formats
      • adminhtml/system_config_source_email_identity – returns list of email sending identities (General Contact, Sales Representative, etc)
      • adminhtml/system_config_source_email_template – returns list of transactional email templates
      • adminhtml/system_config_source_locale_country – returns list of localized country names
      • adminhtml/system_config_source_locale_currency – returns list of localized currency names
      • adminhtml/system_config_source_locale_timezone – returns list of localized timezone names
      • adminhtml/system_config_source_locale_weekdays – returns list of localized weekday names
      • adminhtml/system_config_source_order_status – returns list of available order statuses except pending payment
      • adminhtml/system_config_source_payment_allmethods – returns list of all payment methods
      • adminhtml/system_config_source_shipping_allmethods – returns list of all shipping methods
      • adminhtml/system_config_source_country – returns list of all countries from directory module
      • adminhtml/system_config_source_allregion – returns list of all country regions grouped by country
      • adminhtml/system_config_source_enabledisable – return list of two options (“Enable” and “Disable”)
      • adminhtml/system_config_source_notoptreq – return list of three options for customer widget mandatory indetificator (“Not”, “Optional”, “Required”).
      • adminhtml/system_config_source_yesno – return boolean options (“Yes”, “No”)
      • backend_model – específica el model para guarder los datos del campo, deberá ser una extensión del modelo por defecto Mage_Core_Model_Config_Data
      • tooltip – texto a mostrar como tooltip, es mostrado cuando el cursor está sobre el campo
      • tooltip_block – nombre del block que será usado como tooltip.
      • validate – nombre de la clase css aplicada al campo que implica una validación. Algunos valores usuales son:
        • requiered-entry – validar que el campo no este vacío
        • validate-number – valida que el campo sea numérico
        • validate-email – valida que el campo sea una dirección de email
        • Todas las reglas de validación que se encuentren en /js/prototype/validation.js
      • comment – Texto mostrado antes del field y que suele contener información o advertencias sobre el campo.
      • depends – este nodo contiene las dependencias del campo actual con respecto a otros. La estructura es simple, el nombre del nodo hijo será el campo del que dependa, y el valor contenido será el valor que lo hace visible. Por ejemplo:
        <depends>
             <field_name>1</field_name>
        </depends>
        

 

Publicado

Categoría XML de configuración

Etiquetado como Magento 1.x xml