phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

Visualizzare elementi phpbb su pagine esterne. Come?

Supporto MODs generale.
Avatar utente
oltrecomics
Utente
Utente
Messaggi: 73
Iscritto il: 08/10/2011, 16:24
Versione: 3.0.9
Server: UNIX/Linux

Re: Come posso visualizzare gli ultimi topic su pagine ester

Messaggio da oltrecomics » 07/11/2011, 0:03

Ok sembra che vada tutto bene, per quanto riguarda li vari riquadri.
Questa è la query:

Codice: Seleziona tutto

<?php

//---------- 5 Interviste news -----------//

$sql = "SELECT pt.post_id, pt.topic_id, pt.forum_id, pt.post_subject, pt.post_time, pt.poster_id, tt.topic_poster,
    tt.topic_id, tt.topic_title, tt.topic_last_post_time, tt.topic_desc,
    ut.user_id, ut.username,
    ft.forum_id, ft.forum_name
    FROM " . POSTS_TABLE . " pt, " . TOPICS_TABLE . " tt, " . FORUMS_TABLE . " ft, " . USERS_TABLE . " ut
    WHERE pt.poster_id = ut.user_id
    AND pt.forum_id = ft.forum_id
    AND tt.forum_id = '22'
    AND tt.topic_id = pt.topic_id
    ORDER BY tt.topic_last_post_time DESC LIMIT 0,20";
$result = $db->sql_query($sql);
    $n = 0 ;
    $lista_topics = '' ;
    while ($row = $db->sql_fetchrow($result))
    {
        if ($auth->acl_get('f_read', $row['forum_id']) == 1)
        {
              if( strpos($lista_topics, $row['topic_id']) == '0' AND $n < 5 )
            {
           if (strlen($row['topic_title']) > 28)
           {
          $post_title0 = substr($row['topic_title'],0,27) . "...";
           }else{
          $post_title0 = $row['topic_title'];
           }
            // accorcia la descrizione del topic
if (strlen($row['topic_desc']) > 38)
{
$topic_desc0 = substr($row['topic_desc'],0,34) . "...";
}else{
$topic_desc0 = $row['topic_desc'];
}                                   
        // $last_post_link[$n4]      = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row4['forum_id'] . "&t=" . $row4['topic_id'] . "#p" . $row4['post_id']);
                $last_post_title[$n]       = $row['topic_title'];
                $last_post_title_short[$n]   = $post_title0;
//                $last_post_forum_1[$n1]       = $row1['forum_name'];
                $last_post_author[$n]      = $row['username'];
                $lista_topics .= "," . $row['topic_id'] ;
                $topic_id[$n] = $row['topic_id'] ;
                $post_id[$n] = $row['post_id'];
                $forum_id[$n] = $row['forum_id'];
                $post_image[$n] =  my_img($row['post_id']);
                $avatar_author[$n] =  user_avatar($row['user_id'], '20', '20') ;
                $topic_date[$n] = $user->format_date($row['topic_last_post_time']);
                $topic_desc[$n] = $row['topic_desc']; 
                $desc_short[$n] = $topic_desc0;
                ++$n ;
            }
        }
    }
//---------- 5 Interviste news end -----------//
?>
E questo è il codice messo in homepage:

Codice: Seleziona tutto

<?php
// Lista degli ultimi topics
for ($y = '0';$y < $n;++$y)
{
echo "<li class='row'>
<dl class='icon'>
<dt><a href=http://www.oltrecomics.com/forum/viewtopic.php?f=" . $forum_id[$y] . "&t=" . $topic_id[$y] . "#p" . $post_id[$y] . "><img src=" . $post_image[$y] . " width='40' height='60' alt='' /></a></dt>
<dd class='lastpost'><span><a href=http://www.oltrecomics.com/forum/viewtopic.php?f=" . $forum_id[$y] . "&t=" . $topic_id[$y] . "#p" . $post_id[$y] . ">" . $last_post_title_short[$y] . "</a><br>" . $desc_short[$y] . "<br>" . $topic_date[$y] . "<br>" . $avatar_author[$y] . " by: (" . $last_post_author[$y] . ")</span></dd></dl></li>" ;
}
?>


