Ana Sayfaya içerik bloğu ekleme, 'std' kaldırılıyor <div>


9

Birkaç şey yapmak istiyorum ve yeniyim ve Magento konusunda çok yetkinim; istediğim aşağıdakileri yapmanın en iyi, en özlü yoludur:

  1. Ana sayfamın içeriğini ve bu projede daha da ilerlediğim gibi muhtemelen diğer tüm CMS sayfalarını yönetim panelindeki WYSIWYG'de değil metin düzenleyicimde düzenlemek istiyorum. Sanırım sadece home-content.phtmlkarusel (ler )im için işaretlememi içeren bir şablon olurdu ve sonuçta ana sayfama koyduğum başka bir şey. Bana bu benim takmak yapmanın en mantıklı yolu göründü home-content.phtmlüzere getChildHtml('content')Yönetici panelindeki yönteme -> CMS -> Sayfalar -> Ana Sayfa -> 'Tasarım' sekmesi -> böyle koduyla Düzeni Güncelleme xml:

    <reference name="content">
                <block type="core/template" name="home-content"
                       as="home-content" template="home-content.phtml" />
    </reference>
    

    Ancak, bunu yapmak istediğim bir sonraki şeyle mahvoldu ...

  2. Kanımca, varsayılan Magento HTML yapısı çok fazla iç içe geçmişlediv ( sarmalayıcı -> sayfa -> ana konteyner col1-layout -> ana -> col-main sadece bir sayfanın içeriğine ulaşmak için) . Sass ile stil oluşturmayı benim için bir kabus haline getiriyor, tüm bu sınıfların stilleri 5 farklı Sass partisine ayrılıyor. Bu yüzden, kendi tasarım ilkelerime uygun varsayılan yapıyı temizliyorum. Bunun bir kısmı, rezil gibi boş elemanların çıkarılması anlamına gelir <div class="std"> </div>. Bundan kurtulmanın en etkili yolu (içerik için yönetici panelini kullanmayı düşünmediğim için) <remove name="cms.wrapper">CMS Home Layout Update XML'de. Sorun, bu yukarıdaki ( reference name="content") yöntemiyle eklediğim her şeyi kaldırır .

Temel olarak: Ana Sayfama a ile nasıl içerik ekleyebilir .phtml ve<div class="std"> </div> çakışma olmadan nasıl kaldırabilirim ? Yönetici -> CMS -> düzen güncelleme XML işlevselliğinin layout.xml işlevlerinden nasıl farklı olduğunu veya neden birini diğerinin üzerinde kullanmam <cms index-index>gerektiğini anlamıyorum (aynı şeyi yapmak için kullanamam gibi mi?) .

Şimdiden teşekkürler, millet.


Benim durumumda, .stdistemedikleri yerlere liste stilleri ekler. Tahmin edilebileceği gibi Magento ile çözülmesi gereken uzun bir prosedür.
rybo111

Yanıtlar:


12

Sorununuzu 3 bölüme ayıralım ve gözden geçirelim.

1. CMS Sayfanıza bir şablon dosyası eklemeniz gerekir

Burada benimsediğiniz yöntem kesinlikle işe yarayacaktır. Yani bu kod snippet'ini cms sayfanıza, tasarım sekmesinin altına eklemeniz gerekir

<reference name="content"><block type="core/template" name="home-content"  template="test.phtml" /></reference>

Şablon dosyanız doğrudan contentblok altına girdiğinden, şablon içeriğiniz magento tarafından oluşturulur. Bu nedenle, asmülkünüzü kullanmanıza gerek yoktur core/template block.

2. nasıl önlemek için <div class="std"></div>

Bu div aslında cms sayfaları için bir sarmalayıcı div öğesidir. Bu bloğun tanımına buradan bakın.

  <block type="page/html_wrapper" name="cms.wrapper" translate="label">
        <label>CMS Content Wrapper</label>
        <action method="setElementClass"><value>std</value></action>
        <block type="cms/page" name="cms_page"/>
  </block>

Gördüğünüz gibi cms.wrapperblok tiptedir page/html_wrapper. Bu bloğun yaptığı şey, tüm alt bloğunu bir div öğesi (varsayılan öğe) ile sarar ve alt blokları otomatik olarak oluşturur.

Bu bloğu önlemek için bu kodu kullandınız

<remove name="cms.wrapper">

Ancak bu tamamen yanlış. Gerçekten sarıcı div kaldırır. Ancak bununla birlikte çocuk bloğunu da kaldırır cms_page. Bu cms_pagebir tür cms/page. Bu, bloğa atıfta bulunduğu anlamına gelir Mage_Cms_Block_Page. Bu blok, CMS Sayfalarının "kalbi" dir . Böylece sargıyı çıkarmak da CMS Sayfa kalp bloğunu sildi. Bu nedenle cms sayfanızda herhangi bir çıktı almadınız.

