6 gennaio 2009 - Tags: ,

Nota: a questo post si è aggiunta nel tempo una lunga serie di utili commenti, vi invito a leggerli per ottenere ulteriori informazioni sull’argomento.

Mentre aspettavo gli ospiti per la cena di San Silvestro, avendo un po’ di tempo libero da impiegare (e non avendo voglia di iniziare un videogioco per pochi minuti :-) ) ho “navigato” tra i vari link che nel corso dell’anno mi annoto, pronti da leggere appena ho il tempo di farlo. Tra gli altri, ho ritrovato questo post che parla di come creare una mappa del sito su Joomla.

Leggendolo, mi sono subito distratto rispetto all’obiettivo principale, cioè la creazione della mappa del sito: sono stato invece colpito dall’uso della funzione “loadposition” all’interno del corpo dell’articolo. Sembrava proprio quello che stavo cercando negli ultimi tempi! Ho subito attivato il mio sito Joomla di test, e mi sono messo a fare qualche prova. E’ proprio così. Ora vi spiego.

Uno dei problemi concettuali da risolvere quando si affronta Joomla per la prima volta è distinguere tra i componenti e i moduli. I primi infatti sono responsabili del contenuto principale della pagina, caricato solitamente al centro. I secondi invece sono varie funzionalità aggiuntive, in alcuni casi in sola lettura, in altri casi interattive, posizionati in vari punti della pagina grazie all’interazione con un apposito template.

Risolta questa distinzione, presto o tardi uno arriva a chiedersi: come posso caricare un modulo come contenuto principale della pagina? Fino a pochi giorni fa, la migliore soluzione che io avevo trovato era quella di:

  • creare un articolo vuoto e farlo puntare da una voce di menu;
  • creare il modulo e posizionarlo subito sopra l’articolo (la maggior parte dei template offre una posizione di questo tipo, in caso contrario possiamo comunque crearcela da noi);
  • visualizzare il modulo solo per la voce di menu corrispondente all’articolo.

In questo modo, la voce di menu apre un articolo vuoto, quindi solo il modulo resta visibile. Tale modulo, inoltre, è visibile solo in questa pagina, per cui di fatto la voce di menu diventa associata al modulo.

loadposition

La soluzione proposta sopra, evidentemente, non è elegantissima. Qualcun altro del team Joomla deve essere giunto prima di me alla stessa conclusione, e ha creato la funzione loadposition. Praticamente, inserendo nel corpo dell’articolo la dicitura

{loadposition nomeposizione}

carichiamo i moduli pubblicati associati a tale posizione.

Una cosa ancora più interessante è che tale posizione può anche essere fittizia, cioè non effettivamente presente nel template, ed essere usata quindi solo per identificare il modulo o i moduli che vogliamo fare vedere nell’articolo.

Ad esempio, supponiamo di aver creato un modulo personalizzato che mostra il calendario, ma che ora voglio visualizzare come contenuto principale della pagina. Creo quindi un articolo che contiene solo la scritta

{loadposition calendario}

Notare che “calendario” non fa parte delle posizioni offerte dal mio template. Per cui quando vado a modificare il modulo, non troverò tale posizione nella lista. Dovrò invece scriverla, nel campo posizione, ignorando tale lista.

A questo punto, con una voce di menu che punta all’articolo creato, vedrò il mio modulo calendario al centro della pagina.

UPDATE: per utilizzare la funzione illustrata deve essere attivo il plugin Content – LoadModule. A me pare che nelle versioni precedenti di Joomla fosse attivo per default, ma perlomeno dalla versione 1.5.9 in poi va abilitato a mano dalla Gestione Plugin.

Tags: ,

