Funzione per le News "leggi tutto"

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Salve, sto leggendo questo tutorial:
http://programming-in-php.blogspot.it/2009/10/function-to-show-read-more-link-in-php.html

ora chiedo è possibile farlo con un bbcode che posso decidere io ti far visualizzare un tot di lettere e far vedere i link "leggi tutto", avendo solo il
campo nel database "news" in formato longtext.?

come posso fare che io posso decidere di far vedere "leggi tutto" o viceversa"?.

grazie mille.

Ecco il codice chi non vuole andare nel sito citato.

utils.php
PHP:
    <?php  
    //function to truncate text and show read more link  
    function truncate($mytext,$link,$var,$id) {  
    //Number of characters to show  
    $chars = 25;  
    $mytext = substr($mytext,0,$chars);  
    $mytext = substr($mytext,0,strrpos($mytext,' '));  
    $mytext = $mytext." <a href='$link?$var=$id'>read more...</a>";  
    return $mytext;  
    }  
    ?>
example.php
PHP:
    <?php  
    include "connect.php";  
    $sql = "SELECT * FROM articles";  
    $result = mysql_query($sql);  
    while($row = mysql_fetch_array($result))  
    {  
    echo "\n";  
    echo truncate($row['article_text'],"article.php","article_id",$row['article_id']);  
    }  
      
    //function to truncate text and show read more link  
    function truncate($mytext,$link,$var,$id) {  
    //Number of characters to show  
    $chars = 25;  
    $mytext = substr($mytext,0,$chars);  
    $mytext = substr($mytext,0,strrpos($mytext,' '));  
    $mytext = $mytext." <a href='$link?$var=$id'>read more...</a>";  
    return $mytext;  
    }  
    ?>
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
nessuno??
io per il mio bbcode utilizzo questo codice:
PHP:
<?php
function bbcode($string)
{
	//No HTML
	$string = trim(str_replace("<", "&lt;", $string));
	$string = trim(str_replace(">", "&gt;", $string));
	
	//CHR 13
	$string = trim(str_replace(chr(13), "<br>;", $string));
	$string = trim(str_replace(";", "", $string));
	
	//BBCODE
	$string = trim(str_replace("[B]", "<b>", $string));
	$string = trim(str_replace("[/B]", "</b>", $string));
	$string = trim(str_replace("[I]", "<i>", $string));
	$string = trim(str_replace("[/I]", "</i>", $string));
	$string = trim(str_replace("[U]", "<u>", $string));
	$string = trim(str_replace("[/U]", "</u>", $string));
	$string = trim(str_replace("[HR]", "<hr>", $string));
	$string = trim(str_replace("[LI]", "<li>", $string));
	$string = trim(str_replace("[IMG=", "<img border='0' src='", $string));
	$string = trim(str_replace("[URL=", "<a href='", $string));
	$string = trim(str_replace("[/URL]", "</a>", $string));
	$string = trim(str_replace("[ALIGN=left]", "<div align='left'>", $string));
	$string = trim(str_replace("[ALIGN=center]", "<div align='center'>", $string));
	$string = trim(str_replace("[ALIGN=right]", "<div align='right'>", $string));
	$string = trim(str_replace("[/ALIGN]", "</div>", $string));
	$string = trim(str_replace("[EMAIL=", "<a href=mailto:", $string));
	$string = trim(str_replace("[/EMAIL]", "</a>", $string));
	$string = trim(str_replace("[COLOR=", "<font color=", $string));
	$string = trim(str_replace("[/COLOR]", "</font>", $string));
	$string = trim(str_replace("]", "'>", $string));
	
	//Ritorno il valore
	return $string;
}
?>

come posso aggiungerlo qui ?

grazie mille.
buona serata.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ho fatto ma non so come posso inserire quei valori nel bbcode:
PHP:
$string = trim(str_replace("[MORE", "<a href=''>read more...</a>", $string));

idee?

grazie mille.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ciao, non so cosa intendi la stringa.. ma io la uso cosi:

PHP:
<div class="post">
			<p class="title"><?php echo $row["title"]; ?></p>
			<div class="entry">
			<p><?php echo bbcode($row['news']); ?></p>
			<p class="meta"><?php echo "Pubblicato:&nbsp;".show_data($row["data"])."&nbsp;";	?>
			<?php echo "Sezione:&nbsp;".$row["_cat"]."&nbsp;";	?>&nbsp;&nbsp;Da: <?php echo $row["_user"]; ?></p>
			</div>
		</div>

prendo il testo tramite il database.

ti ringrazio aspetto tanto non ho fretta.

Buona giornata.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intendevo questo es. tu hai in $row['news']
nel mezzocamindi ecc...
tramite la funzione bbcode() la trasformi in
nel mezzo<b>camin</b>di ecc...
quello che volevo sapere come è la stringa tra [MORE e ]

[MORE=pinco.php?pallo=37] ?
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ciao
si circa, ma dovresti anche indicarmi come è messo il bbc
Esempio
-----------------
L'auto nuova e di colore...
[MORE]
L'auto nuova e di colore rossa.
[/MORE]

