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

Topten Topics

Forum contenente i topic di tutte le MODs rilasciate nel nostro forum.
Possono essere scaricate anche tramite phpBBItalia.net Downloader.
metal master
Utente
Utente
Messaggi: 122
Iscritto il: 28/12/2010, 10:58
Sesso: Maschio
Versione: 3.1.3
Server: UNIX/Linux
PHP: 5.5.25
Database: MySQL(i) 5.5.43-37.2

Re: Topten Topics

Messaggio da metal master » 08/09/2011, 10:33

ok,provato e sembra funzionare,ho modificato le percentuali e tolto l'autore del topic.
ultima cosa: come fare per includere anche gli annunci e gli importanti oltre ai topic normali?

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: Topten Topics

Messaggio da Micogian » 08/09/2011, 11:34

Secondo me in una Lista dei Post l'autore del topic e l'autore dell'ultimo messaggio poteva starci ma poi ognuno fa come crede.
Il tipo di topic è dato dal campo "type" (0, 1, 2, 3), se li vuoi visualizzare tutti devi togliere il riferimento al type, al posto di:

Codice: Seleziona tutto

WHERE tt.topic_type = 0
    AND tt.topic_moved_id = 0
.....
usi:

Codice: Seleziona tutto

WHERE tt.topic_moved_id = 0
.....
Se vuoi escludere un type (ad esempio il 3)

Codice: Seleziona tutto

WHERE tt.topic_type <> 3
    AND tt.topic_moved_id = 0
.....
Un altro modo per includere alcuni type è

Codice: Seleziona tutto

WHERE tt.topic_type IN(0,1,2)
    AND tt.topic_moved_id = 0
.....

metal master
Utente
Utente
Messaggi: 122
Iscritto il: 28/12/2010, 10:58
Sesso: Maschio
Versione: 3.1.3
Server: UNIX/Linux
PHP: 5.5.25
Database: MySQL(i) 5.5.43-37.2

Re: Topten Topics

Messaggio da metal master » 08/09/2011, 12:10

tutto ok bingo,sempre precise e chiare le tue spiegazioni ;)
Sta mod che hai creato e' di grande utilita' per il forum che utilizzo,molti infatti sono gli utenti pigri che preferiscono visualizzare le ultime risposte e i topic direttamente dalla tabella invece di entrare nei singoli forum.

metal master
Utente
Utente
Messaggi: 122
Iscritto il: 28/12/2010, 10:58
Sesso: Maschio
Versione: 3.1.3
Server: UNIX/Linux
PHP: 5.5.25
Database: MySQL(i) 5.5.43-37.2

Re: Topten Topics

Messaggio da metal master » 15/09/2011, 21:39

bingo volevo chiederti un altra cosa: se vorrei creare o inserire in quella tabella che ho creato nella parte alta del mio sito(Fantacalcio SoloNapoliFans) gli ultimi 5 topics della sezione fantacalcio,come posso fare?

in poche parole vorrei creare un altra tabella con gli ultimi 5 topics di una sola sezione del forum

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: Topten Topics

Messaggio da Micogian » 15/09/2011, 22:03

Se guardiamo il meccanismo che consente di estrarre i Topics la cosa è semplice: da un lato il file php ha lo scopo di interrogare il database con una query, di creare una serie di variabili che il template provvede a visualizzare.
Nella Topten Topics ci sono 3 query, una per estrarre gli ultimi topics, una per i topics più visti e una per gli ultimi posts.
Basta crearne un'altra per estrarre gli ultimi topics di un determinato Forum, creare le variabili che il template provvederà a visuaolizzare come e dove vogliamo.
In pratica un'altra query.

metal master
Utente
Utente
Messaggi: 122
Iscritto il: 28/12/2010, 10:58
Sesso: Maschio
Versione: 3.1.3
Server: UNIX/Linux
PHP: 5.5.25
Database: MySQL(i) 5.5.43-37.2

Re: Topten Topics

