2009-12-21 7 views
8

Tüm sitem uygulamalar/görünüm/düzenler/default.ctp'de belirtilen default.ctp düzenini kullanıyorsa, homepage.ctp'yi kullanmak için yalnızca ana sayfa düzenini nasıl değiştiririm ve bırakırım default.ctp kullanarak sitenin geri kalanı?cakephp'de yalnızca ana sayfa düzenini değiştirme

cevap

14

kopyalayın /app/controller/ dir içine /cake/libs/controller/pages_controller.php ve aşağıdakilerden birini yapın: 'ev' talep edilmesi halinde

  • düzenini değiştirmek için display() sonuna doğru bir satır ekleyin:
    if ($page == 'home') $this->layout = 'homepage';
  • oluştur Bu yeni yöntemi kullanmak için home() yöntemini (ya da bununla birlikte adlandırmak istediğiniz) $this->layout ayarlayıp / yolunu yeniden rota /app/config/routes.php.

Düzenleme: Özetle, sen $this->layout = 'homepage' belirleriz hangi bazı özel yöntemi gerekir
, hepsi bu. Bunu herhangi bir noktada kontrolörünüzde yapabilirsiniz, yeniden kullanmak PagesController'u Cake'de yapmanın en kullanışlı ve geleneksel yoludur.

+0

Sınıfın üzerine biraz daha akıllı yazmıyor. Ayrıca '$ this-> layout' 'init' benzeri bir şeyden başka bir işlevden çağrılabileceğini tahmin ediyorum. – Franz

+2

Aslında, 'PagesController' orijinaline ihtiyacınız yoktur - özel bir denetleyiciyi işaret edecek ve' $ this-> layout 'öğesini buradan –

+0

@ Franz olarak ayarlayabilecek rotaları kullanabilirsiniz. "Üzerine yazma" ile ne demek istiyorsunuz? – deceze

1

Yukarıdaki cevap artık güncel değil, ancak doğru yaklaşımı veriyor. CakePHP'de modern sürümlerinde

, o yapmak ister kontrolör zaten mevcutsa ve geçerli:

/app/Controller/PagesController.php 

Bir şablon "loggedoff" olarak adlandırılan ve sadece $this->render() komutundan önce, aşağıdaki gibi bu eklemişti (yaklaşık satır 73).

$this->layout = 'loggedoff'; 
0

Bu çalışıyor:

class RegistrationsController extends AppController { 
    public $helpers = array('Html', 'Form', 'Time'); 
    public $components = array('Session'); 

    public function login() { 
     $this->layout = 'empty'; 
    } 
} 

Sadece kontrolör işlevinde istediğiniz düzeni ayarlayın.