Tengo un nuevo trabajo donde trabajo estrictamente en Magento todos los días ahora. No tengo experiencia previa con Magento, ¡así que ha sido un desafío decir lo menos hasta ahora!
Permítanme explicar brevemente la extensión que estamos construyendo.
Nos permitirá mostrar una ventana emergente / modal. El contenido HTML del Modal se almacenará en
unStatic Block
PÁGINA DE ADMINISTRADOR
Por lo tanto, el panel de administración consta de una nueva pestaña en System/Confuration/
NUEVA PESTAÑA
El panel de administración le permite seleccionar en una lista desplegable en esa NUEVA PÁGINA DE PESTAÑAS el valor predeterminado Static Block
para usar en estas secciones ...
HOME PAGE
o HOME PAGE w/Items in Shopping Cart
ALL CATEGORY PAGES
o ALL CATEGORY PAGES w/Items in Shopping Cart
ALL PRODUCTS PAGES
o ALL PRODUCTS PAGES w/Items in Shopping Cart
ALL CMS PAGES
o ALL CMS PAGES w/Items in Shopping Cart
SHOPPING CART PAGE
o SHOPPING CART PAGE w/Items in Shopping Cart
VALORES POR DEFECTO
A continuación, las páginas reales de CMS , CATEGORÍA y PRODUCTO permiten la misma configuración que la página del Panel de administración, excepto que le permiten establecer STATIC BLOCK
una por elemento y anular la configuración predeterminada que teníamos en la configuración de administración anterior .
Hasta ahora tenemos el lado de administración de la extensión hecho. Tenemos todas las pestañas de administración para cada sección ... producto, categoría, CMS y página de configuración.
El siguiente paso será agregar a la misma extensión y hacer una Static Block
inserción en la página. Esto Static Block
será responsable de ... Mostrar la correcta Static Block
en cada página según la configuración establecida en las áreas mencionadas ...
- Determinar la página en la que estamos y el tipo de página (cms, producto, inicio, categoría)
- Luego tendrá que leer todas las configuraciones personalizadas que se establecieron en las áreas mencionadas anteriormente.
- Si se determina que estamos en una
Category
página, tendremos que obtener la categoría específica real en la que estamos. Por ejemploCategory 3
. Luego veremos si hay una configuración específica para esa categoría específica. ¡Si diceEnabled
que buscaremos cuálStatic Block
está guardado para esa categoría y lo mostraremos en nuestraStatic Block
página principal! - Si la categoría específica anterior se establece como
Disabled
nuestraModal Window
, buscaremos más arriba en las configuraciones más globales para el modal y veremos si un modal está habilitado para todas las categorías. En caso afirmativo, veremos cuálStatic Block
está configurado para mostrarse en todas las categorías. - Además de todo esto, realizará este proceso para cada uno de los tipos de página principal (producto, categorías, cms, inicio, carrito)
- También tendremos que verificar si el carrito de compras está vacío o no. SI no está vacío ... entonces tendremos que tenerlo en cuenta antes cuando comprobemos qué
Static Block
mostrar para esa página, ya que cada configuración permiteStatic Block
establecer un carro vacío y 1 para el carro no vacío. (Sé que esta es una tarea enorme y difícil, pero tenemos el lado del administrador hecho principalmente. Solo necesito hacer la parte que tenga en cuenta a todos para determinar quéStatic Block
mostrar en qué página en particular.
Entonces, para llevarme en la dirección correcta, tengo un par de preguntas más pequeñas ...
- ¿Cómo puedo determinar dentro de mi
Static Block
código (la parte PHP) en qué TIPO de PÁGINA estoy? Como mencioné, necesito saber si estoy en ... PÁGINA DE INICIO , PÁGINA DE CMS , PÁGINA DE CATEGORÍA , PÁGINA DE PRODUCTO o PÁGINA DE CARRITO . - Además del TIPO DE PÁGINA , necesito obtener la página real. Entonces, si estoy en la identificación del producto 1234, entonces necesito poder obtener la configuración (bloque estático establecido para esa página) para esa página en particular.
Sé que ha sido una publicación larga y posiblemente confusa. Si llegaste hasta aquí, gracias por tomarte tu tiempo para leer esto =)
Si puedes ayudarme con mi pregunta, cada pequeño trozo me acercará al objetivo final
A continuación hay un diagrama de flujo que hice sobre cómo necesitará trabajar mi módulo para determinar qué bloque estático insertar en la página
fuente
Mage_Widget
módulo, ¿verdad?Mage_Widget
? Necesito investigar eso tambiénRespuestas:
Además de lo que respondió @benmarks :
Aquí hay un pequeño código para verificar algunas de las condiciones que mencionó:
Para comprobar si el carrito está vacío o no usar
También preguntó si puede verificar la página actual dentro de un bloque CMS.
Probablemente no sea un buen enfoque (tendrías que incluir bloques personalizados, lo que anularía el propósito de usar bloques CMS en la primera página).
En cambio, es mejor verificar primero la página actual y luego elegir el bloque CMS para mostrar en función de eso.
EDITAR : corregido
Mage::app()->getRequest()->getFullActionName()
para serMage::app()->getFrontController()->getAction()->getFullActionName()
mencionado por @Joseph en los comentarios. ¡Gracias!fuente
Mage::app()->getRequest()->getFullActionName()
de una plantilla de carrito da como resultado un error fatal o al menos lo hizo para mí en 1.7.0.2.$this->getAction()->getFullActionName()
funcionó a la perfección!Muchos enfoques que podrías tomar. Recomiendo agregar su bloque a través del
<default>
controlador de actualización de diseño, que lo haría disponible en todas las páginas. En el_prepareLayout()
método de su bloque , puede determinar el alcance obteniendo el nombre completo de la acción actual del objeto de solicitud ($this->getRequest()->getFullActionName()
) y usándolo para determinar el contexto.Los productos y categorías se registrarán en el registro. Su bloque también podría mirar los identificadores de actualización de diseño, que incluirán identificadores de ID de producto o de categoría.
fuente
Para detectar la página de inicio, debe utilizar la cadena de identificación (por ejemplo, "inicio") para que coincida con el valor de configuración, en lugar de la identificación numérica:
Aquí hay algunos otros:
Gracias por la útil información a todos!
fuente