Messaggio da metal master » 15/09/2011, 23:21

bingo ha scritto:Se guardiamo il meccanismo che consente di estrarre i Topics la cosa è semplice: da un lato il file php ha lo scopo di interrogare il database con una query, di creare una serie di variabili che il template provvede a visualizzare.
Nella Topten Topics ci sono 3 query, una per estrarre gli ultimi topics, una per i topics più visti e una per gli ultimi posts.
Basta crearne un'altra per estrarre gli ultimi topics di un determinato Forum, creare le variabili che il template provvederà a visuaolizzare come e dove vogliamo.
In pratica un'altra query.

quindi mettiamo che io voglio usare questo file php per i soli ultimi 5 post,e solo per il forum con id32,come devo modificarlo?

Codice: Seleziona tutto

    <?php
    // MOD Topten Topics : Topics più recenti, Topics più visti e Posts più recenti
    // created by Micogian (Bingo)
    if (!defined('IN_PHPBB'))
    {
       exit;
    }
    // configurazione: numero dei recods da visualizzare nella Lista
    $list_rec = 30 ;   // numero di records da estrarre dalla tabella (alcuni topics potrebbero non aver il permesso di lettura)
    $list_view = 5 ;  // sostituire il numero della variabile $lista se si desidera diminuire/aumentare il numero dei Topics

    //---------- 10 Ultimi posts start -----------//
    $sql = "SELECT tt.topic_id, tt.forum_id, tt.topic_moved_id, tt.topic_last_post_id, tt.topic_last_poster_id, tt.topic_last_poster_name, tt.topic_last_poster_colour,
       tt.topic_last_post_subject, tt.topic_last_post_time, tt.topic_replies, tt.topic_views, tt.topic_poster, tt.topic_first_poster_name, tt.topic_first_poster_colour,
        ft.forum_id, ft.forum_name
        FROM " . TOPICS_TABLE . " tt, " . FORUMS_TABLE . " ft
        WHERE tt.topic_type = 0
        AND tt.topic_moved_id = 0
        AND tt.forum_id = ft.forum_id
        ORDER BY tt.topic_last_post_time DESC LIMIT 0,$list_rec";
    $result = $db->sql_query($sql);
        $n = 0;
        while ($row = $db->sql_fetchrow($result))
        {
              if ($auth->acl_get('f_read', $row['forum_id']) == 1)
            {
                if ($n < $list_view)
             {
                // accorcia il titolo se troppo lungo
                $post_subject = str_replace("Re: ", "", $row['topic_last_post_subject']) ;
                if (strlen($post_subject) > 28)
                {
                $post_title = substr($post_subject,0,25) . "...";
                }else{
                $post_title = $post_subject ;
                }
                // accorcia il nome del Forum se troppo lungo
                $forum_title = $row['forum_name'];
                if (strlen($forum_title) > 28)
                {
                $forum_name_short = substr($forum_title,0,25) . "...";
                }else{
                $forum_name_short = $forum_title ;
                }
             $last_post_link[$n]                = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row['forum_id'] . "&t=" . $row['topic_id'] . "&p=" . $row['topic_last_post_id'] . "#p" . $row['topic_last_post_id']);
             $last_post_title[$n]             = $row['topic_last_post_subject'];
             $last_post_title_short[$n]          = $post_title;
             $last_post_forum_id[$n]           = $row['forum_id'];
             $last_post_forum_name[$n]           = $row['forum_name'];
             $last_post_forum_name_short[$n]     = $forum_name_short ;
             $last_post_first_poster_full[$n]    = get_username_string('full', $row['topic_poster'], $row['topic_first_poster_name'], $row['topic_first_poster_colour']);
             $last_post_last_poster_full[$n]    = get_username_string('full', $row['topic_last_poster_id'], $row['topic_last_poster_name'], $row['topic_last_poster_colour']);
             $last_post_replies[$n]            = $row['topic_replies'];
             $last_post_views[$n]                = $row['topic_views'];
             $last_post_time[$n]                = $user->format_date($row['topic_last_post_time']);
             //echo $last_post_title_short[$n] . "<br />";
             ++$n ;             
             }else{
             break ;
             }
            }
        }
    //---------- 10 Ultimi posts end -----------//

    // Crea l'array "lastpost_list" che contiene le Variabili per il Template
    for ($x = 0; $x < $list_view; ++$x)
    {
    $template->assign_block_vars('lastpost_list',array(
       'LAST_POST_LINK'            => $last_post_link[$x],
       'LAST_POST_TITLE'            => $last_post_title[$x],
       'LAST_POST_TITLE_SHORT'         => $last_post_title_short[$x],
       'LAST_POST_FORUM_ID'         => $last_post_forum_id[$x],
       'LAST_POST_FORUM_NAME'         => $last_post_forum_name[$x],
       'LAST_POST_FORUM_NAME_SHORT'   => $last_post_forum_name_short[$x],
       'LAST_POST_FIRST_POSTER_FULL'   => $last_post_first_poster_full[$x],
       'LAST_POST_LAST_POSTER_FULL'   => $last_post_last_poster_full[$x],
       'LAST_POST_REPLIES'            => $last_post_replies[$x],
       'LAST_POST_VIEWS'            => $last_post_views[$x],
       'LAST_POST_TIME'            => $last_post_time[$x],
       ));
    }
    ?>
