<reference name="left
/> Kullanarak bir blok ekleyemiyorsanız , CMS sayfanızda sol adlı bir blok bulunduğundan emin misiniz? Örneğin, Magento örnek verileriyle birlikte gelen varsayılan giriş sayfasını düşünüyorsanız, adında bir blok var gibi görünüyor ayrıldı.
Ancak, arka uçtaki sayfaya bakarsanız, kök şablonu kullanmak üzere ayarlandığını görebilirsiniz
`2 columns with right bar`
ve ardından içerik alanına HTML sütunu kullanılarak sol sütun eklenir (WYSIWYG'yi kaynak görünümüne geçirir)
<div class="col-left side-col">
<p class="home-callout"><a href="{{store direct_url="apparel/shoes/womens/anashria-womens-premier-leather-sandal.html"}}"><img src="{{skin url='images/ph_callout_left_top.gif'}}" alt="" border="0" /></a></p>
<p class="home-callout"><img src="{{skin url='images/ph_callout_left_rebel.jpg'}}" alt="" border="0" /></p>
{{block type="tag/popular" template="tag/popular.phtml"}}</div>
Bu yönlendirilmiş grafik, left
içine takılmak üzere adlandırılmış bir blok olmadığını netleştirir ( tam boyutlu resim için tıklayın )
Bir şablon ayarlamayla ilgili olarak, "Düzen" açılır menüsünün kaynağına bakarsanız
<select id="page_root_template" name="root_template" class=" required-entry select">
<option value="empty">Empty</option>
<option value="one_column">1 column</option>
<option value="two_columns_left">2 columns with left bar</option>
<option value="two_columns_right" selected="selected">2 columns with right bar</option>
<option value="three_columns">3 columns</option>
</select>
Bu alanı belirlerken, görebilirsiniz, kaydedildi alma gerçek değeri gibi bir şey one_column
, two_columns_left
aynı adı taşıyan düzen kolları Bu değerler corespond vb.
#File: app/design/frontend/default/modern/layout/page.xml
<page_one_column translate="label">
<label>All One-Column Layout Pages</label>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
<!-- Mark root page block that template is applied -->
<action method="setIsHandle"><applied>1</applied></action>
<action method="setLayoutCode"><name>one_column</name></action>
</reference>
</page_one_column>
...
<page_two_columns_left translate="label">
<label>All Two-Column Layout Pages (Left Column)</label>
<reference name="root">
<action method="setTemplate"><template>page/2columns-left.phtml</template></action>
<!-- Mark root page block that template is applied -->
<action method="setIsHandle"><applied>1</applied></action>
<action method="setLayoutCode"><name>two_columns_left</name></action>
</reference>
</page_two_columns_left>
Magento bir CMS sayfası oluştururken kaydedilen değerlere başvurur ve sayfaya uygun mizanpaj tutamacını ekler. Soruya teğet olmakla birlikte, bu tutamaç buraya eklenir
#File: app/code/core/Mage/Cms/Helper/Page.php
protected function _renderPage(Mage_Core_Controller_Varien_Action $action, $pageId = null, $renderLayout = true)
{
//...
$action->addActionLayoutHandles();
if ($page->getRootTemplate()) {
$handle = ($page->getCustomRootTemplate()
&& $page->getCustomRootTemplate() != 'empty'
&& $inRange) ? $page->getCustomRootTemplate() : $page->getRootTemplate();
$action->getLayout()->helper('page/layout')->applyHandle($handle);
}
//...
}
Daha da önemlisi olsa sipariş düzeni kolları eklenir
Yukarıdaki ekran görüntüsünde de görebileceğiniz gibi, page_two_columns_right
sap eklenir sonracms_index_index
sap. Bu, kodunuzdaki şablonu değiştirmek için düzen xml güncelleme kodu eklerseniz cms_index_index
, ancak düzen güncelleme xml kodunun page_two_columns_right
ardından çalıştırılacağı anlamına gelir.
Her zaman bunun kullanıcı arayüzünde ayarlanan şablonun her zaman doğru olmasını sağlamak için tasarımdan şüphelendim . Magento'nun önceki sürümünde <action method="setIsHandle"><applied>1</applied></action>
yöntem çağrısı aynı nedenlerle varmış gibi görünüyor.
Yani, saf düzen xml kodunu kullanarak istediğinizi yapmanın bir yolu yoktur. Özel modüller ve gözlemci kodu oluşturmaktan memnunsanız, cms_page_render
etkinliğe bakın. Bu hemen önce loadLayoutUpdates
çağrılır ve ek bir tanıtıcı adını kaydırmanıza veya mevcut tanıtıcı adlarını kaldırmanıza izin verir.