Joomla.it Forum
Joomla! 2.5 (versione con supporto terminato) => Joomla! 1.6/1.7/2.5 => I Template di Joomla 1.6/1.7/2.5 => : AndreaNobili 27 Apr 2012, 17:59:19
-
Ciao,
ho qualche dubbio su come procedere.
Ho creato una mia versione modificata del template beez_20
Mi è stato chiesto di rendere più netti e separati i menu e l'area dove viene eseguito il login utente così ho pensato di modificare tali moduli in modo tale che siano dentro un riquadro grigio arrotondato, come è stato fatto nel tempalte Neutrino per capirci, quì l'esempio concreto: http://www.themerepublic.com/demo/?t=Neutrino
Quindi in pratica credo che debba modificare i moduli del mio beez_20 e fare in modo che siano esattamente come quelli di Neutrino, quindi che abbiano una cornice rettangolare grigia con bordi arrotondati ma ho le idee un po' confuse su come fare questa cosa all'atto pratico.
Sono andato a smanacciare dentro la cartella del template Neutrino ed ho notato che dentro la cartella html del template neutrino: /templates/tr_neutrino/html/ sono presenti delle cartelle che sembrano servire all'overriding dei moduli e sono: mod_custom, mod_login, mod_menu, mod_search (più altre 2 cartelle che dovrebbero riferirsi a qualche componente: com_contact e com_content e che credo non dovrò toccare)
Quindi mi è venuto da pensare che ad esempio la directory mod_menu contenga i file che vanno ad eseguire l'override del modulo standard di Joomla che gestiscono il modulo del menu (è corretto o dico cavolate?)
Andando ad aprire tale directory trovo il file default.php che contiene queste linee di codice:
<?php
/**
* @version $Id: default.php 18212 2010-07-22 06:02:54Z eddieajau $
* @package Joomla.Site
* @subpackage Templates.atomic
* @copyright Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// No direct access.
defined('_JEXEC') or die;
// Note. It is important to remove spaces between elements.
?>
<!-- The class on the root UL tag was changed to match the Blueprint nav style -->
<ul class="joomla-nav<?php echo $params->get('class_sfx');?>"<?php
$tag = '';
if ($params->get('tag_id')!=NULL) {
$tag = $params->get('tag_id').'';
echo ' id="'.$tag.'"';
}
?>>
<?php
foreach ($list as $i => &$item) :
$id = '';
if($item->id == $active_id)
{
$id = ' id="current"';
}
$class = '';
if(in_array($item->id, $path))
{
// Changed the active style to match the Blueprint nav style
$class .= 'selected ';
}
if($item->deeper) {
$class .= 'parent ';
}
$class = ' class="'.$class.'item'.$item->id.'"';
echo '<li'.$id.$class.'>';
// Render the menu item.
switch ($item->type) :
case 'separator':
case 'url':
case 'component':
require JModuleHelper::getLayoutPath('mod_menu', 'default_'.$item->type);
break;
default:
require JModuleHelper::getLayoutPath('mod_menu', 'default_url');
break;
endswitch;
// The next item is deeper.
if ($item->deeper) {
echo '<ul>';
}
// The next item is shallower.
elseif ($item->shallower) {
echo '</li>';
echo str_repeat('</ul></li>', $item->level_diff);
}
// The next item is on the same level.
else {
echo '</li>';
}
endforeach;
?></ul>
In effetti trovo riscontro andando ad analizzare la pagina usando FireBug in quanto la lista ul che gestisce il menù ha effettivamente classe joomla-nav ma il problema è che tale lista è annidata dentro un div con id pari a "module" che a sua volta è annidato in un altro div con id pari a "border". Il problema è che nel mio template derivato da beez_20 ho la struttura di beez_20 dove ho che il contenitore che contiene la lista ul ha classe pari a "moduletable" che non capisco neanche dove sia definito (non nel file index.php della mia versione di beez_20)
Quindi che fare?
In pratica avrei la necessità di inserire nel mio beez_20 i moduli pari pari a quelli presenti nel template neutrino ma non ho le idee molto chiare in merito?
E' una cosa difficile o si fà senza troppi problemi? C'è qualcuno che sà darmi una mano?
Grazie mille
Andrea
-
Ciao
Facendo un override cambieresti l'aspetto a tutti i moduli, un metodo molto semplice sarebbe utilizzare un suffisso modulo come spiegato in questo articolo:
http://www.joomla.it/articoli-della-community/4277-moduli-style-classe-e-suffisso-css.html (http://www.joomla.it/articoli-della-community/4277-moduli-style-classe-e-suffisso-css.html)
-
Ciao
Facendo un override cambieresti l'aspetto a tutti i moduli, un metodo molto semplice sarebbe utilizzare un suffisso modulo come spiegato in questo articolo:
http://www.joomla.it/articoli-della-community/4277-moduli-style-classe-e-suffisso-css.html (http://www.joomla.it/articoli-della-community/4277-moduli-style-classe-e-suffisso-css.html)
Ti ringrazio, gli stò dando un'occhiata al volo, in serata vedrò di approfondire l'argomento...in che senso facendo l'override cambierei l'aspetto a tutti i moduli?
Stavo leggendo questa guida: http://docs.joomla.org/How_to_override_the_output_from_the_Joomla!_core
Non c'entra nulla?
Tnx
Andrea
-
L'override ti permette di apportare delle modifiche o personalizzazioni senza poi perderle ad ogni aggiornamento.Poichè effettui delle modifiche a livello globale di visualizzazione di un modulo questa modifica interesserà poi tutti i moduli, se invece ne voglio personalizzare solo alcuni devo utilizzare un approccio diverso e l'utilizzo del suffisso è uno di questi metodi.
-
L'override ti permette di apportare delle modifiche o personalizzazioni senza poi perderle ad ogni aggiornamento.Poichè effettui delle modifiche a livello globale di visualizzazione di un modulo questa modifica interesserà poi tutti i moduli, se invece ne voglio personalizzare solo alcuni devo utilizzare un approccio diverso e l'utilizzo del suffisso è uno di questi metodi.
Aspetta forse non sono stato abbastanza chiaro nello spiegarmi.
Ti faccio vedere l'esempio concreto così magari riesci ad indirizzarmi meglio: http://andreanobiliphoto.com/Joomla252ML/index.php/en/
Prendiamo ad esempio il modulo del menu verticale del mio sito:
al suo esterno c'è la colonna sinistra che di fatto è un div con id: "navbar" e classe: "left1 leftbigger"
Ok...poi il codice html relativo al modulo del menu vero e proprio credo che sia questo:
1) Il contenitore più esterno del modulo è un div con classe: "moduletable"
2) Al suo interno c'è una lista non ordinata realizzata con il tag <ul> con classe: "menu"
3) Al cui interno ci sono tutti i vari tag <li> che rappresentano le varie voci del mio menù
Prendiamo ora la demo dell'articolo da te postato: http://www.joomlacsszengarden.com/demo/index.php?option=com_content&view=article&id=105&Itemid=188
Consideriamo ora il modulo relativo al Menu Principale (quello rosso):
Tale modulo è sempre contenuto in una colonna destra rappresentata da un div con id: "leftcolumn" (e fin quà non cambia molto dal mio caso...)
Ora però andando a vedere il codice che rappresenta proprio tale modulo ho:
1) Il contenitore più esterno è un div con id: "module_menu"
2) Al suo interno c'è un altro div con background impostato su questa immagine: ../images/red/mw_box_br.png"
3) Al cui interno c'è un altro div sempre con background impostato su: /images/red/mw_box_tr.png (che rappresenta una parte superiore della cornice (questa quì: http://www.joomlacsszengarden.com/demo/templates/rhuk_suf/images/red/mw_box_tr.png)
4) All'interno c'è ancora un altro div ha come sfondo il restante pezzo superiore della cornice (in modo da poterlo così espandere in orizzontale credo): http://www.joomlacsszengarden.com/demo/templates/rhuk_suf/css/../images/red/mw_box_tl.png
etcetc
Insomma tutto questo per dire che è proprio la struttura del mio e del suo modulo ad essere diversa.
Io vorrei avere un modulo avente tale struttura per poter gestire cornici intorno al modulo cosa che ora non credo proprio di poter fare
E' per questo che chiedevo lumi sull'overriding perchè mi sembra di capire che serva in queste situazioni...o sbaglio? Mi puoi dare una mano?
Grazie mille
Andrea
-
non c'entra niente l'override, devi agire con prefisso modulo
se cerchi in joomla.it e nel wiki ci sono gli articoli di tonicopi e le sue guide ai template
-
non c'entra niente l'override, devi agire con prefisso modulo
se cerchi in joomla.it e nel wiki ci sono gli articoli di tonicopi e le sue guide ai template
Ora lo ristudio meglio ma sai dirmi come è possibile usare quella tecnica se di fatto nel mio modulo non c'è la struttura di div annidati adatta? Stò facendo confusione temo...
-
Ehm, mi permetto di dissentire: con l'override potresti tranquillamente risolvere il problema E, per il solo modulo interessato, ne specifichi il layout.
OVVIAMENTE, il tuo beez_20 modificato DEVE avere un nome diverso. Io mi sto divertendo ad overradare ::) [size=78%] qualunque cosa: fai sapere[/size]