Joomla.it Forum
Non solo Joomla... => Sviluppo => : luX0r.reload 17 Jan 2011, 12:31:47
-
Ciao ragazzi,
mi sono avvicinato da poco al design pattern di joomla 1.5 e non riesco a trovare il modo per fare una semplice operazione.
In pratica avrei bisogno di sapere se nella pagina (o meglio ancora nell'area principale che ospita i contenuti) è presente una determinata stringa.
In pratica un modo per farmi restituire il numero di occorrenze di una stringa all'interno del documento.
Grazie
-
Se vuoi contare le parole presenti in una stringa devi usare la funzione di php substr_count, eccoti un esempio
$quante=substr_count($stringa, "Parola");
in questo caso la variabile quante conterrà il numero di volte che la parola "Parola" è contenuta in $stringa
-
Se vuoi contare le parole presenti in una stringa devi usare la funzione di php substr_count, eccoti un esempio
$quante=substr_count($stringa, "Parola");
in questo caso la variabile quante conterrà il numero di volte che la parola "Parola" è contenuta in $stringa
Si quello lo so... ma la mia $stringa dovrebbe essere il contenuto della pagina corrente, e non so come prelevare il contenuto della pagina corrente. Stavo vedendo l'oggetto JDocument e JDocumentHTML ma non ho trovato un metodo che mi restituisca il documento in formato stringa oppure mi permetta di manipolare il DOM.
E' da stamattina che sto cercando in rete ma non ho trovato ancora niente che mi possa essere utile.
Possibile che non c'è una funzione del genere? :o
-
se vai in components/com_content/views/article/tmpl/default.php al suo interno trovi
<?php echo $this->article->text; ?>
Nel file originale dovrebbe essere la riga 125. Questa è la stringa che contiene tutto l'articolo, mentre se vuoi avere la stringa che contiene l'articolo visualizzato in home page il file nel quale cercare la variabile è components/com_content/views/frontpage/tmpl/default_item.php e alla riga 119 (riga più o riga meno):
<?php echo $this->item->text; ?>
-
se vai in components/com_content/views/article/tmpl/default.php al suo interno trovi
<?php echo $this->article->text; ?>
Nel file originale dovrebbe essere la riga 125. Questa è la stringa che contiene tutto l'articolo, mentre se vuoi avere la stringa che contiene l'articolo visualizzato in home page il file nel quale cercare la variabile è components/com_content/views/frontpage/tmpl/default_item.php e alla riga 119 (riga più o riga meno):
<?php echo $this->item->text; ?>
Grazie per la dritta... do un'occhiata all'oggetto $this nel contesto a cosa corrisponde.
Forse però è meglio che spieghi quello che vorrei fare.
Sto modificando il componente/modulo banner di Joomla. Ho già implementato la funzionalità che mi permette di visualizzare i banner in base alla location dell'utente (ricavata dal numero IP) e ora mi servirebbe visualizzare i banner in base al contenuto dell'articolo visualizzato.
In pratica dovrei cercare nell'articolo una determinata stringa, e se presente dovrei filtrare la lista dei banner da visualizzare.
Spero sia una cosa fattibile, altrimenti devo utilizzare una soluzione a mio modo di vedere "sporca", facendo un append alla fine degli url... ma proprio non mi piace.
-
ah ho capito, allora il mio aiuto mi sa che è errato, in quanto quel file si riferisce al componente che visualizza gli articoli e non penso si possa accedere alla variabile che contiene il testo contenuta nei due file che ho citato, provo a cercare se trovo una soluzione
-
ciao luX0r.reload,
la questione è un poco spinosa...
i casi sono due:
1. i banner si adattano agli articoli, ovvero dipendono da com_content
2. i banner si adattano al contenuto della pagina, ovvero funzionano indipendentemente dal componente usato
nel primo caso nel nuovo modulo del banner richiami il router di com_content per ottenere l'id dell'articolo, indi leggi l'articolo e ne effettui il parsing del testo.
nel secondo caso il modulo dovrà scrivere un codice di richiamo dei banner generico con dei place holders (tipo {bannerHolder_XX} ); dopo di che affiderai ad un plugin di tipo system il parsing del documento generato e la sostituzione dei citai place holders.
dato che non sai, al momento dell'esecuzione del codice del modulo se sia già stato fatto il rendering del componente è difficile usare altri metodi.
ad onor del vero ricordo che da qualche parte della documentazione era spiegato l'ordine di rendering dei vari oggetti, ma ove fosse, e che indicasse, proprio non lo ricordo...
ciao,
marco