Back to top

Autore Topic: Passare il valore di un parametro di un modulo al template  (Letto 3946 volte)

Offline virtual

  • Appassionato
  • ***
  • Post: 518
  • Sesso: Maschio
    • Mostra profilo
 Ciao a tutti,
ho un problema relativo al passaggio del valore di un parametro di un modulo al template che utilizzo.
Mi spiego meglio.
 
Ho un modulo formato da soli due files:
 
pippo.xml
pippo.php

 
 
Nel file pippo.xml c’è una serie di parametri del modulo:
 
Codice: [Seleziona]

--------------------
<fields name="params">
        <fieldset name="basic">
                        <field name="bgid" type="text" default="body" label="ID" description="description." ></field>
                        <field name="bglink2" type="text" default="" label="Link" description="type the link URL" ></field>
                        </field>
----------------------------


Quelllo che mi interessa è il secondo parametro: “bglink2”, che è un campo di testo.
 
 
 
Nel file pippo.php questo parametro viene richiamato da una variabile:
 


Codice: [Seleziona]
--------------------
// no direct access
defined('_JEXEC') or die('Restricted access');
 
//get the params
 
$hdbg_id           = $params->get("bgid", "body");
$hdbg_bglink2      = $params->get("bglink2", "");

 ----------------------

 
Fin qui tutto bene.
 
Ora però io vorrrei utilizzare il valore di questo parametro “bglink2” nel file index.php del mio template, e precisamente qui:


Codice: [Seleziona]
-----------------
            <div id="sfondocliccabile">
            <a href="<?php echo $this->params->get'bglink2' ); ?>" target="_blank"><img src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/transparent.png" />[/url]
            </div>
 -------------------
Purtroppo così non funziona.
 
C’è un modo per passare i valori dei parametri presenti in un modulo al file index.php del template?


Grazie mille!

 
Template professionali per Joomla:
http://www.virtualproject.it

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Passare il valore di un parametro di un modulo al template
« Risposta #1 il: 07 Dic 2014, 09:54:04 »
puoi usare JModuleHelper::getModule per ottenere l'oggetto modulo e poi accedere alla proprietà params dello stesso, ma secondo me stai sbagliando l'approccio: sevi usare i parametri del template o al limite le informazioni di menù per gestire il template. il template gestisce i moduli e non viceversa!

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline virtual

  • Appassionato
  • ***
  • Post: 518
  • Sesso: Maschio
    • Mostra profilo
Re:Passare il valore di un parametro di un modulo al template
« Risposta #2 il: 07 Dic 2014, 14:58:07 »
Ciao Marco, grazie per la risposta e anche per il consiglio, proverò poi ti farò sapere.
E' una situazione un po' al limite, mi servirebbe di accedere solo ad un parametro del modulo in questione, quindi ho cercato una scorciatoia :-)) anche se a volte, come si sa, le scorciatoie finiscono per portarti più lontano.
Potrei anche fare una query e recuperare il valore dal db volendo, ma mi sembra una soluzione poco elegante.

Comunque grazie e buon lavoro!

Marco.
Template professionali per Joomla:
http://www.virtualproject.it

Offline FDA

  • Nuovo arrivato
  • *
  • Post: 3
  • Sesso: Maschio
    • Mostra profilo
Re:Passare il valore di un parametro di un modulo al template
« Risposta #3 il: 16 Dic 2014, 17:36:29 »
Ciao Marco,
in Joomla! 3 puoi provare così:

Codice: [Seleziona]
<?php
          $module 
JModuleHelper::getModule('mod_tuomodulo''nome_tuomodulo');
          
$params = new JRegistry($module->params);
          
$tuoparametro $params['tuoparametro'];
?>


cioè una cosa di questo tipo:

Codice: [Seleziona]
<?php
          $module 
JModuleHelper::getModule('mod_pippo''Pippo1');
          
$params = new JRegistry($module->params);
          
$bglink2$params['bglink2'];
?>


Ci sono alcune criticità, sono d'accordo con mmleoni.

Nell'esempio sopra devi specificare anche il secondo argomento in getModule, cioè il nome dello specifico modulo, perché potrebbero esserci più moduli dello stesso tipo; se ometti il secondo argomento allora prende il primo tra tutti i moduli mod_pippo.