56 commenti a “Visualizzare un modulo Joomla al centro della pagina”

  1. Massimo Says:

    E cosi,niente più shout box “poco eleganti” . Avevo già letto la mail,ma l’articolo è decisamente più esplicativo. A presto

  2. Marco Says:

    Interessante articolo!
    Ho un problema che magari potresti aiutarmi a risolvere. Quando dici

    “Dovrò invece scriverla, nel campo posizione, ignorando tale lista.”

    Come puoi scrivere quella posizione “calendario” (p.e.) se è una tendina che non lascia spazio alla customizzazione? Grazie mille per il tuo tempo, Marco

  3. Francesco Says:

    @Marco:
    se provi a cliccare nel campo “Posizione”, senza aprire la tendina, vedrai che puoi cancellare quanto c’è scritto e scrivere una posizione a tuo piacere. Prova!

    Peraltro, è anche possibile aggiungere una posizione fittizia al template semplicemente modificando il suo file XML.

    Fammi sapere se riesci a risolvere!

  4. Maurizio Says:

    Scusate l’estrema ignoranza ma mi spiegate perchè se cerco di caricare la voce {loadposition calendario} nell’articolo in realta non fa altro che scrivermi {loadposition calendario} senza caricare nessun modulo?

  5. Francesco Says:

    Ciao Maurizio, forse stai usando un editor diverso da quello di default? Quando scrivi un articolo, sopra l’area di testo vedi le varie opzioni di formattazione oppure vedi solo un riquadro bianco? E infine, sei su Joomla 1.5?

  6. Gigi Says:

    Su Joomla 1.5.9 non trovo campo posizione, ma è compatibile con la 1.5.9 questo trucchetto?

  7. Francesco Says:

    @Gigi:
    se vai in Estensione -> Gestione moduli e apri un qualunque modulo in modifica, il campo “Posizione” lo trovi eccome. E’ il MODULO che deve essere messo in una specifica posizione, poi devi creare un ARTICOLO che contiene solo il comando {loadposition nomeposizionescelta}.

  8. @Suix Says:

    Si funziona tutto ma io non riesco a centrare il modulo che devo inserire
    mi resta sempre a sinistra :-( (((((((((((((

  9. Francesco Says:

    @Suix:
    devi selezionare la scritta “{loadposition xxxx” e cliccare sul pulsante per centrare il testo.

  10. Riange Says:

    Grazie Francesco, ottimo articolo. Oggi ho provato ad utilizzare questa funzione. Il risultato è stato che il modulo non gira, rimane lo spazio dove ipoteticamente dovrebbe trovarsi il modulo. Devo attivare qualcos’altro? I moduli devono essere creati da me o posso utilizzare questa funzione anche con moduli tipici di joomla? Ho la versione 1.5 e la faccio girare in remoto su un mac con mamp. Grazie.

  11. Francesco Says:

    @Riange:
    il tipo di modulo non è importante, basta che tu verifichi che la posizione usata nel modulo e quella chiamata nell’articolo coincidano. Inoltre, verifica di avere attivo il plugin “Content – LoadModule” altrimenti non funziona.

  12. Stefano Says:

    Grazie!
    forse è proprio quello che cercavo….
    è possibile con LOADPOSITION inserire es. un mod_mainmenu nell’articolo e poi formattarlo via css..?
    non devo quindi ricorrere all’override di default.php (article)?
    grazie per ulteriori chiarimenti.

  13. Francesco Says:

    @Stefano
    è esattamente quello che ti serve. Leggiti anche tutti i commenti, ci sono alcune note significative da tenere presente.

  14. sheol77 Says:

    ottimo!!! è quello che stavo cercando grazie 1000

  15. Mario Says:

    Funziona alla grande…..solo un problema:
    Nel momento in cui voglio far visualizzare ad esempio il modulo Image Rotator al centro della pagina, le dimensioni della pagina non si adattano alla grandezza della foto. Risultato foto tagliate.
    Come mai?

  16. Mario Says:

    :) Risolto…………..basta modificare le dimensioni del modulo stesso ………….
    Cmq bella informazione…….

  17. Chiara Says:

    A me non funziona… =( rimane solo la scritta {loadposition eventi}…
    e non capisco cosa vuoi dire con: “A questo punto, con una voce di menu che punta all’articolo creato, vedrò il mio modulo calendario al centro della pagina.”

    In pratica: io ho creato un modulo e in posizione ho scritto “eventi” che è una posizione fittizia.
    Poi ho creato un articolo vuoto con solo scritto {loadposition eventi} e l’ho messo in home page al centro della pagina, ma appunto non mi carica il modulo… rimane solo la scritta! Ho saltato qualche passaggio?

  18. Francesco Says:

    @Chiara:
    devi verificare che il plugin “Content -> Load Module” sia attivato. Vai in Estensioni -> Gestione Plugin per verificare.

  19. Chiara Says:

    Sì sì era già attivato di default! ^^

  20. Elisa Says:

    Non riesco a far funzionare questo trucchetto con il modulo rokslideshow; il comando viene letto perchè nell’articolo non compaiono le parentesi e la scritta, e inoltre ho provato a caricare altre posizioni (ad esempio right) e funge..sto usando il template cloudscape. Suggerimenti?:(

  21. Francesco Says:

    @Elisa:
    vediamo di capire dove nasce l’errore
    1. crea un nuovo modulo di tipo “HTML Personalizzato” e mettilo in una posizione “fasulla” tipo “test”
    2. carica la posizione in un qualunque articolo con il comando “{loadposition test}
    Si vede il modulo?
    3. Ora sposta il modulo RokSlideShow sempre nella posizione “test”.
    Si vede?

  22. Chiara Says:

    Io non sono proprio riuscita a risolvere… non capisco come mai non funzioni, nonostante il plugin sia attivo!

  23. Elisa Says:

    Ti ringrazio moltissimo per avermi risposto così celermente!Gentilissimo!

    >crea un nuovo modulo di tipo “HTML Personalizzato” e mettilo in una >posizione “fasulla” tipo “test”
    ok
    >carica la posizione in un qualunque articolo con il comando “{loadposition >test}
    >Si vede il modulo?

    >Ora sposta il modulo RokSlideShow sempre nella posizione “test”.

    E qui praticamente mi visualizza solo il nome che ho dato al modulo e non la galleria..sono anche andata nelle opzioni del plugin Load Module e ho provato a cambiare le impostazioni del wrapper, ma senza successo…devo aver fatto uno di quegli errori assolutamente idioti che però ti fanno perdere eoni di tempo ;__;

  24. Francesco Says:

    @Chiara:
    che versione di Joomla usi? Il modulo che hai messo nella posizione “Eventi” è pubblicato e accessibile a tutti? Per assicurarci che non ci sia qualche errore, puoi provare a creare un NUOVO modulo di tipo “HTML Personalizzato”, creare una NUOVA posiziona fittizia (es. “test”) e un NUOVO articolo in cui usare il comando {loadposition test}.
    Poi fammi sapere.

  25. Francesco Says:

    @Elisa:
    no, non è detto che il modulo in questione sia compatibile. Se mi dici che l’altro modulo funziona e quello no, può anche darsi che tu non c’entri nulla. Il modulo in questione è pubblicato?

  26. Elisa Says:

    Se per pubblicato intendi “attivato”,sì,lo è.
    Ho un’altra galleria creata con lo stesso modulo posizionata in top che funziona perfettamente…a questo punto potrebbe essere un’incompatibilità template/modulo.
    Ora provo ad installare un altro modulo per la creazione delle gallerie e vi faccio sapere se funziona :)

  27. Elisa Says:

    faccio un piccolo aggiornamento a seguito di ricerche: siccome mi ero fissata nell’utilizzo di rok per le slideshow, ho spulciato i forum e ho letto che:
    - non si possono far andare due istanze dello stesso modulo;
    - se dev’essere fatta una chiamata alla posizione questa deve chiamarsi “slideshow”

    Giusto nel caso in cui qualcuno si trovi nelle stesse difficoltà con questo modulo,perchè io,ribadisco,con cloudscape non sono riuscita in nessun modo a far funzionare il tutto, ho anche provato a inserire la posizione manualmente nel template e a eliminare una delle due gallerie che venivano caricate nella stessa pagina.
    Grazie mille cmq :D

  28. Elisa Says:

    Sperando sempre di fare cosa gradita,segnalo che a chi non funzionasse il loadposition può creare una nuova posizione nel template posizionadola al centro dell’articolo:
    http://wiki.joomla.it/index.php?title=Come_aggiungo_nuove_posizioni_modulo%3F
    Chiudo qui e chiedo scusa se ho fatto troppi post :D almeno ho risolto e sto zompettando di soddisfazione XD

  29. Francesco Says:

    @Elisa:
    gentilissima, grazie per le numerose informazioni!
    Giusto per la precisione, però, la soluzione che proponi è leggermente diversa da quella spiegata nel mio post.
    Confermo che in un template è possibile definire delle posizioni centrali, anzi: nella maggior parte dei template professionali sono già esistenti. Ma si tratta solitamente di posizioni collocate SOPRA o SOTTO il vero e proprio articolo; mentre con “loadposition” (quando funziona :-) ) possiamo mettere il modulo ALL’INTERNO dell’articolo, e anche scrivere del normale testo sopra e sotto (in maniera simile al plugin di MorfeoShow, per chi lo conosce).
    La differenza importante è che un articolo può essere linkato da una voce di menu, mentre un modulo no; per cui se non uso il loadposition non ho modo (se non usando alcuni altri “trucchetti”) di collegare direttamente a una voce di menu la pagina risultante.
    Direi che questa serie di commenti sta diventando piuttosto utile, grazie a tutti!

  30. Chiara Says:

    Ho l’ultima versione di Joomla… comunque ho fatto la prova che mi hai detto tu e funziona!
    Non capisco quindi come mai con il modulo “latest news” non funzioni! =(

  31. Chiara Says:

    Ok, ora funziona anche col modulo eventi, solo che non mi visualizza gli ultimi articoli! mah!

  32. Francesco Says:

    @Chiara:
    cosa intendi per modulo “eventi”? Stai sempre parlando di Latest news o è qualcos’altro? Se lo usi come normale modulo, cioè senza loadposition, si vedono gli ultimi articoli?

  33. Chiara Says:

    Sì, il modulo “Eventi” è un modulo “Notizie recenti”.
    Ho provato a metterlo come normale modulo nella colonna di destra, ma non mostra gli articoli recenti! -_-
    Eppure è attivato e gli articoli recenti esistono! Sto iniziando seriamente ad odiare Joomla!

  34. Chiara Says:

    Ok, ritiro tutto!
    CE L’HO FATTA! XD

    Ora funziona tutto!
    Ti ringrazio Francesco, questo articolo è stato utilissimo, ma soprattutto lo sei stato tu! =D
    Molto gentile!

  35. Francesco Says:

    @Chiara:
    è un piacere essere utile. No dai, non odiare Joomla, bisogna solo conoscerlo :-) Buon lavoro!

  36. ercol Says:

    E se volessi caricare un componente in un articolo? esiste una macro tipo load module?

  37. Francesco Says:

    @ercol:
    che io sappia non esiste, sarebbe un po’ strano. Tieni presente per mettere un componente al centro della pagina non devi includerlo in un articolo ma sempicemente fare puntare la voce di menu direttamente al componente.
    Se invece vuoi DAVVERO includere all’interno di un articolo dei dati provenienti da un componente, alcuni componenti (es. AllVideos, MorfeoShow) offrono anche dei plugin in modo che scrivi nell’articolo una certa sintassi, ad esempio:

    {morfeo 1}

    o qualcosa di simile, e questo viene sostituito al volo dal risultato dell’elaborazione.
    Questo è tutto quello che so.

  38. ercole Says:

    Grazie francesco in realtà ciò che volevo fare io è inserire un Weblink categoria standard a centro pagina (articolo) subito dopo dei moduli che sempre con la sintassi Loadmodule ho inserito in precedenza.

  39. Francesco Says:

    @ercole:
    non sono sicuro di aver capito bene, ma credo che tu stia percorrendo la strada sbagliata. Il “loadposition” è una eccezione, non la regola. Per far comparire qualcosa nel centro della pagina, non devi creare sempre un articolo e poi riempirlo.
    Che template stai usando? E’ probabile che tu abbia delle “posizioni modulo” già disponibili subito sopra e sotto il componente principale. In questo caso, niente “loadposition”; devi semplicemente caricare dei moduli in tali posizioni e poi fare una voce di menu verso la pagina dei WebLink desiderata.

  40. ercole Says:

    il template che utilizzo l’ho creato io di sana pianta. Il sito in questione è il seguente: http://www.cusme.it (non è commerciale ecco perchè mi permetto di passare il link qui).
    Puoi vedere come al centro pagina della home vi siano caritati due moduli di Global News(il primo in posizione che io ho chiamato “ultime notizie” ed il secondo subito dopo in posizione “eventi”) utilizzando la loadposition.
    In sostanza faccio puntare la home ad un articolo vuoto in cui ho posizionato due moduli di tipo globalnews.
    Il weblinks di cui ti parlo si trova nel menu a sinistra “Area Stampa” che compare a centro pagina quando clicclo il bottone.
    Quello che vorrei è posizionare il componente weblinks “Area Stampa” a centro pagina insieme a “ultime notizie” ed “eventi” che sono moduli invece ogni qualvolta che si accede alla home page.
    Forse mi sto complicando la vita ma vorrei sapere se è assurdo ed eventualmente che soluzione adottare.

    Grazie per il feedback

  41. Francesco Says:

    @ercole:
    sì, ti stai complicando la vita. :-)
    Come ho già scritto nel commento precedente, NON devi usare un articolo come “spazio vuoto” dove caricare i moduli. Il “loadposition” deve essere un’eccezione, non la regola.
    Nel tuo caso è sufficiente che aggiungi nel template una posizione specifica per i moduli, ad esempio aggiungi la riga:

    <jdoc:include type="modules" name="news" />

    prima di

    <jdoc:include type="component" />

    A quel punto, metti i due moduli GlobalNews nella posizione “news” (NON devi usare loadposition) e poi fai puntare la home page alla voce di menù AreaStampa (in pratica, la imposti come predefinita).

  42. ercole Says:

    grazie per la conferma farò come dici tu anche per mantenere una coerenza di progettazione nel template creerò una posizione ad hoc.

  43. fabrizio Says:

    Ragazzi scusate perchè global news si visualizza su tutti i browser e non su explorer ?
    Quale è il fix?
    Grazie

  44. Riki Says:

    Ciao a tutti!
    Io ci sto provando e riprovando ma nun me funge!!
    Allora…ho installato il modulo virtuemart quindi alla voce di menu “HOME” è stato assegnato il tipo Virtuemart….in 1° pagina al momento è visibile la parte descrittiva del negozio con le varie categorie!
    Sotto questo blocco vorrei mettere il modulo top ten o product scroller che ora si trovano a sinistra parte alta
    http://www.sognidimoda.com/test/

    Ho provato a creare un nuovo articolo con titolo user11, come testo ho scritto {loadposition user11} E tale è rimasto,nn è successo nulla!!
    Poi nel modulo top ten, alla voce posizione ho scritto user11…nulla non si vede nella parte centrale!
    Il plugin load position è attivato!
    Qualcuno sa come risolvere?
    Grazie,
    Riki

  45. Francesco Says:

    @Riki:
    il metodo illustrato serve per visualizzare un MODULO all’interno di un ARTICOLO. Quindi, è ovvio che funziona solo se fai una pagina che punta a quell’ARTICOLO, mentre tu stai parlando di una pagina che punta a VIRTUEMART.
    Se ho capito bene quello che stai cercando di realizzare, probabilmente è molto più semplice. Il tuo template ha una serie di posizioni predefinite, “left”, “right”, ecc…, e sicuramente ne ha anche una che si trova al centro sotto il corpo centrale della pagina.
    Quindi vai in “Gestione Moduli”, apri il modulo Top Ten, e cambia la “posizione” con quella desiderata.

  46. Riki Says:

    Ciao Francesco,
    Grazie per la gentile risposta!!
    Provo allora a muovermi in un’altra direzione, vediamo cosa riesco a combinare! :)
    A presto,
    Riki

  47. Pierluigi Says:

    salve,
    ragazzi forse potreste aiuatarmi, ho inserito un modulo all’interno del sito, quelo rokslideshow. Ebbene se lo inserisco a destra a sinistra il modulo come viene descritto funziona benissimo, con l’iimagine e il link con il titolo…Appena viene inserito all’interno dei contenuti in prima pagina con lamodalità del plugin Content – LoadModule attivo, creando una pagina fittizia con la posizione, all’interno dei contenuti si vedono i titoli linkati, ma l’immagine non esce, chi potrebbe dirmi qual’é il problema, lo stesso vi ripeto senza campiare ninete funziona benissimo con le immagini caricate (a destra e sinistra) appena viene inserito nei contenuti, sparisce l’immagine e si vede solo il titolo e il link. Grazie della riposta…

  48. Francesco Says:

    @Pierluigi:
    leggi tra i commenti di questo stesso post quello scritto da Elisa lo scorso 8 Settembre: credo ci sia la soluzione che ti serve.

  49. Pierluigi Says:

    Ribadisco, scusami se ti rinnovo il quesito.
    ho letto i post di Chiara e francamente é lo stesso problema da lei riscontrato. Il problema e che leggendo i suoi post so che lei alla fine ha risolto il problema ma non so come :)

    Se potresti gentilmente farmi una sistesi di soluzione. Io ho ricreato un modulo inserendo e salvando la posizione slideshow come Chiara mi ha fatto intendere.
    Poi ho attivato il pugin lugin Content – LoadModule(che era già attivato di default), ho visto che lo stile é Wrapped per tabella (Colonne), non so sinceramente se devo cambiare stile, Chiara dice che é lo stesso in alcuni suoi post.

    Ho infine creato la pgina che va a richiamarsi nei contenuti in prima pagina inserendo: {loadposition slideshow} Adesso vorrei capire dove sbaglio? Vedo il modulo con i titoli linkati inseriti, ma nessuna immagine inserita. Ribadisco se metto a destra o asinistra il modulo funzinùona correttamente. Grazie

  50. Mimmo Says:

    Chi eventualmente continua ancora a non vedere il modulo nella posizione prevista, nonostante tutti i settaggi di cui si è parlato, faccia quest’altro tentativo.

    Nella scritta {loadposition miapos}, riportata ad inizio rigo nell’articolo, controlli che non ci siano spazi prima della prima parentesi, oltre che nelle due parentesi, ad eccezione di quello fra loadposition e miapos.

  51. Francesco Says:

    @Mimmo:
    grazie per la tua osservazione! Confermo la necessità che non ci siano spazi aggiuntivi all’interno della parentesi, ad esempio “{ loadposition miapos }” non funzionerebbe.
    Tuttavia, mi pare di poter dire che gli spazi ESTERNI (prima e dopo le parentesi graffe siano innocui, perlomeno ho appena provato e vedo che funziona lo stesso.

  52. Mimmo Says:

    A me non funzionava ScrollArticle per uno spazio prima della prima parentesi.

  53. Vincenzo Says:

    Era solo per ringraziarti sono riuscito perfettamente e senza alcun poblema!

    Grazie ancora …

  54. Lello Says:

    Può essere che a me non funzioni perchè ho ancora la versione di joomla 1.0.13?

  55. Francesco Says:

    @Lello:
    sì, direi proprio di sì. A meno che non ci siano motivi tecnici molto seri, ti consiglio decisamente di aggiornare alla 1.5.

  56. Lello Says:

    @ Francesco: grazie mille!

Lascia un commento

Nota: i commenti verranno moderati da un amministratore prima di essere pubblicati