2011-08-11 18 views
8

Bir ön sayfadan düzeni almak istediğim bir Magento modülünde çalışıyorum. Ön sayfa ile sayfaların her türünü, yani cms sayfası, kategori, ürün, alışveriş sepeti, hesabımı, vb. Kastediyorum.Magento verilen sayfa için düzen olsun

Alan Storm'dan mükemmel magento-nofrills ebook'unu okudum ve Commercebug eklentisini kullanıyorum magento sitemi geliştirmeme yardımcı olmak için. Ayrıca bir similair sorusu arayan stackoverflow üzerinde biraz zaman harcadım, lütfen onu özlediysem beni affet.

Örneğin bir sayfa kimliğim veya kategori kimliğim varsa, arka uçta kod çalıştırmadan önyüz sayfasının düzenini nasıl alabilirim?

Ben isteği ile oynuyorsun ve ben önyüzdeki bu kodu çalıştırdığınızda, örneğin bir katalog sayfasına bakan i modülü, kontrolör, layouthandles vb değiştirildiğini görebilirsiniz

$request = Mage::app()->getRequest(); 
$request->setModuleName('cms'); 
$request->setRouteName('cms'); 
$request->setControllerName('page'); 
$request->setActionName('view'); 
$request->setParam('page_id', 6); 

Ama i düzenden xml incelemek zaman, ben bana kimliği ile (bu örnekte) için xml cms sayfasını göstermek için magento zorlamak gibi olamaz = 6:

Mage::app()->getLayout()->getNode()->asXml(); 

Belki yol çok karmaşık düşünüyorum gerçi. Belirli bir sayfanın kenar çubuğuna sahip olup olmadığını, hangi blokların ve öğelerin sayfada ve kenar çubuğunda gösterilip gösterilmediğini kontrol etmek istiyorum (sadece aktif bloklar, yok sayılanları değil).

Şimdiden teşekkürler! Tim

+1

Bunu anladınız mı? Kendimi merak ediyorum. – chrisjlee

cevap

5

Arama loadLayout() getLayout() önce.

bir blok ($ block_name) getBlock arayarak düzeninde aktif olup olmadığını kontrol edebilirsiniz: blok düzeni bir parçası değildir (veya göz ardı edilir) Eğer

$left_block = $this->loadLayout()->getLayout()->getBlock('left'); 

sonra $ left_block olacak yanlış. Bunu çocuk bloklarını görmek için getSortedChildren() ile birlikte getBlock() kullanabilirsiniz:

$this->loadLayout()->getLayout()->getBlock('content')->getSortedChildren(); 

yukarıdaki "içerik" blok içerisindeki blok isimleri bir dize dizi döndürür. Sadece aktif blok isimleri iade edilecektir.

+0

$ sol_block kazanmak için snippet'inizi kullanmaya çalıştım; ancak bir istisna hatası aldım. Bu kod satırından önce eklemem gereken bir şey var mı? – Kamal

+0

Kodu nereye koydunuz? Yukarıdaki örnek kontrolör dosyasına aittir. – Joe

+0

owh ... Bir phtml dosyasında kullanmam gerekiyor ... bunu yapabileceğimin bir yolu var mı? Ben burada http://stackoverflow.com/questions/11133522/magento-get-which-layout-being-used-on-phtml-files istiyorum. eğer cevap verebilirseniz sevinirim :) – Kamal