Attenzione: se il modulo selezionato è disattivato la cosa non funziona.

Spero di esserti stato utile. :)
Francesco
Francesco D'Agostino

Offline virtual

  • Appassionato
  • ***
  • Post: 518
  • Sesso: Maschio
    • Mostra profilo
Re:Passare il valore di un parametro di un modulo al template
« Risposta #4 il: 16 Dic 2014, 17:51:31 »
Ciao FDA,
grazie per il suggerimento!
Template professionali per Joomla:
http://www.virtualproject.it

Offline steganoga

  • Abituale
  • ****
  • Post: 1313
    • Mostra profilo
Re:Passare il valore di un parametro di un modulo al template
« Risposta #5 il: 16 Dic 2014, 18:41:45 »
@FDA ... hai passato un parametro al modulo
...sono dove non ti aspetti di trovarmi, mi alimento della tua supponenza e disseto la mia curiosità nel silenzio.
Non sono un nemico, considerami un ospite.

Offline FDA

  • Nuovo arrivato
  • *
  • Post: 3
  • Sesso: Maschio
    • Mostra profilo
Re:Passare il valore di un parametro di un modulo al template
« Risposta #6 il: 16 Dic 2014, 20:46:49 »
@steganova: giusto, grazie dell'osservazione.  ;)


@virtual: piccola correzione. Non mi viene in mente niente se non estrarre il valore dalla stringa, ma dovrebbe esistere un modo più elegante. Ho provato così, un po' macchinoso ma va':


Codice: [Seleziona]

<?php
    $module 
JModuleHelper::getModule('mod_tuomodulo''nome_tuomodulo');
    
$params $module->params;
    
$param 'tuoparametro';
    
$textparam '"' $param '":"';
    
$inizio strpos($params,$textparam) + strlen($textparam);
    
$fine strpos($params,'"',$inizio);
    
$valoreparam substr($params,$inizio,$fine $inizio);
?>



Devo sostituire i tuoi dati in mod_tuomodulo, nome_tuomodulo, tuoparametro (questo è bglink2).


In $params ti trovi la stringa con tutti i parametri e i valori. Ho ipotizzato che a te servisse un parametro con valore singolo, altrimenti i valori multipli li ritrovi all'interno di parentesi quadre e devi modificare l'estrazione dalla stringa includendo questo caso.


Fatemi sapere se ce l'abbiamo fatta e/o se esiste un modo più pratico per accedere al parametro non dal modulo.  :)

Francesco D'Agostino

Offline virtual

  • Appassionato
  • ***
  • Post: 518
  • Sesso: Maschio
    • Mostra profilo
Re:Passare il valore di un parametro di un modulo al template
« Risposta #7 il: 16 Dic 2014, 21:53:20 »
dunque, io ho risolto così:

Codice: [Seleziona]
<?php $module JModuleHelper::getModule('mod_tuomodulo');
$moduleParams = new JRegistry();
$moduleParams->loadString($module->params);
$param $moduleParams->get('tuoparametro''defaultValue');
 
?>

poi basta richiamare $param dove serve:

Codice: [Seleziona]
<?php echo $param?>
 
anche il tuo @francesco funziona, grazie per la disponibilità.
Template professionali per Joomla:
http://www.virtualproject.it

Offline FDA

  • Nuovo arrivato
  • *
  • Post: 3
  • Sesso: Maschio
    • Mostra profilo
Re:Passare il valore di un parametro di un modulo al template
« Risposta #8 il: 16 Dic 2014, 22:01:39 »
Mi hai tolto le parole da bocca, stavo postando questo:


Codice: [Seleziona]

<?php
    $module 
JModuleHelper::getModule('mod_tuomodulo''nome_tuomodulo');
    
$params = new JRegistry();
    
$params->loadString($module->params);
    
$param $params->get('tuoparametro');
?>



P.S. Quella della stringa oggettivamente non si poteva guardare.  :D
Francesco D'Agostino

Offline virtual

  • Appassionato
  • ***
  • Post: 518
  • Sesso: Maschio
    • Mostra profilo
Re:Passare il valore di un parametro di un modulo al template
« Risposta #9 il: 16 Dic 2014, 22:30:49 »
è il bello della diretta!! :D
Template professionali per Joomla:
http://www.virtualproject.it

 



Web Design Bolzano Kreatif