C'è solo un problema con jcarousel: i vari post di un topic fortunatamente non vengono visualizzati, ma disgraziatamente lasciano uno spazio bianco :(
Su firebug si presenta in questo modo:

Codice: Seleziona tutto

<li class="jcarousel-item jcarousel-item-horizontal jcarousel-item-6 jcarousel-item-6-horizontal" style="float: left; list-style: none outside none;" jcarouselindex="6"><a href="http://www.oltrecomics.com/forum/viewtopic.php?t=80#p170"><img height="150" alt="" src="width='80'"></a><br></li>
Ora dico una caz...ta...
E' possibile mettere il condizionale IF in questo codice:

Codice: Seleziona tutto

<?php
for ($y = '0';$y < $n5;++$y)
{
echo "<li><a href=http://www.oltrecomics.com/forum/viewtopic.php?t=" . $topic_id_5[$y] . "#p" . $post_id_5[$y] . "><img src=" . $post_image_5[$y] . " width='80' height='150' alt='' /></a><br></li>";       
}
?>
Cioè se l'immagine esiste visualizzala altrimenti non inserire nulla :o

Avatar utente
oltrecomics
Utente
Utente
Messaggi: 73
Iscritto il: 08/10/2011, 16:24
Versione: 3.0.9
Server: UNIX/Linux

Re: Come posso visualizzare gli ultimi topic su pagine ester

Messaggio da oltrecomics » 07/11/2011, 3:45

Risolto :)
Grazie di tutto!

Quando hai tempo e voglia, potresti aiutarmi ad inserire il contenuto del primo post di un topic?
Purtroppo ho provato a capire qualcosa su "generate_text_for_display" ma...sigh

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Come posso visualizzare gli ultimi topic su pagine ester

Messaggio da Micogian » 07/11/2011, 9:55

Quale Topic ? L'ultimo in generale o l'ultimo di un determinato Forum ?
Questo è quello che ho usato io per visualizzare un Topic a forma di scheda, da un lato il testo del primo post e dall'altra le immagini di tutti i posts correlati: http://www.actaplantarum.org/floraitali ... hp?t=11138

Per il testo del post, si potrebbe utilizzare il valore dell'ultimo $topic_id per ricavare il testo del post (nell'esempio la ricerca avviene nel forum_id=95 ma potrebbe anche venire tolto):

Codice: Seleziona tutto

$sql = 'SELECT p.*, t.*
    FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t
    WHERE t.topic_id = ' . $topic_id . '
    AND t.topic_id = p.topic_id
    AND t.forum_id = 95
    ORDER BY p.post_id LIMIT 1';

    $result = $db->sql_query($sql);
    while ($row = $db->sql_fetchrow($result))
    {
    $topic_title_cor = $row['topic_title'];
    $message_cor = censor_text($row['post_text']);
    $bbcode_options = (($row['enable_bbcode']) ? OPTION_FLAG_BBCODE : 0) + (($row['enable_smilies']) ? OPTION_FLAG_SMILIES : 0) + (($row['enable_magic_url']) ? OPTION_FLAG_LINKS : 0);
    $message_cor = generate_text_for_display($message_cor, $row['bbcode_uid'], $row['bbcode_bitfield'], $bbcode_options);

    $template->assign_var('MESSAGE', $message_cor);    
}
La riga finale $template->assign_var('MESSAGE', $message_cor); serve per il template phpbb, in un file php è già disponibile il testo sotto forma della variabile $message_cor.

Avatar utente
oltrecomics
Utente
Utente
Messaggi: 73
Iscritto il: 08/10/2011, 16:24
Versione: 3.0.9
Server: UNIX/Linux

Re: Come posso visualizzare gli ultimi topic su pagine ester

Messaggio da oltrecomics » 08/11/2011, 22:27

