Я хочу сделать несколько вещей, и я новичок и очень и очень далек от опыта в Magento; то, о чем я прошу, - это самый лучший и краткий способ сделать следующее:
Я хотел бы редактировать содержимое моей домашней страницы - и, возможно, каждой другой страницы CMS, как я получу дальнейшее развитие в этом проекте - в моем текстовом редакторе, а не в административной панели WYSIWYG. Я предполагаю, что у меня просто будет шаблон, например,
home-content.phtml
содержащий мою разметку для моей карусели (ий) и все, что я в конечном итоге выложу на своей домашней странице. Это казалось мне наиболее логичным способом сделать это присоединять моюhome-content.phtml
кgetChildHtml('content')
методу в панели администратора -> CMS -> Страницы -> Главная страница -> вкладка «Design» -> Layout Update XML с кодом , как это:<reference name="content"> <block type="core/template" name="home-content" as="home-content" template="home-content.phtml" /> </reference>
Однако, это было испорчено следующей вещью, которую я хотел сделать ...
На мой взгляд, HTML-структура Magento по умолчанию ужасно раздута, со слишком большим количеством вложенных
div
( обертка -> страница -> основной контейнер col1-layout -> main -> col-main просто для того, чтобы добраться до содержимого страницы) , Это делает стилизацию с Sass кошмаром для меня, так как стили всех этих классов разделены на 5 различных частей Sass. Итак, я очищаю структуру по умолчанию, чтобы соответствовать моим собственным принципам проектирования. Частично это означает удаление пустых элементов, таких как пресловутый<div class="std"> </div>
. Самый эффективный способ избавиться от этого (так как я не планирую использовать панель администратора для контента) - это использовать<remove name="cms.wrapper">
в CMS Home Layout Update XML. Проблема в том, что это удаляет все, что я добавляю с помощью метода выше (reference name="content"
).
В основном: Как я могу добавить контент на свою домашнюю страницу с помощью .phtml
и удалить <div class="std"> </div>
без конфликта? Я не понимаю, чем функциональность admin -> CMS -> XML обновления макета отличается от функциональности layout.xml, или почему я должен использовать один поверх другого (например, не мог бы я использовать, <cms index-index>
чтобы сделать то же самое?) ,
Спасибо всем заранее.
источник
.std
добавляет список стилей, где они не нужны. Как и ожидалось с Magento, это длинная процедура для решения.Ответы:
Давайте разделим вашу проблему на 3 раздела и рассмотрим ее.
1. Вам нужно добавить файл шаблона на свою страницу CMS
Метод, который вы принимаете здесь, будет работать наверняка. То есть вам нужно добавить этот фрагмент кода внутри вашей страницы CMS, на вкладке дизайна
Поскольку ваш файл шаблона находится непосредственно под
content
блоком, содержимое вашего шаблона будет отображаться magento. Таким образом, вам не нужно использоватьas
собственность в вашемcore/template block
.2. Как избежать
<div class="std"></div>
Этот div на самом деле является элементом div оболочки для страниц cms. Смотрите определение этого блока здесь.
Как видите,
cms.wrapper
блок относится к типуpage/html_wrapper
. Этот блок выполняет обертывание всего своего дочернего блока с элементом div (элемент по умолчанию) и автоматически отображает дочерние блоки.Чтобы избежать этого блока, вы использовали этот код
Однако это совершенно неправильно. Это действительно удаляет div обертки действительно. Но наряду с этим он также удаляет дочерний блок
cms_page
. Этоcms_page
с типомcms/page
. Это означает, что это ссылка на блокMage_Cms_Block_Page
. Этот блок является «сердцем» CMS Pages. Таким образом, удаление оболочки обернуло сердечный блок страницы CMS. Вот почему вы не получили никакого вывода на своей странице CMS.Так что вы должны сделать, чтобы избежать этой обертки? Ответ довольно прост. Избегайте
cms_page
обертки, а затем безопасно удалите обертку. Итак, вот код, который вам нужно использовать в разделе макета страницы вашего CMS.Как вы можете видеть в коде макета XML, мы сначала удаляем оболочку и, следовательно, вставляем
cms_page
блок через наш код. Мы также использовали наш шаблонный блок, как вы можете видеть. При этом сначала будет отображаться содержимое файла шаблона на вашей странице, а затем содержимое страницы cms.3. Чем админ -> CMS -> обновление макета XML отличается от функциональности layout.xml
Предположим, вы хотели бы иметь особую внешность для одной из страниц CMS, которая имеется на вашем сайте. Для этого лучший способ, который вы можете выбрать - добавить обновление макета через admin-> CMS-> Layout. Это будет применяться только к странице CMS.
Но если вам нужно применить некоторые общие изменения ко всем страницам CMS, то это будет легко сделать
layout.xml
.Таким образом, в целом, какой метод следует выбрать для изменения макета, зависит исключительно от того, чего вы хотите достичь. В зависимости от этого вам нужно пойти с одним методом. Не всем методом.
надеюсь, это поможет
источник
Если есть только одна оскорбительная страница, то лучший и самый простой способ IMO:
Отредактируйте
"Design"
вкладку страницы CMS .Ссылайтесь на элемент-обертку, используйте
setElementClass
метод, чтобы применить ни класс, ни новый класс.источник
Вы должны изменить макет, обычно 1column.phtml, 2columns.phtml и т. Д., И сделать их так, как вам нужно / нужно.
Эти PHTML являются базовой структурой любого макета и программно заполняются обновлениями XML.
Это не повлияет ни на что другое, если вы сохраняете согласованность между вашими шаблонами и макетами в своей собственной теме.
источник
if this is the home page, include this code ...
на все страницы макета, а затем просто удалитьgetCHildHtml('content')
на всех страницах? Я хочу научиться использовать Magento и его инструменты лучше, а не просто кувалдой.Мне потребовалась минута, чтобы понять все направления в принятом ответе, поэтому, чтобы добавить его, это все, что было необходимо для удаления оболочки для всех страниц CMS:
<div class="std"></div>
В cms.xml измените блок cms_page на:
источник