Peki bu ambalajı önlemek için ne yapmalısınız? Cevabı oldukça basit. Ambalajdan kaçın cms_pageve ambalajı güvenli bir şekilde çıkarın. İşte size cms sayfa düzeni bölümünde kullanmanız gereken kod.

<reference name="content"><remove name="cms.wrapper" /><block type="core/template" name="home-content"  template="test.phtml" /><block type="cms/page" name="cms_page"/></reference>

Düzen xml kodunda görebileceğiniz gibi, önce sarıcıyı kaldırırız ve dolayısıyla cms_pagebloğu kodumuz aracılığıyla ekleriz. Gördüğünüz gibi şablon bloğumuzu da kullandık. Bu, şablon dosyasının içeriğini önce sayfanızda, ardından cms sayfa içeriğini oluşturur.

3. Yönetici -> CMS -> düzen güncelleme XML'si layout.xml işlevlerinden nasıl farklıdır?

Sitenizde bulunan CMS Sayfasından biri için özel bir görünüme sahip olmak istediğinizi varsayalım. Bunun için, tercih edebileceğiniz en iyi yöntem admin-> CMS-> Layout üzerinden mizanpaj güncellemesi eklemektir. Bu yalnızca CMS sayfası için benzersiz bir şekilde uygulanacaktır.

Ancak, tüm CMS Sayfalarına bazı genel değişiklikler uygulamanız gerekiyorsa, gitmek kolay olacaktır layout.xml.

Bu nedenle, genel olarak, düzeni değiştirmek için hangi yöntemin benimsenmesi gerektiği tamamen elde etmek istediğinize bağlıdır. Buna bağlı olarak, bir yöntemle gitmeniz gerekir. Tüm yöntem değil.

umarım yardımcı olur


3

Yalnızca bir sorunlu sayfa varsa, IMO'nun en iyi ve en kolay yolu:

CMS sayfasının "Design"sekmesini düzenleyin .

Sarıcı öğeye bakın, setElementClasssınıf veya yeni sınıf uygulamak için yöntemi kullanın.

<reference name="cms.wrapper">
<action method="setElementClass"><value>none</value></action>
</reference>

0

Düzeni, normalde 1column.phtml, 2columns.phtml, vb. Değiştirmeli ve istediğiniz / ihtiyacınız gibi yapmalısınız.

Bu PHTML'ler herhangi bir mizanpajın temel yapısıdır ve XML güncellemeleriyle programlı olarak doldurulur.

Kendi temanızdaki şablonlarınız ve düzenleriniz arasında tutarlılık sağlarsanız, bu başka bir şeyi etkilemez.


Ne gibi, if this is the home page, include this code ...tüm mizanpaj sayfalarına bir koşul ekledikten sonra tüm sayfalardaki siler silinsin getCHildHtml('content')mi? Magento'nun nasıl kullanılacağını öğrenmek istiyorum ve araçları daha iyi değil, sadece balyoz sorunu değil.
Ezratic

Hayır, düzenler sitenin her yerinde, farklı durumlarda ve rotaya bağlı olarak farklı güncellemelerde kullanılır. Daha fazla şüpheniz varsa, o zaman bir soru sorun, ancak bunu düzenlemeyin veya kapatılabilir.
mbalparda

Burada kaba olmaya çalışmıyorum; Bana cevap vermek için zaman ayırdığınız için teşekkür ederim. Ancak, cevabının bana yardımcı olduğunu düşünmüyorum. Bir öğeyi kaldırmak ve tek bir CMS sayfasına bir blok eklemek çalışıyorum, ama benim yöntem çalışmıyor - Bu yüzden çalışan bir istiyorum. Düzenlerin ve şablonların genel amacının farkındayım ve "İşleri doğru kullanın ve işe yarayacaksınız" sorum yanıtlamıyor.
Ezratic

Bu sayfayı "başkaları ücretsiz iş yapıyor mu?" Cevap geçerlidir ve muhtemelen aradığınız şeydir ve Magento'da işlerin nasıl çalıştığını öğrendikten sonra bu cevabı bu durumda ilerlemenin yolu bulacaksınız.
mbalparda

Bunu okuyun ve ihtiyacınız olan şeylerin çoğunu bulacaksınız: magentocommerce.com/knowledge-base/entry/…
mbalparda

0

Kabul edilen yanıttaki tüm yönleri anlamak bir dakikamı aldı, bu yüzden üzerinde piggy geri dönmek için, tüm CMS sayfaları için sargıyı kaldırmak için gereken tek şey bu: <div class="std"></div>

Cms.xml dosyasında cms_page bloğunu şu şekilde değiştirin:

<cms_page translate="label">
    <label>CMS Pages (All)</label>
    <reference name="content">
        <block type="core/template" name="page_content_heading" template="cms/content_heading.phtml"/>
        <block type="cms/page" name="cms_page"/>
    </reference>
</cms_page>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.