Ciao danko54 e Benvenuto nel Forum GT.
Le modifiche da apportare al codice sono davvero poche:
jimport( 'joomla.application.module.helper' ); $module = JModuleHelper::getModule( 'mod_custom' , 'tuomodulo' ); $len = strlen($this->item->text); $posp = strpos($this->item->text, "</p>"); if($len > $posp + 10) { $pos12 = $posp + 4; $pos2 = strpos($this->item->text, "</p>",$pos12); if (!($pos2=='false') ) $posp = $pos2; } $first = substr($this->item->text, 0, $posp); $NomeDelModulo = $module->content; $end = substr($this->item->text, $posp, $len); $this->item->text = $first.$NomeDelModulo.$end;Commento
Il codice sopra deve essere inserito nel file default.php relativo all'articolo e racchiuso tra:
<?php // qui ci va il codice ?>Il file default.php si trova solitamente nella cartella dei template cioè seguendo il percorso templates > tuotemplate > html > com_content > article > default.php .
Se invece si desidera modificare il file del core di Joomla il percorso è: components > com_content > views > article > tmpl > default.php .
Rispetto alla tua soluzione ho rinominato *posp *(posizione paragrafo) la variabile che tu hai nominato pos, ma non cambia nulla.
La riga
ha lo stesso effetto della tua, cioè mette in *posp *la posizione del primo carattere della stringa "</p>" all'interno del testo.
Dopo un primo paragrafo potrebbe essercene un secondo oppure no. Poiché dopo *posp *abbiamo almeno i 4 caratteri di "</p>" e poi altri 7 del secondo paragrafo "<p></p>", la condizione che ho imposto per proseguire nella ricerca è che la lunghezza complessiva del testo (len) sia maggiore di almeno 11 rispetto a posp; se ciò accade si prosegue con la ricerca a partire da dopo il "</p>" trovato, ovvero da pos12 = posp + 4.
*pos12 *e *pos2 *sono variabili di comodo.
La riga:
$pos2 = strpos($this->item->text, "</p>",$pos12);effettua una ricerca analoga alla precedente, sempre all'interno del testo ma a partire dalla pos12.
Nota: non è detto che esista un secondo paragrafo: precedentemente abbiamo fatto un controllo sul numero minimo di caratteri, ma non sappiamo se il paragrafo ci sia. La funzione *strpos *restituisce un numero intero solo se la ricerca ha esito positivo, cioè se il paragrafo c'è, altrimenti restituisce false.
A questo punto ho fatto un'ipotesi: se c'è un secondo paragrafo allora aggiorniamo la posizione *posp *con *pos2 *(posizione del secondo paragrafo), altrimenti ... nulla, cioè in *posp *resterà la posizione del primo paragrafo. In questo modo, se esiste un unico paragrafo allora *tuomodulo *viene stampato alla fine dell'unico paragrafo presente.
Se serve puoi inserire altre condizioni/eccezioni.
Spero di esserti stato utile.:)
F.