il testo che e sopra a [MORE] viene visualizzato e poi un per vedere tutto deve cliccare sul link "leggi tutto"

vorrei fare cosi.

hai delle idee?
grazie mille.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
forse una soluzione, penso però che tu debba fare una funzione in più e trattare [MORE] per conto suo
sono partito da presupposto che tu da una stringa tipo
[MORE]nel mezzo di camin[/MORE] di nostra vita mi ritrovai per una selva oscura
voglia ottenere
nel mezzo di camin... read more
quindi proverei così
PHP:
<?php
function bbcode_more($stringa, $id){
	$stringa=explode("[/MORE]",$stringa);
	$dopo = trim(str_replace($stringa[0], " <a href='index.php?m=news_view&id=$id'>read more</a>", $stringa[0]));  
	var_dump($stringa[0]);echo "<br>";
	$prima=str_replace("[MORE]","",$stringa[0]);
	//Ritorno il valore
    return $prima."... ".$dopo;
}
//***test*****
$row['id']="37";
$row['news']="[MORE]nel mezzo di camin[/MORE] di nostra vita mi ritrovai per una selva oscura";
echo "da db= ".$row['news']."<br />";
echo bbcode_more($row['news'], $row['id']);
?>

se non va bene posta, cerco di trovare un'altra soluzione
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ho provato e funziona anche con l'aggiunta del mio codice.

l'unico che ora nella pagina news_view . mi visualizza anche i [MORE] nel testo che scrivo.

esempio: index.php?m=news_view&id=2
La notizia di prova è
[MORE]Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque id adipiscing lacus. Nulla ornare lorem id metus dapibus consequat. In gravida lacus eget elit gravida a placerat magna placerat. Aliquam erat volutpat. Praesent nisi neque, vehicula ut sagittis eu, tristique sed nibh. Phasellus id quam eros, in tincidunt lectus. Mauris interdum ultricies neque, porttitor fermentum neque luctus eget.[/MORE]

con il codice bbcode($row["news"])
e l'altra parte da dove si visualizzano le notizie:
PHP:
<?php echo bbcode_more(bbcode($row['news']), $row['id']); ?>

idee?

grazie mille.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
hai ragione e forse ti conviene dividere ancora il problema.
immagino che ti abbia una pagina dove avrai l'elenco di tutte le news
pinco... read more
pallo... read more
ecc...
da questa tramite il link read more riinvii alla pagina index.php dove fai vedere tutta la news, giusto?
se è cosi:
nella pagina dove postri l'elenco prima tratti la stringa con la funzione function bbcode($string) poi con quella che ti ho postato function bbcode_more($stringa, $id)
cosi ottieni il link
nella pagina index.php, dove immagino che in funzione dell'id riestrai tutta la news, fai una funzione simile alla bbcode($string), chiamata es.
bbcode_completa($string) in cui aggiungi in fondo

PHP:
<?php
function bbcode_completa($string)
{
    //No HTML
    $string = trim(str_replace("<", "&lt;", $string));
    $string = trim(str_replace(">", "&gt;", $string));
    
    //CHR 13
    $string = trim(str_replace(chr(13), "<br>;", $string));
    $string = trim(str_replace(";", "", $string));
    
    //BBCODE
    $string = trim(str_replace("[B]", "<b>", $string)); 
	//ecc.........
	$string = trim(str_replace("[MORE]", "", $string));//qui togli i more (da mettere prima di replace ] )
	$string = trim(str_replace("[/MORE]", "", $string));
    $string = trim(str_replace("]", "'>", $string));
    
    //Ritorno il valore
    return $string;
}
//......
?>
questo se non ho capito male
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
dimenticavo se è giusto quanto detto nel post precedente
se non vuoi scrivere due voelte la funzione puoi modificarla così
PHP:
<?php
function bbcode($string;$dove_sono)
{
    $dove_sono=basename($_SERVER['PHP_SELF']);
	//No HTML
    $string = trim(str_replace("<", "&lt;", $string));
    $string = trim(str_replace(">", "&gt;", $string));
    
    //CHR 13
    $string = trim(str_replace(chr(13), "<br>;", $string));
    $string = trim(str_replace(";", "", $string));
    
    //BBCODE
    $string = trim(str_replace("[B]", "<b>", $string)); 
    //ecc.........
    if($dove_sono="index.php"){
		$string = trim(str_replace("[MORE]", "", $string));//qui togli i more (da mettere prima di replace ] )
    	$string = trim(str_replace("[/MORE]", "", $string));
	}
    $string = trim(str_replace("]", "'>", $string));
	
    //Ritorno il valore
    return $string;
}
//......
echo bbcode($riga['news'];basename($_SERVER['PHP_SELF']));
?>
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ho provato la prima soluzione creando un'altra funzione uguale alla prima ma matenendo uguali le cose e mettendo i replace ai more...

l'unico problema e che se scrivo un notizia senza usare il tag more .. viene da solo anche se non lo scritto il tag more..

idee?

