Quiero hacer algunas cosas, y soy nuevo y estoy muy, muy lejos de ser competente con Magento; Lo que pido es la mejor y más concisa forma de hacer lo siguiente:
Me gustaría editar el contenido de mi página de inicio, y probablemente cualquier otra página de CMS, a medida que avance en este proyecto, en mi editor de texto y no en el panel de administración WYSIWYG. Supongo que tendría una plantilla como la que
home-content.phtml
contiene mi marcado para mi carrusel (s) y cualquier otra cosa que termine poniendo en mi página de inicio. Me pareció que la forma más lógica de hacer esto es adjuntar mihome-content.phtml
algetChildHtml('content')
método en el Panel de administración -> CMS -> Páginas -> Página de inicio -> pestaña 'Diseño' -> Actualización de diseño xml con código como este:<reference name="content"> <block type="core/template" name="home-content" as="home-content" template="home-content.phtml" /> </reference>
Sin embargo, eso fue arruinado por lo siguiente que quería hacer ...
En mi opinión, la estructura HTML predeterminada de Magento está horriblemente inflada, con demasiados anidados
div
( wrapper -> página -> main-container col1-layout -> main -> col-main solo para llegar al contenido de una página) . Hace que el estilo con Sass sea una pesadilla para mí, con todos los estilos de esas clases divididos en 5 parciales Sass diferentes. Entonces, estoy limpiando la estructura predeterminada para que coincida con mis propios principios de diseño. Parte de esto significa eliminar elementos vacíos, como el infame<div class="std"> </div>
. La forma más eficaz de deshacerse de esto (ya que no planeo usar el panel de administración para el contenido) es con<remove name="cms.wrapper">
el XML de actualización de diseño de inicio de CMS. El problema es que esto elimina todo lo que agrego con el método anterior (reference name="content"
).
Básicamente: ¿Cómo puedo agregar contenido a mi página de inicio con a .phtml
y eliminar el <div class="std"> </div>
sin conflicto? No entiendo cómo la funcionalidad de admin -> CMS -> XML de actualización de diseño difiere de la funcionalidad de layout.xml, o por qué debería usar uno sobre el otro (por ejemplo, ¿no podría usarlo <cms index-index>
para hacer lo mismo?) .
Gracias de antemano a todos.
fuente
.std
agrega estilos de lista donde no se desean. Predeciblemente con Magento, es un procedimiento largo de resolver.Respuestas:
Permítanos dividir su problema en 3 secciones y revisarlo.
1. Necesita agregar un archivo de plantilla a su página CMS
El método que adopte aquí funcionará con seguridad. Es necesario agregar este fragmento de código dentro de su página de cms, en la pestaña de diseño
Dado que su archivo de plantilla está directamente
content
bloqueado, el contenido de su plantilla será procesado por magento. Por lo tanto, no necesita usaras
propiedades en sucore/template block
.2. Cómo evitar
<div class="std"></div>
Este div es en realidad un elemento div de contenedor para páginas cms. Vea la definición de este bloque aquí.
Como puede ver, el
cms.wrapper
bloque es de tipopage/html_wrapper
. Lo que hace este bloque es que envolverá todo su bloque secundario con un elemento div (elemento predeterminado) y renderizará los bloques secundarios automáticamente.Para evitar este bloqueo, ha utilizado este código
Sin embargo, está completamente equivocado. Elimina el envoltorio div de hecho. Pero junto con eso también elimina el bloqueo infantil
cms_page
. Estocms_page
es con un tipocms/page
. Eso significa que hace referencia al bloqueMage_Cms_Block_Page
. Este bloque es el "corazón" de las páginas de CMS. Entonces, al quitar el envoltorio, también se eliminó el bloque cardíaco de la página CMS. Es por eso que no obtuvo ningún resultado en su página de cms.Entonces, ¿qué debes hacer para evitar este envoltorio? La respuesta es bastante simple. Escape
cms_page
del envoltorio y luego retire el envoltorio de forma segura. Así que aquí está el código que debe usar en la sección de diseño de página de su cms.Como puede ver en el código xml de diseño, primero eliminamos el contenedor y, por lo tanto, insertamos el
cms_page
bloque a través de nuestro código. También usamos nuestro bloque de plantillas como puedes ver. Esto mostrará el contenido del archivo de plantilla primero en su página y luego el contenido de la página cms.3. Cómo admin -> CMS -> XML de actualización de diseño difiere de la funcionalidad de layout.xml
Supongamos que desea tener una apariencia especial para una de las páginas de CMS que tiene en su sitio. Para eso, el mejor método que puede optar es agregar una actualización de diseño a través de admin-> CMS-> Diseño. Esto se aplicará únicamente para la página CMS solamente.
Pero si necesita aplicar algunos cambios generales a todas las páginas de CMS, sería fácil hacerlo
layout.xml
.Por lo tanto, en general, qué método debería adoptar para cambiar el diseño depende únicamente de lo que desea lograr. Dependiendo de eso, debe ir con un método. No todo el método.
Espero que ayude
fuente
Si solo hay una página ofensiva, entonces la mejor y más fácil manera de IMO:
Edite la
"Design"
pestaña de la página CMS .Haga referencia al elemento contenedor, use el
setElementClass
método para aplicar sin clase o una nueva clase.fuente
Debería modificar el diseño, normalmente 1column.phtml, 2columns.phtml, etc. y hacerlos como desee / necesite.
Esos PHTML son la estructura básica de cualquier diseño y están llenos programáticamente de actualizaciones XML.
Esto no afectará a nada más si mantiene la coherencia entre sus plantillas y diseños en su propio tema.
fuente
if this is the home page, include this code ...
en todas las páginas de diseño y luego eliminarlogetCHildHtml('content')
en todas las páginas? Quiero aprender a usar Magento y sus herramientas son mejores, no solo el problema.Me tomó un minuto entender todas las instrucciones en la respuesta aceptada, así que para aprovecharla, esto es todo lo que se necesitaba para eliminar el envoltorio de todas las páginas de CMS:
<div class="std"></div>
En cms.xml, cambie el bloque cms_page a:
fuente