Ciao, più o meno comincio a capire le query e le function, ma quello che devo mettere in homepage, no :(
ho provato a inserire il codice nella home, ma non visualizza nulla.
Questa è la query modificata per non andare in contrasto con le altre...manca qualcosa, vero?

Codice: Seleziona tutto

//---------- Articolo Home-----------//
    $sql6 = "SELECT p.*, t.*
        FROM " . POSTS_TABLE . " p, " . TOPICS_TABLE . " t
        WHERE t.topic_id = ' . $topic_id . '
        AND t.topic_id = p.topic_id
        AND t.forum_id = '3'
        ORDER BY p.post_id LIMIT 1";

        $result6 = $db->sql_query($sql6);
        while ($row6 = $db->sql_fetchrow($result6))
        {
        $topic_title_cor_6 = $row6['topic_title'];
        $message_cor_6 = censor_text($row6['post_text']);
        $bbcode_options_6 = (($row6['enable_bbcode']) ? OPTION_FLAG_BBCODE : 0) + (($row6['enable_smilies']) ? OPTION_FLAG_SMILIES : 0) + (($row6['enable_magic_url']) ? OPTION_FLAG_LINKS : 0);
        $message_cor_6 = generate_text_for_display($message_cor, $row6['bbcode_uid'], $row6['bbcode_bitfield'], $bbcode_options);

        $template->assign_var('MESSAGE', $message_cor);    
    }         
Questo è il codice che ho inserito in home, che sicuramente non c'azzecca nulla

Codice: Seleziona tutto

<?php
// Lista degli ultimi topics
for ($y = '0';$y < $n6;++$y)
{
echo "<div>" . $topic_title_cor_6[$y] . "</div>
      <div>" . $message_cor_6[$y] . "</div>
      <div>" . $bbcode_options_6[$y] . "</div>
      <div>" . $message_cor_6[$y] . "</div>";
}
?>

Avatar utente
oltrecomics
Utente
Utente
Messaggi: 73
Iscritto il: 08/10/2011, 16:24
Versione: 3.0.9
Server: UNIX/Linux

Re: Come posso visualizzare gli ultimi topic su pagine ester

Messaggio da oltrecomics » 11/11/2011, 21:07

Risolto :)

Avatar utente
oltrecomics
Utente
Utente
Messaggi: 73
Iscritto il: 08/10/2011, 16:24
Versione: 3.0.9
Server: UNIX/Linux

Re: Come posso visualizzare gli ultimi topic su pagine ester

Messaggio da oltrecomics » 13/11/2011, 23:39

Vorrei risolvere la faccenda del bbcode "img" e quello creato da me "lightbox".
Allora...
Problema 1:
La funzione che mi ha fornito bingo è ottima, ma c'è un limite per quanto riguarda le dimensioni (lightbox=250), poichè esse variano in base alle impostazioni dell'utente.
Esiste una soluzione? Non si può utilizzare "(.*?)" anche per le dimensioni?

Codice: Seleziona tutto

    // Lightybox di bingo
   function my_lightbox($post) // trova l'url del bbcode lightbox presente nel testo del post_id selezionato
    {
    global $db ;
    $sql = "SELECT post_id, post_text, bbcode_uid
        FROM " . POSTS_TABLE . "
        WHERE post_id = " . $post ;
        $result = $db->sql_query($sql);
    $row = $db->sql_fetchrow($result);
            $post_text_cor = $row['post_text'];
            $bbcode_uid_cor = $row['bbcode_uid'];
            $pattern_cor = "#\[lightbox=250:".$bbcode_uid_cor ."\](.*?)\[/lightbox:" . $bbcode_uid_cor ."\]#i";  
            preg_match($pattern_cor,$post_text_cor,$matches); 
            $bbcode_lightbox = isset($matches[1]) ? $matches[1] : '';

        return $bbcode_lightbox ;
    }
Problema 2
In homepage vorrei mettere il condizionale if, ovvero:
"se è presente il bbcode img (come prima immagine) visualizzalo,
se invece c'è il bbcode lightbox (come prima immagine) visualizza questo,
altrimenti lascia vuoto".

Il codice della home è questo:

Codice: Seleziona tutto

