Joomla.it Forum
Non solo Joomla... => Sviluppo => : cosimo84 22 Jul 2009, 16:55:56
-
Ciao, non so se qualcuno ha avuto i miei stessi problemi, comunque sono riuscito a modificare il codice del componente "wrapper" in modo da far passare il parametro Itemid.
La modifica consiste nell'editare il file /components/com_wrapper/views/wrapper/tmpl/default.php
in questo modo:
<?php // no direct access
defined('_JEXEC') or die('Restricted access'); ?>
<script language="javascript" type="text/javascript">
function iFrameHeight() {
var h = 0;
if ( !document.all ) {
h = document.getElementById('blockrandom').contentDocument.height;
document.getElementById('blockrandom').style.height = h + 60 + 'px';
} else if( document.all ) {
h = document.frames('blockrandom').document.body.scrollHeight;
document.all.blockrandom.style.height = h + 20 + 'px';
}
}
</script>
<div class="contentpane<?php echo $this->escape($this->params->get('pageclass_sfx')); ?>">
<?php if ( $this->params->get( 'show_page_title', 1 ) ) : ?>
<div class="componentheading<?php echo $this->escape($this->params->get('pageclass_sfx')); ?>">
<?php echo $this->escape($this->params->get( 'page_title' )); ?>
</div>
<?php endif; ?>
<?php
$Itemid=$_GET["Itemid"];
?>
<iframe <?php echo $this->wrapper->load; ?>
id="blockrandom"
name="iframe"
src="<?php echo $this->wrapper->url."?id_r=".$Itemid; ?>"
width="<?php echo $this->params->get( 'width' ); ?>"
height="<?php echo $this->params->get( 'height' ); ?>"
scrolling="<?php echo $this->params->get( 'scrolling' ); ?>"
align="top"
frameborder="0"
class="wrapper<?php echo $this->escape($this->params->get('pageclass_sfx')); ?>">
<?php echo JText::_( 'NO_IFRAMES' ); ?>
</iframe>
</div>
In seguito, in qualsiasi file php del wrapper basta richiamare la variabile id_r tramite $id_r=$_GET["id_r"] che corrisponde all'Itemid dell'oggetto wrapper.
Mi scuso se qualcuno già l'aveva scoperto e spero di essere stato utile.
Ciao
--Cosimo
-
ciao Cosimo84 credo che sia un argomento più attinente alla sezione sviluppo, anche se probabilmente la modifica era pensata per i forum?
che ne pensi?
a proposito, su che versione joomla hai operato la modifica?
-
ciao Cosimo84 credo che sia un argomento più attinente alla sezione sviluppo, anche se probabilmente la modifica era pensata per i forum?
che ne pensi?
a proposito, su che versione joomla hai operato la modifica?
Ciao 56francesco,
mi scuso se ho postato nella sezione sbagliata e ti ringrazio per averla spostata.
Ho operato la modifica su Joomla! 1.5, può essere utilizzata anche per i forum.
E' molto utile in quanto il parametro "Itemid" dei componenti non è visibile all'interno dei vari php che compongono il wrapper (o gli altri componenti) e può essere utile per fare degli if selettivi in base a questo id.
Spero sia utile a qualcuno ;)
-
1.5?
cosimo non potresti essere più preciso?
-
Scusa hai ragione, versione 1.5.12
-
Grazie cosimo, il tuo script mi è stato molto utile per risolvere un problema che avevo su un template :D
-
$id_r=$_GET["id_r"]
-------------------------------
questo è valido come snippet, esempio, ...non fate una cosa simile, non si prendono le var direttamente dai get post etc.
M.
-
@mau
Ciao, sempre graditi i tuoi interventi: :)
Forse ho letto qualcosa in merito, di tuo o di altri: potresti spendere qualche parola? ;) TIA
1. $Itemid=$_GET["Itemid"];
2. $id_r=$_GET["id_r"]
-
ogni variabile presa dall'esterno, quindi non creata runtime, va sottoposta a casting... proprio come il grande fratello :):)
si attendono un buffone che attiri l'attenzione per mesi su una popolazione con limitato uso del cervello e quello devono trovare, così fanno un casting per vedere se il buffone atteso è veramente un buffone o fa finta.
Sì fa ridere ma il principio è il medesimo... ti attendi un id, quindi un numero e devi controllare che sia veramente ciò che ti attendi, quante più cose controlli tante meno probabilità di usi non consoni si creano; ovviamente l'errore va gestito.
Joomla solitamente usa i vari JRequest getVar piuttosto che getInt, poi dei parametri di casting come argomenti:
http://api.joomla.org/Joomla-Framework/Environment/JRequest.html
Se fossimo fuori da joomla la cosa non cambia, un:
$pippo=$_GET['id'];
va prima sottoposto a controlli, cosa facilitata da varie funzioni di php, chessò:
if(is_numeric($_GET['id'])){
$pippo=$_GET['id'];
ma puoi anche fare controlli più specifici se sai ad esempio che quel numero non sarà mai più di 3 cifre:
if( is_numeric($_GET['id']) && strlen($_GET['id']) <= 3 ){
$pippo=$_GET['id'];
..o complicarti la vita con le regex cercando un pattern esclusivamente [0-9]+ ... o [0-9]{3} ..per il discorso delle tre cifre sopra.
M.
-
ogni variabile presa dall'esterno, quindi non creata runtime, va sottoposta a casting... proprio come il grande fratello :):)
si attendono un buffone che attiri l'attenzione per mesi su una popolazione con limitato uso del cervello e quello devono trovare, così fanno un casting per vedere se il buffone atteso è veramente un buffone o fa finta.
vado un attimo OT, ma devo dire che in questo modo mi ricorderò SEMPRE di fare il casting :D
-
@mau
Chiarissimo, esauriente e utile. Grazie.