Joomla.it Forum
Non solo Joomla... => Sviluppo => : Jam_nc 17 Mar 2010, 13:05:07
-
Salve a tutti gente, un ringraziamento per tutte le volte che ho trovato risposta ai miei dubbi su questo forum semplicemente usando il tasto Cerca.
Mi trovo davanti ad un grosso problema, spero abbiate tempo e voglia di aiutarmi.
Sto costruendo un Modulo per Joomla, non tramite HTML Personalizzato naturalmente, da zero.
Il problema è che il modulo essendo inserito nella LeftColumn del template ed in quanto modulo assume delle proprietà CSS dettate dal Foglio Di Stile del template, e NON le proprietà che io ho impostato nel modulo in fase di progettazione.
Come posso agirare il problema? Da considerare anche che questo modulo dovrà essere compatibile con ogni Template e non solo su quello dove lo sto testando.
Un grazie a tutti!
-
Sposto in sviluppo....
-
ciao,
non capisco cosa intendi con
"non tramite HTML Personalizzato"
il tuo modulo genererà comunque un output html giusto?
quindi opzione + semplice il contenuto del tuo modulo sarà visualizzato dentro una tabella, div o altro "contenitore" html e definirai per quella tabella o div ecc una classe specifica.
es:
<div class=tuomodulo">
....
.. output tuo modulo
</div>
quindi tutto lo "stile" del tuo modulo sarà legata alla classe padre tuomodulo
naturalmente puoi aggiungere un suffisso al modulo tramite i parametri dello stesso (da definire nel file XML)
link
http://wiki.joomla.it/index.php?title=Creazione_di_un_modulo_per_joomla_15
oppure...
http://www.joomlashow.it/guide/sviluppo-estensioni/sviluppare-un-modulo-joomla-1.5-seguendo-il-pattern-mvc/
-
ciao,
non ho capito un granché... ma che c'entra il modulo con le proprietà css? nel modulo metti solo le classi e gli id, nel foglio css le definizioni.
al più inserisci nella configurazione (in xml e poi $params->get('XXX') ) un suffisso in più da aggiungere al nome delle classi/id in modo da poter usare più moduli con differenti layouts.
ciao,
marco
-
scusate se mi intrometto..io ho un problema credo simile a Jam_nc. Io vorrei assegnare una classe css a dei moduli (di virtuemart) in modo da posizionarmeli dove e come voglio ma non ci riesco. Ho letto la guida di tonicopi ma non ho capito granchè...
Io credevo bastasse assegnare un suffisso css nell'area apposita e poi definirlo nella classe.. Potete aiutarmi?
Grazie mille
Francesco
-
leggiti questo Franceschino
http://wiki.joomla.it/index.php?title=Cos%27%C3%A8_il_Suffisso_classe_CSS_modulo%3F
-
grazie mille era proprio quello che cercavo :)
-
scusami forse sono di coccio io ma non mi funziona. O meglio se lo visualizzo con firebug non vedo nè il file layout.css(non è proprio tra i css inclusi) nè la classe moduletable... Sto usando un template diverso da beez ma credo sia una cosa universale. Anche le posizioni left, right, sono equivalenti immagino...ho provato con entrambe ma niente. uffa :-[
-
Più che di coccio mi sembri piuttosto pigro Franceschino ;D
Perchè non fai esattamente quello che è scritto nella guida e usi effettivamente il template indicato?
Da dove evinci che si tratta di regole universali?
Ci sono diversi modi di far apparire i moduli e di intrecciare le regole css con gli stili e dipendono appunto dal costruttore del template ;)
-
Hai ragione ma ho paura di pedere una giornata senza venire a capo di nulla come mi è successo più volte e visto che ho il capo alle costole che dice sempre di sbrigarmi preferivo evitare..
Che sia una regola universale lo spero altrimenti chi non usa beez non potrebbe impostare una suffisso css per un modulo ma mi sembra assurdo. Dato che io uso un altro tempate mi sembra inutile (oltre a provocare un macello nella grafica del sito) provarlo sul beez.
Però che sono pigro è vero :P
nonostante ciò m'impegnerò a cercare qualcos'altro allora ;D
-
puoi linkare il sito?
-
certo :)
http://www.asteconsulting.com/index.php?option=com_virtuemart&Itemid=337 (http://www.asteconsulting.com/index.php?option=com_virtuemart&Itemid=337)
questa è la pagina con il modulo che voglio spostare.
-
uhmm.... questi template mi fanno venire gli incubi ;D
comunque credo (sottolineo "credo") che la classe sia "art-block"
quindi nel css dovrai mettere una regola
.art-block + il suffisso che dai al modulo
es: se nel suffisso classe modulo scrivi "_miosuffix" nel css dovrai creare una regola
.art-block_miosuffix {
.........
.........
}
-
capito..sì hai ragione non credo sia fatto molto bene questo template ma siamo alle prime armi :)
Non so se stasera faccio in tempo a provare, al massimo domattina comunque verifico e ti faccio sapere.
Grazie mille per la disponibilità e buona serata. :-*
Francesco
-
Buongiorno,
allora ho provato sia con artblock_miosuffix, sia con art-blockcontent_miosuffix sia con art_blockcontent-body_miosuffix ma non mi sembra che cambi nulla :-[
-
hai dato il suffisso al modulo? perchè non mi sembra di vederlo....
-
sì..quale modulo stai guardando?
http://www.asteconsulting.com/index.php?option=com_virtuemart&Itemid=337 (http://www.asteconsulting.com/index.php?option=com_virtuemart&Itemid=337)
nel modulo a sinistra in questa pagina sì...l'ho chiamato _personale ma con firebug non lo vedo
-
controlla se all'interno del template hai una cartella chiamata 'html' con all'interno il file 'modules.php'. se c'è toglilo o rinominalo.
-
sì c'è..ma sicuro che posso toglierlo/rinominarlo?non creo altri problemi poi? ::)
-
prova... semmai lo rimetti
-
fatto..sono scomparsi i vari art-block, art-blockcontent ecc ma mi spagina anche gli altri menù in questo modo
-
fossi in te valuterei bene la possibiltà di cambiare template.
andando così per tentativi perdi più tempo che a rifarlo da capo partendo con una base di template un pò più decente. lascia perdere questi template con art, block e compagnia, e se non da subito almeno per il futuro.
se proprio non puoi, posta il modules.php che avevi, provo a dargli un'occhiata.
-
Capito..no non posso..non ho ancora l'autorità per farlo e poi andiamo un pò di fretta. Se dico al capo che bisogna cambiare template ora che abbiamo quasi finito mi spara ;D
Ti posto il file.. grazie mille per la disponibilità :)
<?php
defined('_JEXEC') or die('Restricted access'); // no direct access
if (!defined('_ARTX_FUNCTIONS'))
require_once dirname(__FILE__) . str_replace('/', DIRECTORY_SEPARATOR, '/../functions.php');
function modChrome_artstyle($module, &$params, &$attribs)
{
$style = isset($attribs['artstyle']) ? $attribs['artstyle'] : 'art-nostyle';
$styles = array(
'art-nostyle' => 'modChrome_artnostyle',
'art-block' => 'modChrome_artblock',
'art-article' => 'modChrome_artarticle',
'art-vmenu' => 'modChrome_artvmenu'
);
$sfx = $params->get('moduleclass_sfx');
if (in_array($sfx, array_keys($styles)))
$style = $sfx;
call_user_func($styles[$style], $module, $params, $attribs);
}
function modChrome_artnostyle($module, &$params, &$attribs)
{
if (!empty ($module->content)) : ?>
<div class="art-nostyle">
<?php if ($module->showtitle != 0) : ?>
<h3><?php echo $module->title; ?></h3>
<?php endif; ?>
<?php echo $module->content; ?>
</div>
<?php endif;
}
function modChrome_artblock($module, &$params, &$attribs)
{
if (!empty ($module->content))
echo artxBlock(($module->showtitle != 0) ? $module->title : '', $module->content);
}
function modChrome_artvmenu($module, &$params, &$attribs)
{
if (!empty ($module->content)) {
if (function_exists('artxVMenuBlock'))
echo artxVMenuBlock(($module->showtitle != 0) ? $module->title : '', $module->content);
else
echo artxBlock(($module->showtitle != 0) ? $module->title : '', $module->content);
}
}
function modChrome_artarticle($module, &$params, &$attribs)
{
if (!empty ($module->content))
echo artxPost(($module->showtitle != 0) ? $module->title : '', $module->content);
}
-
ho guardato il file ma non credo sia lì il problema.
mi dispiace ma non so che altro consigliarti....
-
va bene :(
Grazie lo stesso e buona serata
Francesco
-
Nei moduli di tipo chrome Joomla! non stampa il suffisso.
Trova il codice dove nel template è richiamato il modulo tipo:
<jdoc:include type="modules" name="left" style="art-blok" /> e subito sotto o sopra ci metti questo:
<jdoc:include type="modules" name="leftbis" style="rounded" /> o questo
<jdoc:include type="modules" name="leftbis" style="xhtml" /> a seconda se vuoi un modulo fatto con i div o con la tabella. Poi pubblichi un modulo in quella posizione e ci applichi il suffisso che vuoi e lo formatti come vuoi ;)
-
giustissima ossevazione tonicopi, non ci avevo pensato...
però per utilizzare quegli stili dovrebbe fare anche l'override con il modules.php, che se non sbaglio, è quello del ruck.... dico bene?
comunque la cosa mi rimane un pò strana, perchè l'override che ha postato Franceschino ce l'ha il codice per stampare il suffisso ???
-
Direi che non è corretto parlare di override del modulo.
Si tratta proprio della possibilità di personalizzare lo stile:
http://wiki.joomla.it/index.php?title=Approfondimento_sui_moduli#Cos.E2.80.99.C3.A8__Module_chrome.3F
-
Mi dispiace rovinare sempre tutto ma non ho neanche quel codice nel template :(
Ho queste :
<jdoc:include type="modules" name="user3" />
<jdoc:include type="modules" name="banner1" style="artstyle" artstyle="art-nostyle" />
questo si riferisce alla posizione left ma è un div :
<?php if (artxCountModules($document, 'left')) : ?>
<div class="art-layout-cell art-sidebar1"><?php echo artxModules($document, 'left', 'art-block'); ?>
Dei vostri discorsi purtroppo ho capito molto poco perchè di template non ne ho mai fatti ma visto quello che dite mi sa che mi ci dovrò dedicare a breve ;D
-
Franceschino, il codice da me postato era solo a titolo di esempio.
Sta a te interpretare ed adattare il codice al tuo caso.
Ci sarà ben una posizione dove pubblichi il modulo che vuoi formattare.
Ecco, devi duplicare quella e metterci xhtml al posto artstyle o quello che è.
E dare un nome univoco alla posizione.... ;)
-
ah ok..va bene sarà fatto :)
grazie mille
-
Ce l'ho fatta ma ho un pò aggirato l'ostacolo credo..non ho duplicato la posizione ma ne ho usata una che non era stata definita nel template ma che comunque ad esempio nell'assegnamento di una posizione ad un modulo mo compariva. Non so spiegare bene questa cosa sinceramente comunque per evitare di creare problemi su quanto già fatto ho preferito utilizzarne una non utilizzata appunto.. Appena avrò un pò più di tempo mi rimetterò a fare il template :)