<?php
for ($y = '0';$y < $n5;++$y)
{
// Comics Commerciali news
echo "<li class='row'>
		<dl class='icon'>
      <dt><a href=" . $last_post_link_5[$y] . "><img src=" . $post_image_5[$y] . " width='40' height='60' alt='' /></a></dt>			
			<dd class='lastpost'>
       <span><a href=http://www.oltrecomics.com/forum/viewtopic.php?f=" . $forum_id_5[$y] . "&t=" . $topic_id_5[$y] . "#p" . $topic_last_post_id_5[$y] . ">" . $last_post_title_short_5[$y] . "</a><br>" . $desc_short_5[$y] . "<br>" . $topic_date_5[$y] . "<br>" . $last_post_forum_5[$y] . "<br>" . $avatar_author_5[$y] . " By: (" . $last_post_author_5[$y] . ")</span></dd></dl></li>";       
   }
?>
Dato che non ci capisco un'acca di php ho formulato questo codice per dare un'idea di quello che vorrei:

Codice: Seleziona tutto

<?php
for ($y = '0';$y < $n5;++$y)
{
// Comics Commerciali news
echo "<li class='row'>
		<dl class='icon'>
      <dt>";
if ("<a href=" . $last_post_link_5[$y] . "><img src=" . $post_image_5[$y] . " width='40' height='60' alt='' /></a>" != "")
{ 
echo "<a href=" . $last_post_link_5[$y] . "><img src=" . $post_image_5[$y] . " width='40' height='60' alt='' /></a>";
} 
else
{
   echo "<a href=" . $last_post_link_5[$y] . "><img src=" . $post_lightbox_5[$y] . " width='40' height='60' alt='' /></a>";
} 
else  
{
   echo "";
}		
echo "</dt><dd class='lastpost'>
      <span><a href=http://www.oltrecomics.com/forum/viewtopic.php?f=" . $forum_id_5[$y] . "&t=" . $topic_id_5[$y] . "#p" . $topic_last_post_id_5[$y] . ">" . $last_post_title_short_5[$y] . "</a><br>" . $desc_short_5[$y] . "<br>" . $topic_date_5[$y] . "<br>" . $last_post_forum_5[$y] . "<br>" . $avatar_author_5[$y] . " By: " . $last_post_author_5[$y] . "</span></dd></dl></li>";       
   }
?>

Avatar utente
oltrecomics
Utente
Utente
Messaggi: 73
Iscritto il: 08/10/2011, 16:24
Versione: 3.0.9
Server: UNIX/Linux

Re: Come posso visualizzare gli ultimi topic su pagine ester

Messaggio da oltrecomics » 24/11/2011, 16:55

Per favore datemi una mano :(
Ho la seguente query che ho usato per il carousel in homepage (www.oltrecomics.com):

Codice: Seleziona tutto

$sql5 = "SELECT pt.post_id, pt.topic_id, pt.forum_id, pt.post_subject, pt.post_time, pt.poster_id, tt.topic_poster,
    tt.topic_id, tt.topic_title, tt.topic_last_post_time, tt.topic_desc,
    ut.user_id, ut.username,
    ft.forum_id, ft.forum_name
    FROM " . POSTS_TABLE . " pt, " . TOPICS_TABLE . " tt, " . FORUMS_TABLE . " ft, " . USERS_TABLE . " ut
    WHERE pt.poster_id = ut.user_id
    AND pt.forum_id = ft.forum_id
    AND tt.forum_id IN (6, 7, 12)
    AND tt.topic_id = pt.topic_id
    ORDER BY tt.topic_last_post_time DESC LIMIT 0,50";
$result5 = $db->sql_query($sql5);
    $n5 = 0 ;
    $lista_topics = '' ;
    while ($row5 = $db->sql_fetchrow($result5))
    {
        if ($auth->acl_get('f_read', $row5['forum_id']) == 1)
        {
              if( strpos($lista_topics, $row5['topic_id']) == '0' AND $n5 < 20 )
            {
           if (strlen($row5['topic_title']) > 51)
           {
          $post_title5 = substr($row5['topic_title'],0,50) . "...";
           }else{
          $post_title5 = $row5['topic_title'];
           }
            // accorcia la descrizione del topic
if (strlen($row5['topic_desc']) > 38)
{
$topic_desc5 = substr($row5['topic_desc'],0,34) . "...";
}else{
$topic_desc5 = $row5['topic_desc'];
}                                   
                $last_post_link_5[$n5]      = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row5['forum_id'] . "&t=" . $row5['topic_id'] . "#p" . $row5['post_id']);
                $post_image_5[$n5] =  my_img($row5['post_id']);
                $lista_topics .= "," . $row5['topic_id'] ;       
                ++$n5 ;
            }
        }
    }
