Magento Es PDF
Magento Es PDF
#magento
Tabla de contenido
Acerca de 1
Observaciones 2
Versiones 2
Edición comunitaria 2
Edición de Empresa 3
Examples 3
Instalación y configuración 3
Instalación: 4
Capítulo 2: Agregue un precio diferente para la tienda múltiple usando Magento SOAP API 6
Examples 6
Magento SOAP V1 6
Introducción 7
Examples 7
Atributo de ventas 7
Capítulo 4: Ayudantes 8
Examples 8
Creando un ayudante 8
Introducción 9
Examples 9
Capítulo 6: Colecciones 11
Examples 11
Clasificación 11
Acceso 11
Capítulo 7: Colecciones 13
Examples 13
Colección de productos 13
Capítulo 8: Colecciones 15
Examples 15
Colección de productos 15
Parámetros 16
Observaciones 16
Examples 17
Filtrando colecciones 17
Examples 19
Introducción 20
Examples 20
Observaciones 21
Examples 26
Observaciones 28
Examples 31
Mage_Catalog_Model_Product_Type 31
Observaciones 38
Examples 38
Observaciones 42
Examples 42
Observaciones 45
Examples 45
Introducción 46
Examples 46
Sintaxis 47
Parámetros 47
Observaciones 47
El registro está desactivado de forma predeterminada a menos que el modo desarrollador est 47
Todas las excepciones se registran en exceptions.log sin importar si el registro está habi 47
Nivel de registro 48
Examples 48
Registro predeterminado 48
Capítulo 19: Magento Caching 50
Examples 50
Observaciones 52
/var/log/ 52
/var/report/ 53
Examples 53
Examples 55
Modelo de carga 55
Examples 56
Examples 57
Examples 60
Capítulo 25: Obtenga el nombre de la tienda y otros detalles de la configuración del siste 61
Examples 61
Sintaxis 63
Parámetros 63
Observaciones 63
Examples 63
Obtener js url 64
Examples 65
Optimizando Magento cambiando el archivo .htaccess 65
http://developer.yahoo.com/performance/rules.html#gzip 65
Configuración de administrador 66
Examples 68
Observaciones 69
Examples 71
Observaciones 73
Lo esencial 73
Examples 73
Camino magento 74
Introducción 76
Examples 76
Sintaxis 81
Examples 81
Página principal 81
Examples 82
Carro url 82
URL de salida 82
Creditos 85
Acerca de
You can share this PDF with anyone you feel could benefit from it, downloaded the latest version
from: magento
It is an unofficial and free magento ebook created for educational purposes. All the content is
extracted from Stack Overflow Documentation, which is written by many hardworking individuals at
Stack Overflow. It is neither affiliated with Stack Overflow nor official magento.
The content is released under Creative Commons BY-SA, and the list of contributors to each
chapter are provided in the credits section at the end of this book. Images may be copyright of
their respective owners unless otherwise specified. All trademarks and registered trademarks are
the property of their respective company owners.
Use the content presented in this book at your own risk; it is not guaranteed to be correct nor
accurate, please send your feedback and corrections to [email protected]
https://riptutorial.com/es/home 1
Capítulo 1: Empezando con Magento
Observaciones
Magento es una plataforma de comercio electrónico de código abierto escrita en PHP; una
plataforma de comercio electrónico altamente personalizable y un sistema de gestión de
contenido que se puede utilizar para crear tiendas en línea para vender mercancías.
Magento también es un marco PHP orientado a objetos que se puede usar para desarrollar
aplicaciones web modernas y dinámicas que aprovechan las características de comercio
electrónico de Magento.
• capacidad de expansión
• escalabilidad
• flexibilidad
• personalización
• fuente abierta
Versiones
Edición comunitaria
Versión Fecha de lanzamiento
1.9 2014-05-14
1.8 2013-12-11
1.7 2012-04-24
1.6 2011-08-08
1.5 2011-02-08
1.4 2010-02-12
1.3 2009-03-30
1.2 2008-12-29
https://riptutorial.com/es/home 2
Versión Fecha de lanzamiento
1.0 2008-03-31
Edición de Empresa
Versión Fecha de lanzamiento
1.14 2014-05-14
1.13 2013-10-11
1.12 2012-04-24
1.11 2011-08-08
1.10 2011-02-08
1.9 2010-07-19
1.8 2010-04-14
1.7 2010-01-19
1.6 2009-10-20
1.3 2009-04-15
Examples
Instalación y configuración
https://riptutorial.com/es/home 3
• Posibilidad de anular opciones en archivos .htaccess.
PHP
• Extensiones requeridas: PDO_MySQL, simplexml, mcrypt, hash, GD, DOM, iconv, curl,
SOAP (para API de servicios web)
Base de datos
SSL
Instalación:
Descargar y configurar archivos Magento
Estamos usando OpenMage Mirror ya que la descarga directa para la sucursal 1.9.2.4 está
deshabilitada y el sitio web de Magento requiere una cuenta. Pero le recomendamos que
descargue una copia desde https://www.magentocommerce.com/download
cd /var/www/html
wget https://github.com/OpenMage/magento-mirror/archive/magento-1.9.zip
unzip magento-1.9.zip
rm magento-1.9.zip
rsync -avP magento-mirror-magento-1.9/. .
rm magento-mirror-magento-1.9 -r
sudo chown -R www-data:www-data /var/www/html/
chmod -R 0777 media var
mysql -u root -p
en la consola mysql
https://riptutorial.com/es/home 4
Completa la instalación a través de la interfaz web.
Para acceder a la interfaz web con su navegador, navegue hasta el nombre de dominio o la
dirección IP pública de su servidor:
http://domain_name/
Solo funciona la página de inicio, todas las demás páginas devuelven 404
Asegúrese de que el módulo mod_rewrite se haya instalado en Apache y se haya habilitado para
cargar. Vea el paso 2 para obtener información sobre cómo hacer esto aquí:
https://www.digitalocean.com/community/tutorials/how-to-set-up-mod_rewrite-for-apache-on-
ubuntu-14-04
Asegúrese de que permite cambios en el archivo .htaccess habilitándolo en su sitio conf. Consulte
el paso 3 : https://www.digitalocean.com/community/tutorials/how-to-set-up-mod_rewrite-for-
apache-on-ubuntu-14-04
Su archivo .htaccess puede estar mal configurado o faltar: diríjase a la página de descarga de
Magento: https://www.magentocommerce.com/download - descargue la versión correspondiente y
extraiga el archivo .htaccess para colocarlo en su raíz de instalación de Magento.
Asegúrese de haber configurado los permisos y la propiedad relevantes: consulte aquí para
obtener más información: http://devdocs.magento.com/guides/m1x/install/installer-
privileges_before.html
Solución común: intente reindexar y vaciar el caché manualmente (en caso de que el
administrador sea demasiado difícil de navegar). Reindexar a través de la línea de comandos:
https://www.atwix.com/magento/process-magento-indexes-from-command-line/ Flush cache (a
través de admin o línea de comandos): https://www.properhost.com/ support / kb / 23 / How-to-
Clear-The-Magento-Cache
Seguido
https://riptutorial.com/es/home 5
Capítulo 2: Agregue un precio diferente para
la tienda múltiple usando Magento SOAP API
Examples
Magento SOAP V1
Debe cambiar el alcance del precio 'Global' al 'sitio web' (Sysytem-> Configuration-> Catalog->
Catalog-> Price)
Lea Agregue un precio diferente para la tienda múltiple usando Magento SOAP API en línea:
https://riptutorial.com/es/magento/topic/7410/agregue-un-precio-diferente-para-la-tienda-multiple-
usando-magento-soap-api
https://riptutorial.com/es/home 6
Capítulo 3: Atributos personalizados
Introducción
Atributos personalizados para ventas, categoría, etc.
Examples
Atributo de ventas
<?php
$installer = $this;
$installer->startSetup();
$installer->addAttribute('quote', 'custom_field', array('type' => 'varchar'));
$installer->addAttribute('order', 'custom_field', array('type' => 'varchar'));
$installer->endSetup();
?>
<?php
$installer = $this;
$installer->startSetup();
$installer->run("ALTER TABLE sales_flat_order_item ADD COLUMN 'custom_field' DECIMAL(12,4)
NULL;");
$installer->endSetup();
?>
https://riptutorial.com/es/home 7
Capítulo 4: Ayudantes
Examples
Creando un ayudante
# File: app/code/local/Vendor/Package/Helper/Data.php
class Vendor_Package_Helper_Data extends Mage_Core_Helper_Abstract
{
public function multiply($a, $b)
{
return $a * $b;
}
}
Para poder acceder es a través de Mage::helper , debe definir un alias de ayuda en un archivo
config.xml para permitir que el autocargador Magento encuentre su clase:
Suponiendo que su módulo esté configurado correctamente y que haya borrado su caché, ahora
debería poder usar su ayudante así:
Nota: si está utilizando una clase de datos, su nombre de ayudante está implícito si no especifica
uno. Por ejemplo, los siguientes dos ejemplos son idénticos:
Mage::helper('alias_here');
Mage::helper('alias_here/data');
https://riptutorial.com/es/home 8
Capítulo 5: Colección completa de productos
Introducción
Filtros completos para la recolección de productos en función de la visibilidad, la tienda y el OR, el
estado del stock, el estado, etc.
Examples
Filtrado de recogida de productos.
$model = Mage::getModel('catalog/product')->getCollection()
$mode->addStoreFilter($storeId)
$mode->addAttributeToFilter('type_id', 'configurable')
$mode->addAttributeToFilter('type_id', 'simple')
$model->addAttributeToFilter('status',Mage_Catalog_Model_Product_Status::STATUS_DISABLED)
$model->addAttributeToFilter('status',Mage_Catalog_Model_Product_Status::STATUS_ENABLED)
https://riptutorial.com/es/home 9
Filtrar utilizando en y no en:
$model->addAttributeToFilter('entity_id', array(
'from' => 64229,
'to' => 64231
))
$model->addAttributeToFilter('visibility', 4) //catalog,search
$model->addAttributeToFilter('visibility', 3) //catalog
$model->addAttributeToFilter('visibility', 2) //search
$model->addAttributeToFilter('visibility', 1) //not visible individually
$model->joinField('is_in_stock',
'cataloginventory/stock_item',
'is_in_stock',
'product_id=entity_id',
'is_in_stock=1', //make this 0 for out of stock products
'{{table}}.stock_id=1',
'left')
$model->setOrder('entity_id','desc')
$model->setPageSize(100)
https://riptutorial.com/es/home 10
Capítulo 6: Colecciones
Examples
Obtener colecciones de modelos
// $orders is collection
$orders->addAttributeToSelect('status'); // get status attribute
$orders->addAttributeToSelect('*'); // get all attributes
Filtración
Clasificación
Acceso
https://riptutorial.com/es/home 11
// get first/last item in collection
$first = $orders->getFirstItem();
$last = $orders->getLastItem();
https://riptutorial.com/es/home 12
Capítulo 7: Colecciones
Examples
Colección de productos
$ProductCollection=Mage::getModel('catalog/product')->getCollection();
$ProductCollection->addAttributeToSelect('*');
$ProductCollection->addFieldToFilter('is_active',1);
Establecer orden
$ProductCollection->setOrder('id','ASC');
Establecer limite
$ProductCollection->setPageSize(10);
$ProductCollection->setCurPage(1);
$rootId = Mage::app()->getStore($storeId)->getRootCategoryId();
$categories = Mage::getModel('catalog/category')->getCollection()
->addAttributeToSelect('*')
->addFieldToFilter('path', array('like'=> "1/$rootId/%"))
->addAttributeToFilter('level', 2)
->addAttributeToFilter('is_active', 1);
https://riptutorial.com/es/home 13
Lea Colecciones en línea: https://riptutorial.com/es/magento/topic/6763/colecciones
https://riptutorial.com/es/home 14
Capítulo 8: Colecciones
Examples
Colección de productos
$productCollection = Mage::getModel('catalog/product')->getCollection();
$productCollection->addAttributeToSelect('*');
$productCollection->addFieldToFilter('is_active', 1);
Establecer orden
$productCollection->setOrder('id', 'ASC');
Establecer limite
$productCollection->setPageSize(10);
$productCollection->setCurPage($page);
https://riptutorial.com/es/home 15
Capítulo 9: Cómo filtrar colecciones
Parámetros
Parámetro Detalles
Observaciones
Argumentos de comparación de filtros
Magento también ofrece una forma flexible de filtrar utilizando operadores de comparación
también. Aquí hay una lista de operadores válidos y su sintaxis:
$collection_of_products->addAttributeToFilter('visible',array("eq"=>1));
https://riptutorial.com/es/home 16
Comparación Matriz de argumentos Fragmento de SQL resultante
Mas grande que array ("gt" => $ var) DONDE (`my_field`> $ var)
Menos que array ("lt" => $ var) DONDE (`my_field` <$ var)
Mayor que o
array ("gteq" => $ var) DONDE (`my_field`> = $ var)
igual
Menor o igual array ("lteq" => $ var) DONDE (`my_field` <= $ var)
Encontrar en set array ("finset" => array ($ var)) DONDE (find_in_set ($ var, `my_field`)
Examples
Filtrando colecciones
Magento tiene un poderoso conjunto de métodos para filtrar colecciones. Como hay dos tipos de
Objetos que pueden estar contenidos en colecciones, primero debemos determinar con qué tipo
de datos estamos trabajando antes de poder filtrarlos. Magento implementa un modelo de datos
EAV para entidades como productos y categorías. Existe un conjunto diferente de métodos a
utilizar si estamos filtrando una colección de Objetos EAV.
En Magento, los pedidos no se almacenan como objetos EAV. Esto hace que la colección de
pedidos sea un buen ejemplo para filtrar una colección básica.
$collection_of_orders = Mage::getModel('sales/order')->getCollection();
$collection_of_orders->addFieldToFilter('status','processing');
Si observamos la colección de productos, podemos ver que los productos están almacenados en
un modelo de datos EAV. También podemos filtrar fácilmente por atributos de EAV.
$collection_of_products = Mage::getModel('catalog/product')->getCollection();
$collection_of_products->addAttributeToFilter('visible',1);
https://riptutorial.com/es/home 17
Cuando consultamos nuestros datos, a menudo necesitamos más de un filtro para obtener el
conjunto de datos exacto que estamos buscando. En SQL, manejamos esto con cláusulas AND y
OR. Podemos lograr lo mismo con las colecciones.
Para agregar una cláusula AND a su consulta, simplemente agregue otro método de llamada.
Esto agregará el segundo filtro a la declaración WHERE original que lo une con un AND.
Mage::getModel('catalog/product')->getCollection()
->addFieldToFilter('sku',array('like'=>'a%'))
->addFieldToFilter('sku',array('like'=>'%b'));
Ahora digamos que queremos que todos los skus que comiencen con 'a' O terminen con 'b'.
¿Cómo agregamos una cláusula OR? Gracias a las colecciones de Magento, es bastante sencillo.
Añadimos el filtro como un segundo elemento en la matriz de filtros.
Mage::getModel('catalog/product')->getCollection()
->addFieldToFilter('sku', array(
array('like'=>'a%'),
array('like'=>'%b')
));
https://riptutorial.com/es/home 18
Capítulo 10: Crear tarjetas de regalo
empresariales mediante programación
Examples
Crear una sola tarjeta de regalo
// Can use the gift card for further use, return it, or return it's ID
return $gift_card // ->getId();
https://riptutorial.com/es/home 19
Capítulo 11: Datos de tienda y sitio web
Introducción
Obtener magento store y datos relacionados con el sitio web
Examples
Obtener datos actuales de la tienda
$store = Mage::app()->getStore();
$storeId = Mage::app()->getStore()->getStoreId();
$storeCode = Mage::app()->getStore()->getCode();
$websiteId = Mage::app()->getStore()->getWebsiteId();
$storeGroupId = Mage::app()->getStore()->getGroupId();
$storeName = Mage::app()->getStore()->getName();
$storeSortOrder = Mage::app()->getStore()->getSortOrder();
$storeIsActive = Mage::app()->getStore()->getIsActive();
https://riptutorial.com/es/home 20
Capítulo 12: EAV (valor de atributo de
entidad)
Observaciones
Entidad
Almacena información sobre el tipo de datos que se almacenan. En el caso de Magento esto es
cliente, producto, categoría, etc.
Atributo
Las propiedades individuales de cada una de las entidades, por ejemplo, nombre, peso, dirección
de correo electrónico, etc.
Valor
El valor de una entidad y atributo dados. Por ejemplo, podemos especificar la entidad del cliente y
el atributo de correo electrónico y luego asignarle el valor [email protected].
eav_entity
La tabla de entidades.
eav_entity_attribute
La tabla de atributos.
eav_entity_ {type}
Las tablas de valores. Los tipos son datetime, decimals, int, text y varchar.
Es importante tener en cuenta que la tabla eav_entity_varchar tiene el tipo varchar para los
valores, incluso si la fecha o el entero se ajustan mejor al valor.
Todos los modelos dentro de Mage / Eav / Model / Resource son Mysql4 y son modelos de
recurso.
Los modelos EAV son más complejos y proporcionan lógica para guardar y cargar desde
múltiples tablas, mientras que los modelos planos o estándar son relativamente sencillos
https://riptutorial.com/es/home 21
(tradicionales).
Los modelos estándar gestionan principalmente sus propiedades con definidores de datos y
captadores que trabajan con una sola tabla. Los modelos EAV gestionan principalmente sus
modelos de atributos. Los modelos estándar solo guardan sus datos en una tabla y se cargan.
Los modelos EAV cargan todos los atributos (o un conjunto específico) después de cargar los
datos de base y guardan los atributos después de guardar los datos (incluyendo la inserción,
actualización y eliminación de atributos).
Para buscar entidades que utilizan el esquema de almacenamiento EAV, se puede utilizar la
búsqueda de la cadena Mage_Eav_Model_Entity_Abstract. Esto debería revelar todos los
modelos de recursos basados en la estructura de EAV. Sin embargo, la lista resultante incluirá
muchas clases obsoletas del módulo Mage_Sales que ya no se están utilizando.
Los únicos módulos que contienen entidades que utilizan el esquema de almacenamiento EAV
son Mage_Catalog (categorías y productos) y Mage_Customer (clientes y direcciones).
Los grupos de clientes utilizan el esquema de almacenamiento de tabla plana. Todas las
entidades de ventas se convirtieron en entidades de tabla plana con el lanzamiento de Magento
1.4.
La razón por la que se utiliza EAV es para que las entidades puedan tener un número
indeterminado de propiedades y, por lo tanto, seguir siendo flexibles. Por ejemplo, cuando agrega
un nuevo atributo a una entidad de Cliente (que es una entidad de EAV), no es necesario
modificar la tabla de la base de datos para que se agregue este nuevo atributo.
Ventajas
Desventajas
• Ineficiente
Para manejar los valores de atributo de ámbito de tienda y sitio web dentro de EAV, existe un
valor de store_id en la entidad de catálogo para mostrar el alcance que enlaza de nuevo con
core_store. Junto con las tiendas normales (vistas de tienda) también hay una tienda '0' que es el
https://riptutorial.com/es/home 22
valor global. Cuando se encuentra en una tienda en particular, el sistema primero verificará el
valor de una entidad en la tienda actual y luego volverá a la entidad global. Las entidades de EAV
de Mage_Customer no tienen una columna de ámbito store_id.
Gestión de atributos
Modelos de atributo
Modelo frontend
La interfaz del atributo a la interfaz y proporciona cualquier lógica que el atributo requiera en la
interfaz, por ejemplo, el método getUrl () en las imágenes.
Modelo de backend
Estos realizan la validación en el atributo antes de que se guarde en la base de datos. Por
ejemplo, el modelo de back-end de contraseña convierte la contraseña en un hash antes de que
se guarde. También verifica que la contraseña y la confirmación de la contraseña coincidan antes
de guardar.
Modelos de fuente
Se utiliza para rellenar las opciones disponibles para un atributo, por ejemplo, catalog /
product_status se ha habilitado y deshabilitado.
Métodos requeridos
<?php
public function getAllOptions();
public function getOptionText($value);
?>
Por lo general, solo se necesita implementar getAllOptions (), ya que ya existe una
implementación para getOptionText () en el modelo de fuente abstracta
Mage_Eav_Model_Entity_Attribute_Source_Abstract.
https://riptutorial.com/es/home 23
Un modelo de frontend no requiere el método getValue ().
<?php
public function getTable();
public function isStatic();
public function getType();
public function getEntityIdField();
public function setValueId($valueId);
public function getValueId();
public function afterLoad($object);
public function beforeSave($object);
public function afterSave($object);
public function beforeDelete($object);
public function afterDelete($object);
public function getEntityValueId($entity);
public function setEntityValidId($entity, $valueId);
?>
No se puede utilizar para los atributos de EAV. Los modelos de origen de EAV implementan el
método getAllOptions mientras que los modelos de origen adminhtml implementan el método
toOptionArray ().
Para obtener una lista de todas las opciones para un atributo, realice lo siguiente:
<?php
$options = $attribute->getSource()->getAllOptions(false);
// or for admin
$options = $_attribute->getSource()->getAllOptions(true, true);
?>
Si no se especifica ninguna clase como frontend, backend o - para los atributos de selección o
selección múltiple - modelos de origen, se utiliza una clase predeterminada.
https://riptutorial.com/es/home 24
El modelo de frontend de atributo predeterminado es
Mage_Eav_Model_Entity_Attribute_Frontend_Default.
<?php
protected function _getDefaultBackendModel()
{
switch ($this->getAttributeCode()) {
case 'created_at':
return 'eav/entity_attribute_backend_time_created';
case 'updated_at':
return 'eav/entity_attribute_backend_time_updated';
case 'store_id':
return 'eav/entity_attribute_backend_store';
case 'increment_id':
return 'eav/entity_attribute_backend_increment';
}
return parent::_getDefaultBackendModel();
}
?>
Añadir atributo
addAttribute () Crea los atributos, los agrega a grupos y conjuntos (incluido el predeterminado), o
actualiza si ya existe updateAttribute () Actualiza solo los datos del atributo. Se pueden usar
clases de configuración personalizada para ampliar estos métodos, agregar datos adicionales o
simplificar los argumentos necesarios.
Mesas planas
Mage_Catalog_Model_Resource_Product_Flat_Indexer :: updateAttribute ()
Mage_Catalog_Model_Resource_Category_Flat :: synchronize () Los atributos del producto se
agregan a la tabla plana si lo son (ver
Mage_Catalog_Model_Resource_Product_Flat_Inplatin_Plat_Inplanta).
https://riptutorial.com/es/home 25
Estático (tipo de backend) Filtrable Se usa en la lista de productos Se usa para reglas de
promoción Se usa para ordenar por atributos del sistema Hay una tabla plana diferente para cada
tienda, cada una contiene un valor de atributo de entidad de ámbito de tienda diferente. Los
valores multilingües se administran teniendo diferentes tiendas para cada idioma.
Examples
Implementar la interfaz de atributos de frontend, fuente y backend.
Interfaz frontal
/**
* Entity attribute frontend interface
*
* Frontend is providing the user interface for the attribute
*
*/
interface Mage_Eav_Model_Entity_Attribute_Frontend_Interface
{
Interfaz de fuente
/**
* Entity attribute select source interface
*
* Source is providing the selection options for user interface
*
*/
interface Mage_Eav_Model_Entity_Attribute_Source_Interface
{
/**
* Retrieve All options
*
* @return array
*/
public function getAllOptions();
/**
* Retrieve Option value text
*
* @param string $value
* @return mixed
*/
public function getOptionText($value);
}
Interfaz de backend
/**
* Entity attribute backend interface
*
* Backend is responsible for saving the values of the attribute
https://riptutorial.com/es/home 26
* and performing pre and post actions
*
*/
interface Mage_Eav_Model_Entity_Attribute_Backend_Interface
{
public function getTable();
public function isStatic();
public function getType();
public function getEntityIdField();
public function setValueId($valueId);
public function getValueId();
public function afterLoad($object);
public function beforeSave($object);
public function afterSave($object);
public function beforeDelete($object);
public function afterDelete($object);
/**
* Get entity value id
*
* @param Varien_Object $entity
*/
public function getEntityValueId($entity);
/**
* Set entity value id
*
* @param Varien_Object $entity
* @param int $valueId
*/
public function setEntityValueId($entity, $valueId);
}
https://riptutorial.com/es/home 27
Capítulo 13: Entender los tipos de productos
Observaciones
Hay seis tipos diferentes de productos integrados en Magento.
• Sencillo
• Configurable
Primero de los productos compuestos. Permita que los clientes configuren su producto y agregue
un solo producto simple a la cesta.
• Agrupados
• Haz
El tercer tipo de producto compuesto, un paquete, relaciona productos simples para comprarlos
como un solo artículo.
• Virtual
• Descargable
Un producto digital en lugar de físico. La mayoría de los tipos de productos se implementan como
parte del módulo Mage_Catalog, además de Mage_Bundle y Mage_Downloadable.
Los productos agrupados, agrupados y configurables implementan una relación padre-hijo donde
una serie de otros productos (de forma predeterminada, simple, virtual o descargable) se asignan
a un producto principal. Esto luego maneja los datos del producto para toda la colección (por
ejemplo, grupo, paquete o nombre de producto configurable, precio y estado).
Los productos descargables y de paquete tienen tablas adicionales en la base de datos, mientras
que el resto se comparte con todos los demás tipos de productos. Los productos configurables
tienen una tabla adicional para vincular a productos secundarios, catalog_product_super_link.
Para crear un tipo de producto que amplíe uno de los tipos de producto integrados, se debe
ampliar el modelo de tipo de producto correspondiente. De lo contrario, el nuevo tipo de producto
debería extender la clase Mage_Catalog_Model_Product_Type_Abstract.
https://riptutorial.com/es/home 28
También se requiere una entrada en el config.xml del módulo:
Los productos más complicados pueden requerir otras áreas personalizadas, como el modelo de
precios y el recuperador de datos de índice.
Cuando se trata de un solo producto, el precio siempre se calcula sobre la marcha. El atributo
EAV de precio se carga con el producto y el precio final se calcula con el modelo de precio,
Mage_Catalog_Model_Product_Type_Price.
Algunos tipos de productos lo tratan de manera diferente. En cuyo caso extienden esta clase e
implementan su propia lógica. Por ejemplo, el producto configurable sobrescribe getFinalPrice () y
agrega lógica adicional. Este modelo personalizado se puede especificar en config.xml con una
etiqueta <price_model>.
Las colecciones de productos, sin embargo, utilizan el índice de precios para recuperar precios
precalculados, eliminando la necesidad de calcularlo para cada producto.
El precio final puede ser ajustado por los observadores del evento
catalog_product_get_final_price. Por defecto, solo el módulo Mage_CatalogRule observa este
evento.
El precio del nivel del producto es independiente del precio normal (aunque se tiene en cuenta al
calcular el precio). Se implementa como una lista con un grupo de clientes y calificadores de
cantidad mínima para cada nivel. Los precios de los niveles se muestran en una tabla, utilizando
la plantilla catalog / product / view / tierprices.phtml.
Las opciones de productos personalizados se procesan al calcular el precio final. Cada opción
tiene su propio precio definido, que se agrega al precio final.
Los precios de grupo, nivel y especiales se tienen en cuenta al mismo tiempo ($priceModel-
>getBasePrice()) y se elige el precio más bajo de los tres (o cuatro si incluye el precio regular)
como precio base del producto.
Impuesto
Los siguientes factores se utilizan para calcular el impuesto sobre los productos:
https://riptutorial.com/es/home 29
Navegación en capas
• Mage_Catalog_Block_Layer_View
• Mage_Catalog_Block_Layer_State
Para implementar la navegación por capas en los atributos con modelos de origen
personalizados, el método Mage_Catalog_Model_Layer_Filter_Abstract :: apply () se debería
sobrescribir para determinar cómo se debe filtrar la colección de productos.
La navegación en capas utiliza la tabla de índice para la mayoría de los filtros, por ejemplo,
precio, índice de atributo de producto, índice de producto decimal.
Categorías
Para leer y administrar un árbol de categorías de la base de datos, se utilizan dos clases
diferentes dependiendo de si el catálogo plano está habilitado,
Mage_Catalog_Model_Resource_Category_Tree y
Mage_Catalog_Model_Resource_Category_Flat.
La ventaja de las categorías planas es que es más rápido de consultar. Sin embargo, debe
reconstruirse a partir de las tablas EAV cada vez que se produzca un cambio.
getChildren()
getAllChildren()
getChildrenCategories()
https://riptutorial.com/es/home 30
devuelve una colección de categorías secundarias inmediatas Nota: si el catálogo plano está
habilitado, las únicas categorías secundarias devueltas serán aquellas con include_in_menu = 1.
En ambos casos, solo se devuelven las categorías activas.
Las reglas de precios de catálogo aplican descuentos a los productos según la fecha, el producto,
el sitio web y el grupo de clientes.
Dentro de la base de datos, la tabla catalogrule describe las reglas, sus condiciones y sus
acciones. catalogrule_product contiene los productos coincidentes y alguna información de la
regla. Mientras tanto catalogrule_product_price contiene el precio después de que se haya
aplicado la regla.
Las tablas de catálogo planas son gestionadas por indexadores de catálogo. Si la reconstrucción
automática de los índices está habilitada, los indizadores de catálogo se reconstruyen cada vez
que se actualiza un producto, una categoría o cualquier entidad relacionada. El método
_afterSave () llama al proceso del indexador. De lo contrario, tienen que ser re-indexados
manualmente a través de admin.
El tipo de producto afecta el índice de precios y el índice de acciones donde los productos pueden
definir sus propios indexadores personalizados (en config.xml) para manejar sus datos para estos
índices.
El módulo Mage_Index proporciona el marco con el que se pueden crear índices personalizados
para ayudar a optimizar el rendimiento del sitio. La clase Mage_Index_Model_Indexer_Abstract
debe ampliarse para crear un nuevo índice, implementando los métodos _registerEvent () y
_processEvent (). Sin olvidar registrarlo en config.xml:
<global>
<index>
<indexer>
<{name}>{model}</{name}>
</indexer>
</index>
</global>
Examples
Mage_Catalog_Model_Product_Type
https://riptutorial.com/es/home 31
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category Mage
* @package Mage_Catalog
* @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/**
* Product type model
*
* @category Mage
* @package Mage_Catalog
* @author Magento Core Team
*/
class Mage_Catalog_Model_Product_Type
{
/**
* Available product types
*/
const TYPE_SIMPLE = 'simple';
const TYPE_BUNDLE = 'bundle';
const TYPE_CONFIGURABLE = 'configurable';
const TYPE_GROUPED = 'grouped';
const TYPE_VIRTUAL = 'virtual';
/**
* Product type instance factory
*
* @param Mage_Catalog_Model_Product $product
* @param bool $singleton
* @return Mage_Catalog_Model_Product_Type_Abstract
*/
public static function factory($product, $singleton = false)
{
https://riptutorial.com/es/home 32
$types = self::getTypes();
$typeId = $product->getTypeId();
if (!empty($types[$typeId]['model'])) {
$typeModelName = $types[$typeId]['model'];
} else {
$typeModelName = self::DEFAULT_TYPE_MODEL;
$typeId = self::DEFAULT_TYPE;
}
/**
* Product type price model factory
*
* @param string $productType
* @return Mage_Catalog_Model_Product_Type_Price
*/
public static function priceFactory($productType)
{
if (isset(self::$_priceModels[$productType])) {
return self::$_priceModels[$productType];
}
$types = self::getTypes();
if (!empty($types[$productType]['price_model'])) {
$priceModelName = $types[$productType]['price_model'];
} else {
$priceModelName = self::DEFAULT_PRICE_MODEL;
}
self::$_priceModels[$productType] = Mage::getModel($priceModelName);
return self::$_priceModels[$productType];
}
return $options;
}
https://riptutorial.com/es/home 33
static public function getAllOptions()
{
$res = array();
$res[] = array('value'=>'', 'label'=>'');
foreach (self::getOptionArray() as $index => $value) {
$res[] = array(
'value' => $index,
'label' => $value
);
}
return $res;
}
return self::$_types;
}
/**
* Return composite product type Ids
*
* @return array
*/
static public function getCompositeTypes()
{
if (is_null(self::$_compositeTypes)) {
self::$_compositeTypes = array();
$types = self::getTypes();
https://riptutorial.com/es/home 34
foreach ($types as $typeId=>$typeInfo) {
if (array_key_exists('composite', $typeInfo) && $typeInfo['composite']) {
self::$_compositeTypes[] = $typeId;
}
}
}
return self::$_compositeTypes;
}
/**
* Return product types by type indexing priority
*
* @return array
*/
public static function getTypesByPriority()
{
if (is_null(self::$_typesPriority)) {
self::$_typesPriority = array();
$a = array();
$b = array();
$types = self::getTypes();
foreach ($types as $typeId => $typeInfo) {
$priority = isset($typeInfo['index_priority']) ?
abs(intval($typeInfo['index_priority'])) : 0;
if (!empty($typeInfo['composite'])) {
$b[$typeId] = $priority;
} else {
$a[$typeId] = $priority;
}
}
asort($a, SORT_NUMERIC);
asort($b, SORT_NUMERIC);
Sencillo
El tipo de productos simples debe usarse para que, por lo general, tengan una configuración
única (talla única para todos). Esto podría incluir elementos tales como:
https://riptutorial.com/es/home 35
Agrupados
Los productos agrupados le permiten crear un nuevo producto utilizando uno o más productos
existentes en su tienda. Por ejemplo, supongamos que ya tiene una "Figura de Acción de Barrack
Obama" y una "Figura de Acción de George W. Bush" en su tienda y desea venderlas como un
paquete. Simplemente creará un nuevo producto agrupado (llamémoslo "Obama + Bush
(¡obtenga ambos y gastemos el doble!)", Luego agregue ambas figuras de acción al grupo a
través de la pestaña "Productos asociados".
Configurable
Producto configurable: este producto permite a sus clientes seleccionar la variante que desean al
elegir las opciones. Por ejemplo, puedes vender camisetas en dos colores y tres tamaños.
Debería crear seis productos simples como productos individuales (cada uno con sus propias
SKU) y luego agregar estos seis a un producto configurable donde los clientes pueden elegir el
tamaño y el color, y luego agregarlos a su carrito. Es posible una funcionalidad muy similar
mediante el uso de Opciones personalizadas para productos simples. La diferencia entre un
producto configurable y un producto que incluye opciones personalizadas es que el inventario no
se verifica ni se actualiza para las opciones individuales durante la compra de las opciones
personalizadas.
Virtual
Los productos virtuales son aquellos que no tienen una contraparte física o digital. No se envían,
ni tienen un enlace de descarga. Este tipo de producto podría ser utilizado para servicios como:
• Limpieza de la casa
• Suscripción al boletín de 1 año
Nota: Si utiliza productos virtuales para "suscripciones", es importante tener en cuenta que no hay
una forma integrada de administrar las suscripciones de renovación automática. Todas las
compras realizadas en Magento, independientemente del tipo de producto, son compras únicas.
Haz
Este tipo de producto también se conoce como un "kit" en otro software de comercio electrónico.
Este tipo de producto es ideal para circunstancias en las que el usuario debe seleccionar una
cantidad de opciones configurables, pero al menos una opción. Esto podría incluir productos
como:
Descargable
https://riptutorial.com/es/home 36
Los productos descargables son similares a los productos virtuales, excepto que incluyen la
capacidad de agregar uno o más archivos digitales para descargar. Los archivos pueden cargarse
a través de la interfaz de administración, o bien cargarlos directamente en el servidor a través de
FTP y luego agregarlos por URL. Cuando un cliente compra un producto descargable, Magento
generará un enlace seguro y encriptado (para que los clientes no puedan ver la ubicación real del
archivo) para que ese cliente descargue su archivo.
• Música / MP3s
• Software de ordenador
Nota : si tiene SSL habilitado para su sitio, las descargas pueden fallar en todas las versiones de
IE, ya que IE contiene un error que impide la descarga a través de conexiones seguras si se
establece el encabezado de no caché. Esto puede solucionarse fácilmente en un archivo
htaccess eliminando los encabezados sin almacenamiento en caché y sin almacenamiento, o
forzando que los enlaces de descarga no sean seguros.
https://riptutorial.com/es/home 37
Capítulo 14: Estructura del módulo
Observaciones
Los módulos existen para ser extendidos. No puede cambiar the app/code/ archivos sin prohibir
futuras actualizaciones. En su lugar, agregamos un módulo a la app/code/local directorio
app/code/local (puede que falte el directorio local, si es así, debe crearse manualmente. Esto es
común en las versiones posteriores de Magento) para agregar funcionalidad local personalizada.
Todos los archivos de configuración del módulo comienzan con una etiqueta <config> . El nuevo
módulo se declara dentro de la etiqueta <modules> . Llamaremos a un módulo llamado
YOUR_COMPANY_HelloWorld, por lo tanto, se utilizan las etiquetas <YOUR_COMPANY_HelloWorld> .
Aquí definimos la versión (primera = 0.0.1)
Examples
Creando un módulo desde cero (Hello World)
Lo primero que deben deshabilitar los desarrolladores es el caché del sistema. De lo contrario, el
desarrollo se convertirá en un dolor, ya que cualquier cambio requerirá un lavado. Desde el panel
de administración de magento: navegue a System > Cache Management > Select All > Actions :
Disable. Utilice la siguiente guía para crear un nuevo módulo:
• Ahora tenemos una ubicación personalizada para nuestros módulos. Cree otro directorio,
llámelo como algo relacionado con el tipo de módulo que desea crear, por ejemplo, app /
code / local / <YOUR_COMPANY> / HelloWorld / - "HelloWorld" es lo que llamaré este
módulo.
• Este directorio necesita un config.xml para que Magento lo reconozca como un nuevo
módulo. Crea otra carpeta llamada etc Seguido de un archivo xml llamado config.xml. El
directorio debería verse como app/code/local/<YOUR_COMPANY/HelloWorld/etc/config.xml Esta
es la estructura del archivo xml:
https://riptutorial.com/es/home 38
<?xml version="1.0" encoding="UTF-8" ?>
<config>
<modules>
<YOUR_COMPANY_HelloWorld>
<version>0.0.1</version>
</YOUR_COMPANY_HelloWorld>
</modules>
</config>
• Una vez más, las etiquetas de configuración y módulo se utilizan para declarar un nuevo
módulo a Magento. Activo es el valor predeterminado al que se puede acceder en el Admin
Panel under System > Configuration > Advanced . codePool le dice a Magento en qué directorio
buscar. local en nuestro caso
• Siguiendo con el tutorial; Utilizaremos algunos de estos elementos XML para crear clases y
manipular todas las páginas en la parte frontal de nuestro sitio. Para volver al archivo
config.xml , escriba lo siguiente en la etiqueta </modules> :
<global>
<!-- adding a new block definition -->
<blocks>
<!-- A unique short name for our block files -->
<helloworld>
<!-- the location of our modules block -->
<class>YOUR_COMPANY_HelloWorld_Block</class>
</helloworld>
</blocks>
</global>
<!-- We are making changes to the frontend -->
<frontend>
<!-- We are making changes to the layout of the front end -->
<layout>
<!-- we are adding a new update file -->
https://riptutorial.com/es/home 39
<updates>
<!-- Creating the name of our update and linking it the module -->
<helloworld module="YOUR_COMPANY_HelloWorld">
<!-- The name of the layout file we are adding -->
<file>helloworld.xml</file>
</helloworld>
</updates>
</layout>
</frontend>
• Estamos cambiando el diseño. Por lo tanto, necesitamos crear este Handle en el directorio
de diseño. proceder a app/design/frontend/base/default/layout . Le dijimos al módulo que
buscara el archivo helloworld.xml . Por eso debemos crearlo en este directorio. Que estas
esperando. ¡¡Hazlo!! y poblarlo con:
• Ahora, aquellos de ustedes que tengan una pequeña experiencia con Magento, o que hayan
leído algunos tutoriales más notables de Magento, pueden estar quedándose boquiabiertos
ante el hecho de que estamos realizando cambios en base / predeterminado ya que aquí es
donde se encuentran los archivos principales de Magento. Sin embargo, no estamos
modificando ningún archivo aquí, estamos creando nuevos y, además, estamos prefijando
nuestro nombre de archivo con "helloworld", por lo que hay muy pocas posibilidades de que
esto entre en conflicto con otros módulos o cause problemas con la actualización de
Magento en el futuro. ¡Días felices!
https://riptutorial.com/es/home 40
• En helloworld.xml indicamos en la plantilla un footer.phtml . Continúe con
app/design/frontend/base/default/template y cree un directorio helloworld .
• Dentro de este directorio, cree el archivo footer.phtml y rellénelo con HTML, este tutorial
simplemente lo escribe para mostrar algunas funciones de PHP vinculadas con nuestro
archivo PHTML:
• Ahora necesitamos crear nuestro propio objeto de bloque para unir la plantilla con nuestra
funcionalidad de bloque. Cree el directorio app / code / local / YOUR_COMPANY /
HelloWorld / Block / y cree el archivo Footer.php dentro de este. Esto fue referenciado en
nuestro zeta_layout.xml en el tipo "helloworld / footer". Rellene este archivo con:
<?php
class YOUR_COMPANY_HelloWorld_Block_Footer extends Mage_Core_Block_Template {
public function getDate() {
$date = date('Y-m-d');
return urlencode($date);
}
}
?>
• Esta es la funcionalidad que getDate() nuestra llamada getDate() que llamamos desde
nuestro archivo .phtml . Extendemos el Mage_Core_Block_Template .
• Esta funcionalidad ahora está completa. ¡Prueba esto yendo a tu página de inicio donde
deberías ver tu módulo en el pie de página de cada página!
https://riptutorial.com/es/home 41
Capítulo 15: Estructura MVC
Observaciones
MVC significa Model-View-Controller. Cualquier aplicación que separe su acceso a datos, lógica
de negocios e interfaz de usuario se llama MVC. Puede haber dos tipos de MVC: basado en
convenciones y basado en configuración. Por ejemplo, cakePHP está basado en convenciones,
es decir, solo necesita seguir las instrucciones del sistema central para preparar su módulo en
unas pocas líneas. Magento se basa en la configuración, es decir, debe especificar cada una de
las cosas en el archivo de configuración de su módulo para que funcione. Magento tiene
controlador (para enrutamiento), bloque, modelo y archivo de plantilla. Cómo funciona el MVC de
Magento:
Examples
Entender MVC en Magento
https://riptutorial.com/es/home 42
MVC Flow en Magento
https://riptutorial.com/es/home 43
https://riptutorial.com/es/home 44
Capítulo 16: Hoja de trucos para tareas
rápidas
Observaciones
https://gist.github.com/arosenhagen/2397824
Examples
Obtener producto Cantidad en stock
carga ($ id); // o cárguelo por SKU // $ sku = "microsoftnatural"; // $ _product = Mage :: getModel
('catalog / product') -> loadByAttribute ('sku', $ sku); $ stock = Mage :: getModel ('cataloginventory
/ stock_item') -> loadByProduct ($ _ product); print_r ($ stock-> getData ()); echo $ stock-> getQty
(); echo $ stock-> getMinQty (); echo $ stock-> getMinSaleQty ();
https://riptutorial.com/es/home 45
Capítulo 17: Imagen del producto Urls
Introducción
Obtener urls de imagen de producto para miniatura, imagen pequeña e imagen base. Obtener en
caché también y no cachés URLs de medios directos.
Examples
Imágenes en caché de URL
Mage::helper('catalog/image')->init($item->getProduct(), 'thumbnail');
Mage::helper('catalog/image')->init($item->getProduct(), 'small_image');
Mage::helper('catalog/image')->init($item->getProduct(), 'image');
Mage::getModel('catalog/product_media_config')->getMediaUrl($product->getThumbnail());
//Thumbnail
Mage::getModel('catalog/product_media_config')->getMediaUrl($product->getSmallImage());
//Small Image
Mage::getModel('catalog/product_media_config')->getMediaUrl($product->getImage()); //Base
https://riptutorial.com/es/home 46
Capítulo 18: Iniciar sesión para archivar
Sintaxis
• registro de función estática pública ($ mensaje, $ nivel = nulo, $ archivo = '', $ fuerzaLog =
falso)
Parámetros
Parámetro Detalles
cadena $
El mensaje que será registrado.
mensaje
Observaciones
https://riptutorial.com/es/home 47
Tipo de variable de mensaje
Aunque la documentación define que el mensaje debe ser una cadena, si se pasa una matriz, hay
un bloque de código en ese método para cuidarlo con print_r :
if (is_array($message) || is_object($message)) {
$message = print_r($message, true);
}
Nivel de registro
Si el parámetro de nivel se establece en nulo, se toma el nivel DEBUG.
Examples
Archivo de registro personalizado
Esto se registrará en
/var/log/mylogfile.log
Registro predeterminado
https://riptutorial.com/es/home 48
Los objetos y las matrices se escriben automáticamente mediante una directiva print_r() . Tenga
cuidado al usar objetos, ya que estos pueden tener un tamaño considerable.
Mage::logException($e);
https://riptutorial.com/es/home 49
Capítulo 19: Magento Caching
Examples
Cómo almacenar en caché datos personalizados en Magento
Mage::app()->removeCache($cacheId);
Mage::app()->cleanCache()
o:
Mage::app()->getCacheInstance()->flush();
Configuración de redis:
https://riptutorial.com/es/home 50
4. Edita tu app/etc/local.xml :
<global>
...
<cache>
<backend>Cm_Cache_Backend_Redis</backend>
<backend_options>
<server>127.0.0.1</server> <!-- or absolute path to unix socket -->
<port>6379</port>
<persistent></persistent>
<database>0</database>
<password></password>
<force_standalone>0</force_standalone>
<connect_retries>1</connect_retries>
<automatic_cleaning_factor>0</automatic_cleaning_factor>
<compress_data>1</compress_data>
<compress_tags>1</compress_tags>
<compress_threshold>20480</compress_threshold>
<compression_lib>gzip</compression_lib> <!-- Supports gzip, lzf and snappy -->
</backend_options>
</cache>
...
</global>
https://riptutorial.com/es/home 51
Capítulo 20: Manejo de errores magento,
mensajes e informes.
Observaciones
https://riptutorial.com/es/home 52
/var/report/
Los archivos de informe se generan en esta carpeta después de que un usuario haya
encontrado un error. Cada archivo solo incluye los detalles de un error. Estos se
utilizan para ocultar los detalles del error del público. En la página de error habrá un
número de informe que es una referencia al archivo correspondiente con el mismo
nombre en la carpeta /var/report/ .
Examples
Habilitar la visualización de informes de errores
error_reporting(E_ALL | E_STRICT);
error_reporting(E_ALL);
#ini_set('display_errors', 1);
Para hacer que el error sea legible y más fácil de entender, haga lo siguiente:
https://riptutorial.com/es/home 53
3. Actualizar la página de error en el navegador.
https://riptutorial.com/es/home 54
Capítulo 21: Modelo
Examples
Modelo de carga
Puede cargar el modelo de Magento usando el siguiente código: Mage :: getModel ('nombre de
modelo / nombre de modelo')
Para crear un nuevo modelo en su módulo Agregue una carpeta Model en su carpeta raíz del
módulo y cree un archivo Modelname.php en esta carpeta. por ejemplo Rick / Demo / Model /
Modelname.php
<?php
class Rick_Demo_Model_Modelname {
Aquí un ejemplo:
2.0.4 Rick_Demo_Model
Mage::getModel('customemodelname/modelname')
https://riptutorial.com/es/home 55
Capítulo 22: Obtener el nombre de la
categoría de la página del producto
Examples
Obtener la categoría principal
$categoryName = Mage::registry('current_category')->getName();
foreach ($categoryName as $_category):
$categoryName = $_category->getName();
endforeach;
https://riptutorial.com/es/home 56
Capítulo 23: Obtener productos de la base de
datos
Examples
Obtener producto por sku
$sku = 'sku-goes-here';
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
$id = 1;
$product = Mage::getModel('catalog/product')->load($id);
if($product->getId()){
//product was found
}
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToFilter('sku', array('like' => 'UX%'));
$collection = Mage::getModel('catalog/product')->getCollection();
// Using operator
$collection->addAttributeToFilter('status', array('eq' => 1));
// Without operator (automatically uses 'equal' operator
$collection->addAttributeToFilter('status', 1);
$product->getSku();
$product->getName();
// Alternative method
$product->getData('sku');
$product->getData('name');
https://riptutorial.com/es/home 57
foreach($collection as $product) {
$product->getSku();
$product->getName();
// Alternative method
$product->getData('sku');
$product->getData('name');
}
//all attributes
$collection = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('*');
//specific attributes
$collection = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('name');
//certain attributes are special, such as price and images
//for images, then you can use 'getMediaGalleryImages'
$product->load('media_galley');
$sku = 'some-sku';
$productId = Mage::getModel('catalog/product')->getIdBySku($sku);
if($productId){
//sku exists
}
$_productCollection = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToFilter('sku', array('in' => $skuList));
$_productCollection = Mage::getResourceModel('catalog/product_collection')
->addAttributeToFilter('sku', array('in' => $skuList));
https://riptutorial.com/es/home 58
$collection = Mage::getModel('catalog/product')
->getCollection()
->setPageSize(20)
->setCurPage(1);
https://riptutorial.com/es/home 59
Capítulo 24: Obtener usuario actual
Examples
Obtener usuario administrador actual
Mage::getSingleton('admin/session')->getUser();
Mage::helper('customer')->getCustomer();
Mage::getSingleton('customer/session')->getCustomer();
Mage::getSingleton('customer/session')->isLoggedIn()
https://riptutorial.com/es/home 60
Capítulo 25: Obtenga el nombre de la tienda y
otros detalles de la configuración del sistema
Examples
Obtenga el nombre del frontend para la vista de tienda actual
Mage::app()->getStore()->getFrontendName();
Mage::app()->getStore()->getStoreId();
Mage::app()->getStore()->getCode();
Esto devuelve el código de la tienda, por ejemplo, 'en' para un escaparate que está configurado
para el inglés y se llama 'en', y no la identificación numérica.
Mage::app()->getStore()->getIsActive();
Mage::app()->getStore()->getWebsiteId();
Mage::app()->getStore();
Mage::app()->getStore()->getGroup()->getName()
Mage::app()->getStores();
https://riptutorial.com/es/home 61
Devuelve una matriz de modelos Mage_Core_Model_Store .
Lea Obtenga el nombre de la tienda y otros detalles de la configuración del sistema en línea:
https://riptutorial.com/es/magento/topic/1876/obtenga-el-nombre-de-la-tienda-y-otros-detalles-de-
la-configuracion-del-sistema
https://riptutorial.com/es/home 62
Capítulo 26: Obteniendo URLs de Magento
Sintaxis
• $ this-> getSkinUrl ('images / my-image.jpg');
Parámetros
Observaciones
Obtenga url de imágenes formateadas y evite dependencias temáticas.
Examples
En la interfaz actual / tema
Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);
Mage::getBaseUrl();
$this->getSkinUrl('images/imagename.gif', array('_secure'=>true));
Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
$this->getSkinUrl('images/imagename.jpg');
https://riptutorial.com/es/home 63
Obtener url de tienda
Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
Obtener js url
Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS);
Mage::helper('core/url')->getCurrentUrl();
https://riptutorial.com/es/home 64
Capítulo 27: Optimizando Magento Para
Velocidad
Examples
Optimizando Magento cambiando el archivo .htaccess
Magento es una aplicación de comercio electrónico muy popular. Ofrece una gran cantidad de
personalización y habilidades desde la instalación inicial. Aquí hay algunas sugerencias para
optimizar una instalación de Magento.
En su archivo .htaccess para Magento encontrará una sección de texto que comienza con la
línea,
Esta sección de código se puede usar para activar el módulo mod_deflate de Apache, que
proporciona compresión para texto, css y javascript. Deseará descomentar (eliminar el símbolo #)
varias líneas para que se vea así:
############################################
http://developer.yahoo.com/performance/rules.html#gzip
https://riptutorial.com/es/home 65
Habilitación de encabezados caducidad
Los que visitan por primera vez cualquier página web deben realizar varias solicitudes HTTP. Al
utilizar el encabezado "Expires", los componentes de las solicitudes se pueden almacenar en
caché. Esto evita solicitudes HTTP innecesarias en vistas de página subsiguientes.
Desea buscar el área del archivo .htaccess que comienza con <IfModulemod_expires.c> y
termina con la primera vez que lo ve, y que se vea así:
<IfModule mod_expires.c>
############################################
## Add default Expires header
## http://developer.yahoo.com/performance/rules.html#expires
ExpiresActive On
ExpiresDefault "access plus 1 year"
</IfModule>
Configuración de administrador
El modelo que usa Magento para almacenar resultados de datos de clientes y productos en
consultas de SQL más largas que el promedio y más lecturas. Al habilitar la opción de catálogo
plano para categorías y productos, los datos del producto se fusionarán en una tabla, lo que
mejorará el rendimiento.
[box type = "alert" border = "full"] Nota: Esto puede romper algunas aplicaciones. Después de
realizar los siguientes pasos, asegúrese de que el sitio siga funcionando como lo hizo antes de
habilitar esta función. [/ Box]
https://riptutorial.com/es/home 66
1. Inicie sesión en su área de administración y vaya a - Sistema> Herramientas> Compilación
Hay varias tablas utilizadas por Magento para el registro. Si bien el registro es muy importante
para saber qué tiene y qué está sucediendo en su tienda, los registros pueden crecer mucho muy
rápidamente, por lo que el mantenimiento regular puede ser de gran ayuda.
log_customer
log_visitor
log_visitor_info
log_url
log_url_info
log_quote
report_viewed_product_index
report_compared_product_index
report_event
catalog_compare_item
https://riptutorial.com/es/home 67
Capítulo 28: Pedidos
Examples
Obtener orden por ID
$orderid = 12345;
$order = Mage::getModel('sales/order')->load($orderid);
$incrementid = 100000000;
$order = Mage::getModel('sales/order')->loadByIncrementId($incrementid);
$orderid = 12345;
$order = Mage::getModel('sales/order')->load($orderid);
Y añadir comentario:
https://riptutorial.com/es/home 68
Capítulo 29: Representación
Observaciones
Personalizar la funcionalidad del núcleo con temas
Los temas tienen archivos de diseño que, entre otras cosas, se pueden usar para cambiar los
bloques que aparecen en la página. La plantilla de bloque también se puede cambiar y se pueden
llamar diferentes métodos.
Los temas estructurados jerárquicos de Magento significa que un tema base puede extenderse y
asignarse a nivel de tienda.
Un paquete tiene múltiples temas. Cada uno de los temas en un paquete se hereda del tema
predeterminado dentro de un paquete.
Diseño alternativo
1. {paquete} / {tema}
2. {paquete} / predeterminado
3. base / predeterminado
Para agregar más directorios al mecanismo de reserva del tema, es necesario volver a escribir el
método Mage_Core_Model_Design_Package :: getFilename
Bloques
Los bloques se utilizan para la salida. El bloque raíz es el padre de todos los bloques y es de tipo
Mage_Page_Block_Html.
https://riptutorial.com/es/home 69
Los bloques Mage_Core_Block_Template usan archivos de plantilla para representar contenido.
El nombre del archivo de la plantilla se establece dentro de setTemplate () o addData ('plantilla')
con rutas relativas.
Las plantillas son solo piezas de PHP incluidas en Mage_Core_Block_Template. Por lo tanto $
esto en una plantilla se refiere al bloque.
Mage_Core_Block_Template utiliza un búfer antes de incluir una plantilla para evitar la salida
prematura.
Todos los bloques de salida se representan, por ejemplo, llamando a HTML (), que a su vez
puede elegir representar a sus hijos.
Hay dos eventos que se activan alrededor de la representación de bloques que se pueden usar
para modificar el bloque antes y después de representar el HTML:
Se puede acceder a las instancias de bloques a través del diseño, por ejemplo, Mage :: app () ->
getLayout () y $ controller-> getLayout (). La salida del bloque es controlada por la función
_toHtml ().
Es posible agregar un bloque al diseño actual, pero se debe hacer antes de llamar al método
renderLayout ().
Diseño XML
<reference>
-edit a block
<block>
- define a block
<action>
- call method on a block
<update>
- include nodes from another handle.
<config>
https://riptutorial.com/es/home 70
<{area}>
<layout>
<updates>
<{name}>
<file>{filepath}</file>
</{name}>
</updates>
</layout>
</{area}>
</config>
• Cambios de plantilla
• Cambios de diseño
• Anulando bloques
• Observadores Las variables en bloques se pueden establecer de las siguientes maneras:
• Diseño -A través de acciones o atributos
• Controlador - $ this-getLayout () -> getBlock ()
• Bloques secundarios - $ this-> getChild ()
• Otro -Mage :: app () -> getLayout ()
Examples
Diferentes mecanismos para desactivar la salida de bloque.
Mage::app()->getFrontController()->getAction()->setFlag('','no-renderLayout');
https://riptutorial.com/es/home 71
• Mage_Core_Block_Template
• Mage_Core_Block_Text_List
• Mage_Core_Block_Messages
• Mage_Core_Block_Text_Tag
• Mage_Core_Block_Text
• Mage_Page_Block_Template_Links Todos los bloques son bloques estructurales o Todos
los bloques son bloques estructurales o bloques de contenido. Ejemplo:
• core / text_list
No utiliza plantillas; simplemente se utiliza para generar el contenido de todos sus bloques
secundarios uno tras otro.
• núcleo / plantilla
La salida de este tipo de bloque depende de la plantilla asignada. Sus bloques secundarios se
envían dentro de su plantilla a través del método getChildHtml ('block_name'). Ejemplo: core /
text_list - Ejemplo de un bloque estructural. No utiliza plantillas; simplemente se utiliza para
generar el contenido de todos sus bloques secundarios uno tras otro. núcleo / plantilla - Ejemplo
de un bloque de contenido. La salida de este tipo de bloque depende de la plantilla asignada. Sus
bloques secundarios se envían dentro de su plantilla a través del método getChildHtml
('block_name').
$this->getLayout()->getBlock('head')->getTemplate();
/**
* Get specified tab grid
*/
public function gridOnlyAction()
{
$this->_initProduct();
$this->getResponse()->setBody(
$this->getLayout()->createBlock('adminhtml/catalog_product_edit_tab_' .
$this->getRequest()->gerParam('gridOnlyBlock')
)
->toHtml()
);
}
https://riptutorial.com/es/home 72
Capítulo 30: Shell, CLI
Observaciones
Lo esencial
• Necesitas tener una línea de comando de Linux o conectarte usando SSH a tu servidor para
usar scripts de shell.
• Ve a tu MAGENTO_ROOT/shell
• Script se puede ejecutar escribiendo, es decir
2. indexer.php
3. compiler.php
4. log.php
Hay 2 formas de iniciar Magento, pero solo una es Magento. Lea más arriba en la sección de
ejemplos.
Examples
Usando shell sin extender Mage_Shell_Abstract
require_once 'app/Mage.php';
Mage::app();
// Your code
https://riptutorial.com/es/home 73
Esta es la forma más sencilla pero no realmente la de Magento porque no estamos usando la
clase que amplía Mage_Shell_Abstract : la clase que, cuando se amplía, nos proporciona
herramientas para analizar los argumentos de la línea de comandos, llama a
__applyPhpVariables() en su constructor (función analiza .htaccess archivos y aplica la
configuración de php a shell script).
Camino magento
El archivo reside en shell/custom.php
<?php
require_once' abstract.php';
// Usage help
public function usageHelp()
{
return <<<USAGE
Usage: php -f scriptname.php -- [options]
USAGE;
}
}
https://riptutorial.com/es/home 74
// Instantiate
$shell = new Stackoverflow_Shell_Custom();
// Initiate script
$shell->run();
Reindexar todo
Índice Código
https://riptutorial.com/es/home 75
Capítulo 31: Sql script para eliminar datos de
prueba
Introducción
Sql script para eliminar datos de prueba de productos, clientes, registros y ventas.
Examples
Eliminar datos de prueba del cliente
SET FOREIGN_KEY_CHECKS=0;
-- Customers
TRUNCATE `customer_address_entity`;
TRUNCATE `customer_address_entity_datetime`;
TRUNCATE `customer_address_entity_decimal`;
TRUNCATE `customer_address_entity_int`;
TRUNCATE `customer_address_entity_text`;
TRUNCATE `customer_address_entity_varchar`;
TRUNCATE `customer_entity`;
TRUNCATE `customer_entity_datetime`;
TRUNCATE `customer_entity_decimal`;
TRUNCATE `customer_entity_int`;
TRUNCATE `customer_entity_text`;
TRUNCATE `customer_entity_varchar`;
ALTER TABLE `customer_address_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_varchar` AUTO_INCREMENT=1;
-- Search
TRUNCATE `catalogsearch_query`;
TRUNCATE `catalogsearch_fulltext`;
TRUNCATE `catalogsearch_result`;
ALTER TABLE `catalogsearch_query` AUTO_INCREMENT=1;
ALTER TABLE `catalogsearch_fulltext` AUTO_INCREMENT=1;
ALTER TABLE `catalogsearch_result` AUTO_INCREMENT=1;
-- Polls
TRUNCATE `poll`;
TRUNCATE `poll_answer`;
TRUNCATE `poll_store`;
TRUNCATE `poll_vote`;
ALTER TABLE `poll` AUTO_INCREMENT=1;
https://riptutorial.com/es/home 76
ALTER TABLE `poll_answer` AUTO_INCREMENT=1;
ALTER TABLE `poll_store` AUTO_INCREMENT=1;
ALTER TABLE `poll_vote` AUTO_INCREMENT=1;
-- Reports
TRUNCATE `report_viewed_product_index`;
ALTER TABLE `report_viewed_product_index` AUTO_INCREMENT=1;
-- Newsletter
TRUNCATE `newsletter_queue`;
TRUNCATE `newsletter_queue_link`;
TRUNCATE `newsletter_subscriber`;
TRUNCATE `newsletter_problem`;
TRUNCATE `newsletter_queue_store_link`;
ALTER TABLE `newsletter_queue` AUTO_INCREMENT=1;
ALTER TABLE `newsletter_subscriber` AUTO_INCREMENT=1;
ALTER TABLE `newsletter_problem` AUTO_INCREMENT=1;
ALTER TABLE `newsletter_queue_store_link` AUTO_INCREMENT=1;
-- Wishlist
TRUNCATE `wishlist`;
ALTER TABLE `wishlist` AUTO_INCREMENT=1;
SET FOREIGN_KEY_CHECKS=1;
SET FOREIGN_KEY_CHECKS = 0;
https://riptutorial.com/es/home 77
TRUNCATE TABLE `catalog_product_entity`;
TRUNCATE TABLE `cataloginventory_stock_item`;
TRUNCATE TABLE `cataloginventory_stock_status`;
TRUNCATE TABLE `catalog_category_entity`;
TRUNCATE TABLE `catalog_category_entity_datetime`;
TRUNCATE TABLE `catalog_category_entity_decimal`;
TRUNCATE TABLE `catalog_category_entity_int`;
TRUNCATE TABLE `catalog_category_entity_text`;
TRUNCATE TABLE `catalog_category_entity_varchar`;
TRUNCATE TABLE `catalog_category_product`;
TRUNCATE TABLE `catalog_category_product_index`;
TRUNCATE TABLE `catalog_product_relation`;
TRUNCATE TABLE `catalog_product_flat_1`;
TRUNCATE TABLE `catalog_category_flat_store_1`;
TRUNCATE TABLE `catalog_category_flat_store_2`;
TRUNCATE TABLE `catalog_category_flat_store_3`;
-- Tags
TRUNCATE `tag`;
TRUNCATE `tag_relation`;
TRUNCATE `tag_summary`;
ALTER TABLE `tag` AUTO_INCREMENT=1;
ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
SET FOREIGN_KEY_CHECKS = 1;
SET FOREIGN_KEY_CHECKS=0;
TRUNCATE `sales_payment_transaction`;
TRUNCATE `sales_flat_creditmemo`;
TRUNCATE `sales_flat_creditmemo_comment`;
TRUNCATE `sales_flat_creditmemo_grid`;
TRUNCATE `sales_flat_creditmemo_item`;
TRUNCATE `sales_flat_order`;
TRUNCATE `sales_flat_order_address`;
TRUNCATE `sales_flat_order_grid`;
TRUNCATE `sales_flat_order_item`;
TRUNCATE `sales_flat_order_status_history`;
TRUNCATE `sales_flat_quote`;
TRUNCATE `sales_flat_quote_address`;
TRUNCATE `sales_flat_quote_address_item`;
TRUNCATE `sales_flat_quote_item`;
TRUNCATE `sales_flat_quote_item_option`;
TRUNCATE `sales_flat_order_payment`;
TRUNCATE `sales_flat_quote_payment`;
TRUNCATE `sales_flat_quote_shipping_rate`;
TRUNCATE `sales_flat_shipment`;
TRUNCATE `sales_flat_shipment_item`;
TRUNCATE `sales_flat_shipment_grid`;
TRUNCATE `sales_flat_shipment_track`;
TRUNCATE `sales_flat_shipment_comment`;
TRUNCATE `sales_flat_invoice`;
TRUNCATE `sales_flat_invoice_grid`;
TRUNCATE `sales_flat_invoice_item`;
TRUNCATE `sales_flat_invoice_comment`;
TRUNCATE `sales_order_tax`;
https://riptutorial.com/es/home 78
TRUNCATE `sales_order_tax_item`;
-- Reports
TRUNCATE `sales_bestsellers_aggregated_daily`;
TRUNCATE `sales_bestsellers_aggregated_monthly`;
TRUNCATE `sales_bestsellers_aggregated_yearly`;
TRUNCATE `sales_invoiced_aggregated`;
TRUNCATE `sales_invoiced_aggregated_order`;
TRUNCATE `sales_order_aggregated_created`;
TRUNCATE `sales_order_aggregated_updated`;
TRUNCATE `sales_refunded_aggregated`;
TRUNCATE `sales_refunded_aggregated_order`;
TRUNCATE `sales_shipping_aggregated`;
TRUNCATE `sales_shipping_aggregated_order`;
TRUNCATE `coupon_aggregated`;
TRUNCATE `review`;
TRUNCATE `review_detail`;
TRUNCATE `review_entity_summary`;
TRUNCATE `rating_store`;
TRUNCATE `eav_entity_store`;
ALTER TABLE `eav_entity_store` AUTO_INCREMENT=1;
SET FOREIGN_KEY_CHECKS=1;
https://riptutorial.com/es/home 79
SET FOREIGN_KEY_CHECKS=0;
TRUNCATE `log_customer`;
TRUNCATE `log_visitor`;
TRUNCATE `log_visitor_info`;
TRUNCATE `log_visitor_online`;
TRUNCATE `log_quote`;
TRUNCATE `log_summary`;
TRUNCATE `log_summary_type`;
TRUNCATE `log_url`;
TRUNCATE `log_url_info`;
TRUNCATE `sendfriend_log`;
TRUNCATE `report_event`;
TRUNCATE `dataflow_batch_import`;
TRUNCATE `dataflow_batch_export`;
TRUNCATE `index_process_event`;
TRUNCATE `index_event`;
ALTER TABLE `log_customer` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor_online` AUTO_INCREMENT=1;
ALTER TABLE `log_quote` AUTO_INCREMENT=1;
ALTER TABLE `log_summary` AUTO_INCREMENT=1;
ALTER TABLE `log_url_info` AUTO_INCREMENT=1;
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;
ALTER TABLE `report_event` AUTO_INCREMENT=1;
ALTER TABLE `dataflow_batch_import` AUTO_INCREMENT=1;
ALTER TABLE `dataflow_batch_export` AUTO_INCREMENT=1;
ALTER TABLE `index_event` AUTO_INCREMENT=1;
SET FOREIGN_KEY_CHECKS=1;
https://riptutorial.com/es/home 80
Capítulo 32: Url actual
Sintaxis
• $this->helper('core/url')->getCurrentUrl();
Examples
Página principal
volver: http://www.example.com/
volver: http://www.example.com/my-product.html
$isSecure = Mage::app()->getStore()->isCurrentlySecure();
https://riptutorial.com/es/home 81
Capítulo 33: URLs específicas
Examples
Carro url
$this->helper('checkout/url')->getCartUrl();
Mage::helper('checkout/url')->getCartUrl();
URL de salida
$this->helper('checkout/url')->getCheckoutUrl();
Mage::helper('checkout/url')->getCheckoutUrl();
Mage::helper('customer/data')->getLogoutUrl();
Mage::helper('customer/data')->getForgotPasswordUrl();
https://riptutorial.com/es/home 82
Mage::helper('customer/data')->getAccountUrl();
{{skin url=’images/sampleimage.jpg’}}
{{media url=’/sampleimage.jpg’}}
{{store url=’mypage.html’}}
{{base url=”}}
<?php Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK);?>
<?php Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);?>
https://riptutorial.com/es/home 83
<?php Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);?>
<?php Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);?>
<?php Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS);?>
https://riptutorial.com/es/home 84
Creditos
S.
Capítulos Contributors
No
Agregue un precio
diferente para la
2 tienda múltiple Harsha Sampath
usando Magento
SOAP API
Atributos
3 Twinkal
personalizados
Colección completa
5 Twinkal
de productos
Cómo filtrar
7 wesleywmd
colecciones
Crear tarjetas de
regalo empresariales
8 JPMC, RamenChef
mediante
programación
Datos de tienda y
9 Twinkal
sitio web
EAV (valor de
10 lalit mohan
atributo de entidad)
Estructura del
12 Chris Rogers, RamenChef
módulo
https://riptutorial.com/es/home 85
tareas rápidas
Manejo de errores
18 magento, mensajes 7ochem, Charles, Pankaj Pareek, RamenChef
e informes.
19 Modelo Rickert
Obtener el nombre
20 de la categoría de la user2925795
página del producto
Obtener productos Akif, Alex, baoutch, bpoiss, ctrimm, gulshan maurya, jignesh
21
de la base de datos prajapati, mnoronha, Olavi Sau, pce, SH-
Obtener usuario
22 bpoiss, Rickert
actual
Obtenga el nombre
de la tienda y otros
23 detalles de la Henry's Cat, Robbie Averill
configuración del
sistema
Obteniendo URLs de
24 Nolwennig, Robbie Averill, Steven Church
Magento
Optimizando
25 Magento Para Lemon Kazi
Velocidad
https://riptutorial.com/es/home 86
Mayank Pandeyz, Nolwennig, Qaisar Satti, Yogendra -
31 URLs específicas
eCommerce Developer
https://riptutorial.com/es/home 87