C'è un modo per cambiare il modello solo su un articolo specifico? Nota che dovrebbe funzionare senza collegare l'articolo a nessun menu.Joomla: come cambiare modello su un articolo specifico
risposta
Se si desidera che la sovrascrittura del modello non dipenda dalla posizione del menu, il metodo standard di joomla di assegnare un modello diverso a un menu non funzionerà. Dovrai sporcarti le mani e scrivere un codice personalizzato. Dovrai utilizzare article_id come trigger per il cambio di modello.
Ho fatto qualcosa del genere al lavoro ma non ricordo ora come esattamente questo è stato raggiunto. Inserirò il mio codice qui non appena lo troverò.
EDIT: Trovato il codice :)
È necessario modificare il file /includes/application.php, in particolare il metodo getTemplate(). Al termine di questo metodo, poco prima:
// Fallback template
if (!file_exists(JPATH_THEMES.DS.$template.DS.'index.php')) {
$template = 'rhuk_milkyway';
}
puoi aggiungere la tua condizione per l'applicazione di un modello personalizzato, in questo modo:
//CUSTOM TEMPLATE FOR THE ARTICLE 13
if (JRequest::getVar('id')=='13' && JRequest::getVar('option')=='com_content') {
$template = $custom_template_name;
}
Questo verrà applicato il modello personalizzato il cui nome si trova all'interno del $ custom_template_name all'articolo con id = 13. È inoltre possibile utilizzarlo per applicare un modello diverso di componenti, come ho fatto con SimpleCaddy:
//TEMPLATE FOR SIMPLECADDY
if (JRequest::getVar('option')=='com_caddy'){
$template = 'shop';
}
Si dovrebbe cercare di stare lontano dal disco di codifica nulla al modello se può essere evitato. Non sei sicuro del motivo per cui specifichi che l'articolo non è collegato da un menu. Il modo più semplice per farlo senza dover scrivere e codificare è creare un nuovo menu, quindi aggiungere una voce di menu che rimanda all'articolo per cui si desidera specificare il modello. Non è necessario posizionare il menu in un modulo, in modo che non venga mai visualizzato sul sito, ma verrà visualizzato nel menu di assegnazione nel gestore modelli.
È possibile farlo con singoli articoli, categorie, sezioni o anche componenti. Finché hai un link al menu per associare il modello a. Creo sempre un menu Solo amministratore per inserire i collegamenti necessari per eseguire il sito, ma non è necessario che gli utenti accedano.
Come ha detto Brent, evitare la tentazione di modificare il codice Joomla di base! Fare questo probabilmente ti impedirà di eseguire gli aggiornamenti di Joomla perché sai che interromperà le modifiche principali apportate.
Oltre alla tecnica "voce di menu nascosta" (che è utile ma può interrompere gli URL SEF in alcune situazioni), uno strumento utile è Chameleon. Questo ti permette di selezionare articoli/categorie/sezioni specifici (più cose come il tipo di browser, il gruppo di utenti, i componenti, qualunque cosa) e usarli per attivare un determinato modello.
Anche se questo è un vecchio post, ho pensato di condividere i miei pensieri: è possibile modificare facilmente il modello su un singolo articolo, implementando la funzione onAfterInitialize() in un plug-in di sistema. Non c'è bisogno di modificare il core Joomla.
Questo funziona per Joomla 1.5, ma dovrebbe funzionare anche in 2.5:
function onAfterInitialise(){
if(true){ // f.ex. test for article ID or whatever
JRequest::setVar('template', 'beez'); // change template
}
}
Nelle versioni 3.x joomla, url-parametri vengono gestiti in modo diverso. Quanto segue è stato testato in joomla 3.4.8:
public function onAfterInitialise()
{
$app=JFactory::getApplication();
if(true){ // f.ex. test for article ID or whatever
$app->input->set('template', 'beez3');
}
}
più sulla scrittura di plugin per Joomla here
- 1. Joomla alies articolo non funzionano
- 2. Cambiare Joomla URL amministratore
- 3. Come posso mantenere un articolo specifico sempre in primo piano nella prima pagina?
- 4. Controllo ripetitore - Annulla binding per articolo specifico
- 5. Converti modello Joomla 2.5 in 3.0
- 6. Collegamenti manuali con SEF su Joomla!
- 7. Come posso cambiare un colore di carattere specifico in git?
- 8. Recyclerview (articolo su Recyclerview)
- 9. Componente da Joomla 2.5 a Joomla 3.0
- 10. XmlSerializer.Deserialize su un elenco <> articolo
- 11. Modello Knockoutjs foreach, primo articolo speciale
- 12. regolare il bordo su un lato specifico
- 13. Magento: come ottenere qty di un prodotto specifico in un articolo dell'ordine?
- 14. Joomla ha violato. Come prevenire?
- 15. Miglior articolo su come usare jQTouch
- 16. Come pubblicare sn su un endpoint specifico?
- 17. In WPF come ottenere l'associazione di un articolo specifico dal codice?
- 18. Come cambiare modello di controllo da Style.Triggers
- 19. Riscritto URL con Joomla su IIS7
- 20. Chiamare un metodo su un modello da un modello
- 21. Amicizia modello specifico in C++
- 22. Mostra un articolo joomla solo agli utenti registrati, oppure una schermata di login, se non registrati nel sì
- 23. Come utilizzare un filtro modello su un tag modello personalizzato?
- 24. Come cambiare l'effetto di focalizzazione su un NSTextField su OSX
- 25. Discussione in doppio di un articolo ACM Articolo in LaTeX
- 26. EhCache overflow su disco su percorso specifico
- 27. domande su un articolo che introduce l'interfaccia C++
- 28. Come chiamare un metodo su un tempo specifico in java?
- 29. laravel modello di lama codice specifico
- 30. Sottoscrizione di prodotti su AceShop (estensione Joomla per OpenCart)
Ho creare un plugin con il tuo codice, ma quando provo a verificare la presenza del componente corrente come questo '' '$ app-> input-> get ('opzione') == "com_content" '' 'non succede niente, potresti aiutarmi? – ivayloc
Prova a verificare se la funzione plug-in è effettivamente in esecuzione, ad es. con print_r ($ app-> input); morire(); Qui vedrai anche quali parametri sono definiti nell'oggetto $ app-> input ... – jonasfh