E questo è il codice che ho messo nella homepage:

Codice: Seleziona tutto

<?php
for ($y = '0';$y < $n5;++$y)
{
echo "<li id='carosello_immagine'><a href= " .  $last_post_link_5[$y] . "><img src=" . $post_image_5[$y] . " width='' height='' alt='' /></a><br></li>";       
}
?>
Fino a ieri funzionava perfettamente, anche aggiornando i topic con altri post, le immagini venivano visualizzate. Oggi alcune immagini non vengono più mostrate...come mai?

Ho usato la stessa query anche in questa pagina:
http://www.oltrecomics.com/comics_shop.php (nel riquadro Comics e Manga Commerciali News).
che stranamente funziona, anche aggiornando più volte i vari topic.

Avatar utente
oltrecomics
Utente
Utente
Messaggi: 73
Iscritto il: 08/10/2011, 16:24
Versione: 3.0.9
Server: UNIX/Linux

Re: Visualizzare elementi phpbb su pagine esterne. Come?

Messaggio da oltrecomics » 26/11/2011, 17:06

C'è nessuno che può darmi una mano? :shock:

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Visualizzare elementi phpbb su pagine esterne. Come?

Messaggio da Micogian » 26/11/2011, 18:12

Questo lo puoi vedere solo tu andando a controllare qual'è il testo del post che viene memorizzato nel database.
Sembra che il link relativo all'immagine sia vuoto, dipende dal testo e dalla funzione che estrae il link.
Dall'esterno possiamo fare solo ipotesi.

EDIT. non visualizza l'immagine perchè il link non si riferisce al primo post ma a un post successivo che non ha immagini. Basta guardare l'url.
Credo che dipenda dalle Emoticons che sono sempre dei bbcode [img].

Avatar utente
oltrecomics
Utente
Utente
Messaggi: 73
Iscritto il: 08/10/2011, 16:24
Versione: 3.0.9
Server: UNIX/Linux

Re: Visualizzare elementi phpbb su pagine esterne. Come?

Messaggio da oltrecomics » 27/11/2011, 14:01

Ciao Micogian,
la funzione è quella che mi hai fornito nei precedenti post

Codice: Seleziona tutto

// Immagini
function my_img($post) // trova l'url del bbcode presente nel testo del post_id selezionato
{
global $db ;
$sql = "SELECT post_id, post_text, bbcode_uid
    FROM " . POSTS_TABLE . " 
    WHERE post_id = " . $post ;
    $result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
        $post_text_cor = $row['post_text'];
        $bbcode_uid_cor = $row['bbcode_uid'];
        $pattern_cor = "#\[img:".$bbcode_uid_cor ."\](.*?)\[/img:" . $bbcode_uid_cor ."\]#i";
        preg_match($pattern_cor,$post_text_cor,$matches);  
        $bbcode_img = isset($matches[1]) ? $matches[1] : ''; 

    return $bbcode_img ;

}
Mi avevi anche detto che questa funzione prendeva la prima immagine del primo post e non di quelli successivi. Così è stato fino a poco tempo fa.
Quando ho inserito un nuovo post in alcuni topic, alcuni continuavano a mostrare l'immagine iniziale altri no.

Prova a cliccare sulla prima immagine mancante (partendo da sinistra è la seconda, dovrebbe reinderizzarti a las lindas), che sulla successiva (omega); come vedi in tutte e due sono stati aggiunti dei post, ma il risultato sul jcarousel è diverso.

Ora provo a controllare cosa viene memorizzato nel database...in quale tabella devo andare a vedere?

Rispondi

Torna a “Supporto MODs”

Chi c’è in linea

Visitano il forum: Nessuno e 48 ospiti