grazie mille.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
l'unico problema e che se scrivo un notizia senza usare il tag more .. viene da solo anche se non lo scritto il tag more..
:confused:
cosa intendi?
se nel db hai
nel mezzo di camin di nosta vita
salta fuori
[MORE]nel mezzo di camin di nosta vita[/MORE]
cioè si attacca un MORE che non c'è?
guarda che non dovrebbe entrarci nulla la funzione/funzioni fatte in quanto sostituiscono (srt_replace) [MORE] con qualcos'altro, ma se non c'è mica l'aggiungono.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
no, viene solo i link che non ci deve stare nelle notizie senza il [more]

per il resto funziona... solo che quando inserisco alcune notizie senza nessun more mi viene visualizzata tutta la notizia in più i link.
come posso fare per non venire questa cosa?

grazie mille e buona giornata.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ho capito, se hai delle news senza [MORE].....[/MORE] ti viene comunque read more e tu non vuoi che venga.
stiu usando anche la funzione che avevo chiamato bbcode_more($stringa, $id)?
se si aggiungi
PHP:
<?php
function bbcode_more($stringa, $id){
    if(strpos("[/MORE]",$stringa)){//se non trovata FALSE
	$stringa=explode("[/MORE]",$stringa);
    $dopo = trim(str_replace($stringa[0], " <a href='index.php?m=news_view&id=$id'>read more</a>", $stringa[0]));  
    var_dump($stringa[0]);echo "<br>";
    $prima=str_replace("[MORE]","",$stringa[0]);
    //Ritorno il valore
    return $prima."... ".$dopo;
	}else{
		return "";//quindi non fccio il link
	}
}
//......
?>

p.s.
meglio cercare [/MORE] invece di [MORE] in quanto sicuramente [/MORE] non è all'inizio della stringa (pos =0) per cui si evita che comunque lo 0 venga interpretato come FALSE
 
Discussioni simili
Autore Titolo Forum Risposte Data
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
V [Visual Basic] Richiamare funzione su modulo per restituire list Visual Basic 0
C Creazione di una funzione per il filtraggio dei campi di un db Presentati al Forum 0
T [Javascript] funzione per attivare analytics... dov'è l'errore? Javascript 14
L [javascript]problema funzione per webapi Javascript 4
borgo italia una funzione per verificare l'invio di files Snippet PHP 0
A Funzione javascript per effettuare la slide del carosello in avanti Javascript 0
trattorino [PHP] funzione per visualizzare solo carattere PHP 2
N funzione autoplay video per browser mobili come ios e android Javascript 0
neo996sps Logica per funzione preventivi: sono sulla strada giusta? PHP 4
S Utilizzare la funzione postmessage per fare un redirect Javascript 0
L Funzione per API HTML5 Javascript 0
neo996sps [PHP e funzioni con PDO] Funzione per generare corpo tabella PHP 1
M [Datetimepicker]Richiamare funzione per più id uguali jQuery 4
otto9due Funzione per ridimensionare div in base alla risoluzione schermo.. Javascript 5
G Funzione che resta in ascolto per una chiamata esterna Javascript 1
T [MYSQL] Richieste in Java per funzione Ajax MySQL 0
B Funzione per ottenere una determinata stringa PHP 4
ivarello Due Pulsanti con per lanciare funzione Javascript 0
L Funzione per verificare distanza di tempo non funziona: perchè? PHP 4
Z MailChimp: funzione per invio coupon personalizzati ed unici Email Marketing 2
T Funzione per redirect versione mobile: escludere i tablet Javascript 1
N [risolto] Funzione per calcolo età PHP 4
L funzione per nascondere username PHP 5
A funzione per popolare un drop down list Javascript 4
A Funzione unica per prendere e recuperare valori Javascript 0
P Funzione truncate per testo Javascript 3
E ordinamento array multidimensionale per un valore ottenuto tramite una funzione PHP 1
A Funzione per modificare foto PHP 2
P funzione per safari PHP 0
Sevenjeak Aiuto miglioramento funzione per inserimento BBCode in textarea Javascript 1
D Problema con funzione preg_match() per controllo email PHP 2
L Funzione per inserire solo testo PHP 13
H Funzione onmouseover per mostrare un box con un link da cliccare? Javascript 3
G Funzione per spedire email a destinatari diversi PHP 0
Monital Modificare una funzione per creazione tabella html PHP 15
L funzione per ruoli.. PHP 11
G funzione javascript per passaggio valori Javascript 1
emanuelevt funzione per entità html e classe PHP 1
asevenx problema con funzione per far apparire e scomparire un form di commenti PHP 1
M jQuery: funzione substr o substring per tagliare un testo? jQuery 1
M JavaScript: lanciare funzione ASP per salvare dati in database Javascript 0
J Funzione RICERCA per rubrica telefonica PHP 1
P SCript per la funzione condividi Ajax 1
T funzione cerca per il mio sito PHP 4
G Errore funzione per form PHP 2
O problemi con funzione per stampare tendina per data PHP 6
V [JQuery] Aiuto per funzione Ajax jQuery 0
P Funzione "http_build_query" per PHP4 PHP 0
G [javascript]Chiamare funzione javascript per menù Javascript 2

Discussioni simili