tipo lo chiamo mod_last_post2.php,una volta creato poi dove devo inserire la variabile?

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: Topten Topics

Messaggio da Micogian » 16/09/2011, 0:09

Basta indicare dove (WHERE) cercare, in questo caso nel forum_id=32.
La riga

Codice: Seleziona tutto

WHERE tt.topic_type = 0
diventa

Codice: Seleziona tutto

WHERE tt.forum_id = 32
AND tt.topic_type = 0
La query può stare nello stesso file, l'unica cosa che deve cambiare è il nome dell'array che contiene le Variabili, le variabili possono rimanere con lo stesso nome ma deve cambiare il nome dell'array, potrebbe essere:

Codice: Seleziona tutto

$template->assign_block_vars('lastpost_32',array(
ma potrebbe anche chiamarsi "pippo".
Nel template i valori saranno {lastpost_32.NOME_VARIABILE} o, se si usa il nome "pippo": {pippo.NOME_VARIABILE}..

metal master
Utente
Utente
Messaggi: 122
Iscritto il: 28/12/2010, 10:58
Sesso: Maschio
Versione: 3.1.3
Server: UNIX/Linux
PHP: 5.5.25
Database: MySQL(i) 5.5.43-37.2

Re: Topten Topics

Messaggio da metal master » 16/09/2011, 1:04

Allora ricapitolando

Ho creato questo file mod_lastpost32.php

Codice: Seleziona tutto

<?php
    // MOD Topten Topics : Topics più recenti, Topics più visti e Posts più recenti
    // created by Micogian (Bingo)
    if (!defined('IN_PHPBB'))
    {
       exit;
    }
    // configurazione: numero dei recods da visualizzare nella Lista
    $list_rec = 30 ;   // numero di records da estrarre dalla tabella (alcuni topics potrebbero non aver il permesso di lettura)
    $list_view = 5 ;  // sostituire il numero della variabile $lista se si desidera diminuire/aumentare il numero dei Topics

    //---------- 10 Ultimi posts start -----------//
    $sql = "SELECT tt.topic_id, tt.forum_id, tt.topic_moved_id, tt.topic_last_post_id, tt.topic_last_poster_id, tt.topic_last_poster_name, tt.topic_last_poster_colour,
       tt.topic_last_post_subject, tt.topic_last_post_time, tt.topic_replies, tt.topic_views, tt.topic_poster, tt.topic_first_poster_name, tt.topic_first_poster_colour,
        ft.forum_id, ft.forum_name
        FROM " . TOPICS_TABLE . " tt, " . FORUMS_TABLE . " ft
        WHERE tt.forum_id = 32
        AND tt.topic_type = 0
        AND tt.forum_id = ft.forum_id
        ORDER BY tt.topic_last_post_time DESC LIMIT 0,$list_rec";
    $result = $db->sql_query($sql);
        $n = 0;
        while ($row = $db->sql_fetchrow($result))
        {
              if ($auth->acl_get('f_read', $row['forum_id']) == 1)
            {
                if ($n < $list_view)
             {
                // accorcia il titolo se troppo lungo
                $post_subject = str_replace("Re: ", "", $row['topic_last_post_subject']) ;
                if (strlen($post_subject) > 60)
                {
                $post_title = substr($post_subject,0,57) . "...";
                }else{
                $post_title = $post_subject ;
                }
                // accorcia il nome del Forum se troppo lungo
                $forum_title = $row['forum_name'];
                if (strlen($forum_title) > 28)
                {
                $forum_name_short = substr($forum_title,0,25) . "...";
                }else{
                $forum_name_short = $forum_title ;
                }
             $last_post_link[$n]                = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row['forum_id'] . "&t=" . $row['topic_id'] . "&p=" . $row['topic_last_post_id'] . "#p" . $row['topic_last_post_id']);
             $last_post_title[$n]             = $row['topic_last_post_subject'];
             $last_post_title_short[$n]          = $post_title;
             $last_post_forum_id[$n]           = $row['forum_id'];
             $last_post_forum_name[$n]           = $row['forum_name'];
             $last_post_forum_name_short[$n]     = $forum_name_short ;
             $last_post_last_poster_full[$n]    = get_username_string('full', $row['topic_last_poster_id'], $row['topic_last_poster_name'], $row['topic_last_poster_colour']);
             $last_post_replies[$n]            = $row['topic_replies'];
             $last_post_views[$n]                = $row['topic_views'];
             $last_post_time[$n]                = $user->format_date($row['topic_last_post_time']);
             //echo $last_post_title_short[$n] . "<br />";
             ++$n ;             
             }else{
             break ;
             }
            }
        }
    //---------- 10 Ultimi posts end -----------//

    // Crea l'array "lastpost_list" che contiene le Variabili per il Template
    for ($x = 0; $x < $list_view; ++$x)
    {
    $template->assign_block_vars('lastpost_list',array(
       'LAST_POST_LINK'            => $last_post_link[$x],
       'LAST_POST_TITLE'            => $last_post_title[$x],
       'LAST_POST_TITLE_SHORT'         => $last_post_title_short[$x],
       'LAST_POST_FORUM_ID'         => $last_post_forum_id[$x],
       'LAST_POST_FORUM_NAME'         => $last_post_forum_name[$x],
       'LAST_POST_FORUM_NAME_SHORT'   => $last_post_forum_name_short[$x],
       'LAST_POST_LAST_POSTER_FULL'   => $last_post_last_poster_full[$x],
       'LAST_POST_REPLIES'            => $last_post_replies[$x],
       'LAST_POST_VIEWS'            => $last_post_views[$x],
       'LAST_POST_TIME'            => $last_post_time[$x],
       ));
    }
?>
in index.php devo aggiungere sopra all'altro include questo?
include($phpbb_root_path . 'mod_lastpost32.' . $phpEx);

mentre qui nel file php come devo modificare?

Codice: Seleziona tutto

// Crea l'array "lastpost_list" che contiene le Variabili per il Template
    for ($x = 0; $x < $list_view; ++$x)
    {
    $template->assign_block_vars('lastpost_list',array(
       'LAST_POST_LINK'            => $last_post_link[$x],
       'LAST_POST_TITLE'            => $last_post_title[$x],
       'LAST_POST_TITLE_SHORT'         => $last_post_title_short[$x],
       'LAST_POST_FORUM_ID'         => $last_post_forum_id[$x],
       'LAST_POST_FORUM_NAME'         => $last_post_forum_name[$x],
       'LAST_POST_FORUM_NAME_SHORT'   => $last_post_forum_name_short[$x],
       'LAST_POST_LAST_POSTER_FULL'   => $last_post_last_poster_full[$x],
       'LAST_POST_REPLIES'            => $last_post_replies[$x],
       'LAST_POST_VIEWS'            => $last_post_views[$x],
       'LAST_POST_TIME'            => $last_post_time[$x],
       ));
    }
?>
infine visto che la tabella dovrebbe apparire in una tabella gia presente nel sito che e' questa e che si trova nel file overall_header:

Codice: Seleziona tutto

div class="clear-both"></div>

	<a name="start_here"></a>
	<div id="page-body">
	<div class="forumbg">
       <div class="inner">
          <span class="corners-top"><span></span></span>
         <ul class="topiclist">
             <li class="header">
                <dl class="icon">
                 <dt>Fantacalcio SoloNapoliFans: Clicca sui banner</dt>
                </dl>
             </li>
          </ul>
          <ul class="topiclist forums">
             <li class="row">
                <dl>
<div align="center"><a href="http://www.fantaclub.it/servlet/lega/solonapolifans?insito=si" target="blank_"><IMG SRC="http://www.solonapolifans.it/images/fantacalcio1.png" a title="Lega solonapolifans link ai 3 gironi"></A>&nbsp; &nbsp; &nbsp<IMG SRC="http://www.solonapolifans.it/images/prova3.jpg" a title="Termini" /></A>&nbsp; &nbsp; &nbsp<a href="http://www.solonapolifans.it/viewtopic.php?f=32&t=488"><IMG SRC="http://www.solonapolifans.it/images/fantacalcio2.png" a title="Lega solonapolifans regolamento e premi"></A></div>
                   </dd>
                </dl>
             </li>
          </ul>
          <span class="corners-bottom"><span></span></span>
       </div>
      </div>
in che parte del codice dove devo inserire <!-- INCLUDE mod_last_topiclist_body.html -->

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: Topten Topics

Messaggio da Micogian » 16/09/2011, 7:46

Hai dimenticato di cambiare il nome dell'array, altrimenti non c'è differenza con le altre variabili. lo avevo scritto, dove si creano le variabili devi cambiare il nome all'array:

Codice: Seleziona tutto

$template->assign_block_vars('lastpost_32',array(
Potevi mettere il codice nello stesso file php, senza bisogno di inserire un nuovo include ma è la stessa cosa.
L'unico problema potrebbe essere che le due parti di codice, visto che con l'include finiscono nel file index.php non vadano in conflitto. Meglio cambiare i nomi alle variabili $list_rec e $list_view che sono i record da elaborare e quelli da visualizzare.
Puoi modificarli in $list_rec_32 e $list_view_32 o addirittura non usarli e sostituirle direttamente con i valori 30 e 5.
Devi considerare che è stato scelto il valore 30 (potrebbe essere di meno) perchè per i topics elaborati vengono controllati i permessi di lettura e la lista potrebbe essere minore di quella che vogliamo visualizzare.
Credo che per visualizzare 5 topic basti elaborarne 10.
Per il template non ho capito se vanno nella stessa tabella o in una diversa, l'importante è usare il nuovo array e le relative variabili.
Se usi una tabella diversa ti conviene creare un nuovo file html mod_lastpost32_body.html e l'include lo metti dove vuoi che appaia.
Nel nuovo file devi usare

Codice: Seleziona tutto

<!-- BEGIN lastpost_32 -->
.....
<!-- END lastpost_32 -->

metal master
Utente
Utente
Messaggi: 122
Iscritto il: 28/12/2010, 10:58
Sesso: Maschio
Versione: 3.1.3
Server: UNIX/Linux
PHP: 5.5.25
Database: MySQL(i) 5.5.43-37.2

Re: Topten Topics

Messaggio da metal master » 16/09/2011, 12:00

fatto ma non appare nulla in tabella :|

Rispondi

Torna a “Database MODs”

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti