Se tutto il mio sito utilizza il layout default.ctp specificato in apps/view/layouts/default.ctp, come posso modificare solo il layout della home page per utilizzare homepage.ctp e lasciare il resto del sito utilizza default.ctp?Modifica solo il layout della pagina iniziale in cakephp
risposta
Copiare il /cake/libs/controller/pages_controller.php
nella vostra /app/controller/
dir e fare una delle seguenti operazioni:
- Aggiungi una linea verso la fine del
display()
per cambiare il layout, se è richiesto 'casa':
if ($page == 'home') $this->layout = 'homepage';
- Creare un metodo
home()
(o denominato comunque come desiderato) in cui si imposta$this->layout
e reindirizzare il percorso/
in/app/config/routes.php
per utilizzare questo nuovo metodo.
Edit:
In sintesi, avete bisogno di qualche metodo personalizzato in cui potrai impostare $this->layout = 'homepage'
, questo è tutto. Puoi farlo in qualsiasi controller in qualsiasi momento, riutilizzando lo PagesController
è solo il modo più conveniente e convenzionale per farlo in Cake.
La risposta sopra è ormai obsoleta, ma fornisce il giusto approccio.
Nelle versioni moderne di CakePHP, il controllore ti chiede di fare è già presente ed è:
/app/Controller/PagesController.php
avevo un modello chiamato "loggedoff", e ha aggiunto questa come segue, poco prima che il comando $this->render()
(circa la linea 73).
$this->layout = 'loggedoff';
Questo funziona bene:
class RegistrationsController extends AppController {
public $helpers = array('Html', 'Form', 'Time');
public $components = array('Session');
public function login() {
$this->layout = 'empty';
}
}
Basta impostare il layout desiderato nella funzione di controllo.
- 1. Modifica il layout della legenda ggplot
- 2. Come cambiare il titolo della pagina in CakePHP 2.5?
- 3. Moduli della pagina iniziale che mostrano gli articoli in Joomla
- 4. Come cambiare il layout della pagina di categoria in Magento?
- 5. Modifica numero di progetti recenti visualizzati su VS2010 Pagina iniziale
- 6. Carica file Javascript in CakePHP Layout in "bottom"
- 7. Modifica del margine della pagina in LyX
- 8. Modifica dell'altezza/larghezza degli articoli in reattivo-layout della griglia
- 9. Pagina iniziale caricamento pagina esterna Cordova/PhoneGap
- 10. Posso cambiare il layout della pagina quando uso window.print()?
- 11. Chrome pulsante indietro: solo dando versione cache della pagina iniziale, senza alcun contenuto ajaxed
- 12. Modifica visualizzazione basata su ACL in CakePHP
- 13. Modifica layout finestra animata
- 14. Come impostare le proprietà della vista iniziale?
- 15. Instradamento in un'applicazione a pagina singola con un'altra pagina iniziale
- 16. Modifica del tema della pagina Web
- 17. Modifica blocchi JavaScript della pagina Web ... live
- 18. Modifica notifica layout
- 19. Come tornare alla pagina referer in CakePHP dopo il login
- 20. Uso della funzione CakePHP Session nella pagina di visualizzazione?
- 21. I feed RSS della pagina iniziale di DZone sono rotti?
- 22. Annullamento "Imposta come pagina iniziale"
- 23. Dimensione, Modifica solo della larghezza/altezza
- 24. Modifica la transizione della pagina sulla stessa pagina
- 25. Imposta il testo iniziale quando si modifica una cella QTableView
- 26. modifica il margine superiore della seconda pagina utilizzando mPDF
- 27. imposta la pagina iniziale Silverlight
- 28. come reindirizzare alla pagina iniziale
- 29. Qt - modifica layout QWidget
- 30. Modifica solo il livello alfa in GIMP
Non sovrascrive la classe un po 'più intelligente. Immagino anche che '$ this-> layout' possa essere chiamato da qualche altra funzione, qualcosa di' init'-like. – Franz
In realtà, non è nemmeno necessario il 'PagesController' originale - puoi usare le rotte per puntare a un controller personalizzato e impostare' $ this-> layout' da lì –
@Franz Cosa intendi per "sovrascrittura"? – deceze