Topten Topics

Questa discussione si intitola Topten Topics nella sezione Database MODs. mmm... allora il charset della pagina è utf-8 (ricavato dai dati della sorgente pagina)... i file li ho presi entrambi e salvati sia con gedit ...

Re: Topten Topics

Messaggioda MarcoG » 17/01/2012, 1:07

mmm...
allora il charset della pagina è utf-8 (ricavato dai dati della sorgente pagina)...

i file li ho presi entrambi e salvati sia con gedit (uso linux) che tramite notepad++ (menù formato). Ho aggiornato la cache (nel caso dipendesse dal file html) ma non è cambiato niente...
il problema è quello sicuramente, ma non capisco cosa sbaglio...anche perché la mod è fatta di soli due file... :?

ti allego i miei file qualora avessi tempo di controllare...
grazie ancora :-)
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
MarcoG
Utente
Utente
 
Messaggi: 90
Iscritto il: 13/01/2011, 23:56
Sesso: Maschio
Versione: 3.0.9
MOD:
Server: UNIX/Linux
phpBB SEO:
PHP: 5.3.8
Database: MySQL(i) 5.1.58

  • Condividi questa discussione
  • Ti piace questa discussione?
    Condividila! :)

Re: Topten Topics

Messaggioda Micogian » 17/01/2012, 1:34

Certamente dipende dal Charset, ma potrebbe dipendere dal Database.
Mi pare strano perchè nei miei forum uso la stessa Mod e non ho questo problema.
Ce l'avevo con un'altra Mod che passava i dati con variabili POST e non mi metteva le accentate.
L'ho risolto con questa funzione:
$title = utf8_normalize_nfc(request_var('title', '', true));
Ma in questo caso era una variabile 'post', bisognerebbe provare a modificare la variabile $title usando la funzione utf8_normalize_nfc()
Prova una cosa del genere
$title = utf8_normalize_nfc($row['topic_title'], '', true);
Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
 
Messaggi: 2466
Iscritto il: 07/01/2010, 9:51
Località: Udine
Versione: 3.0.10
MOD:
Server: UNIX/Linux
phpBB SEO: No
PHP: 5.2.9
Database: MySQL 5.0.77

Re: Topten Topics

Messaggioda MarcoG » 17/01/2012, 2:28

...anche questa cosa non funziona...
ma sbaglio qualcosa di stupido, ho proprio questa sensazione...

ho capito il problema, sono entrato nel database per controllare che fosse tutto ok, ho controllato i file, ho normalizzato il title della parte che mi interessa con la stringa che hai detto adattata (e non da nessun errore di sintassi o affine...)

avrei una domanda: è possibile dire nel file (della mod) che questo deve essere interpretato tramite utf-8?
così in teoria qualsiasi cosa fa esce (viene letto) utf8...

-----------------------------------

edit: ho trovato l'errore stupido... praticamente non è un problema di codifica ma di dimensione... e capita a tutti per necessità. Praticamente la mod prevede un limite del testo del titolo, oltre il quale (mi sembra sia in origine 27 caratteri) taglia il titolo e inserisce dei puntini sospensivi. Bene... se vi capita di avere proprio come ultimo carattere un carattere speciale del tipo "à", questo non sarà riconosciuto da nessun browser (vi appare il quadrato storto con il punto interrogativo) perché risulta incompleto (è una sorta di carattere doppio che per essere generato ha bisogno di 2 caratteri).. non so come spiegarlo a parole ma basta cambiare il valore assegnato alla mod ed aggiungere un carattere (ma occhio all'impaginazione quando cambia la risoluzione... ;))

Grazie Micogian, senza di te non ci sarei comunque mai arrivato. ;)
MarcoG
Utente
Utente
 
Messaggi: 90
Iscritto il: 13/01/2011, 23:56
Sesso: Maschio
Versione: 3.0.9
MOD:
Server: UNIX/Linux
phpBB SEO:
PHP: 5.3.8
Database: MySQL(i) 5.1.58

Re: Topten Topics

Messaggioda Micogian » 17/01/2012, 8:17

In effetti avevo notato anch'io che la troncatura del titolo a volte crea dei problemi.
Ovviamente questo succede quando un carattere particolare come le accentate viene trasformato in codice (es. la è accentata diventa è).
Se la troncatura avviene in quel punto il risultato può essere indesiderato.
Era una cosa sulla quale volevo trovare una soluzione, dato però che in phpbb esiste una funzione di troncatura volevo vedere se per caso fosse già risolto questo problema.

EDIT: dovrebbe essere la funzione truncate_string()
Devo vedere quali sono i parametri da utilizzare, da quel che ricordo dovrebbe essere
truncate_string($title, 25)
Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
 
Messaggi: 2466
Iscritto il: 07/01/2010, 9:51
Località: Udine
Versione: 3.0.10
MOD:
Server: UNIX/Linux
phpBB SEO: No
PHP: 5.2.9
Database: MySQL 5.0.77

Re: Topten Topics

Messaggioda MarcoG » 17/01/2012, 23:25

ok... capito, provato e... funziona ;)

ecco - tradotto - cosa bisogna fare (operiamo sul file mod_topten_topics.php):

trovate:

Codice: Seleziona tutto
if (strlen($row1['topic_title']) > 28)
            {
            $topic_title1 = substr($row1['topic_title'],0,27) . "...";
            }else{
            $topic_title1 = $row1['topic_title'];
            }


e sostituitelo con questo:

Codice: Seleziona tutto
$topic_title1 = truncate_string ($row1['topic_title'], 27) . "...";


quindi trovate questo:

Codice: Seleziona tutto
if (strlen($row2['topic_title']) > 28)
            {
            $topic_title2 = substr($row2['topic_title'],0,27) . "...";
            }else{
            $topic_title2 = $row2['topic_title'];
            }


e sostituitelo con questo:

Codice: Seleziona tutto
$topic_title2 = truncate_string ($row2['topic_title'], 27) . "...";


e per finire trovate questo:

Codice: Seleziona tutto
if (strlen($post_subject) > 28)
            {
            $post_title = substr($post_subject,0,25) . "...";
            }else{
            $post_title = $post_subject ;
            }


e sostituitelo con questo:

Codice: Seleziona tutto
$post_title = truncate_string ($post_subject, 25) . "...";


Così facendo otterrete che la troncatura funzionerà correttamente anche se come ultimo carattere avete un carattere speciale...
i numeri nel codice indicano a quale carattere si tronca il titolo prima di inserire i puntini...

Grazie infinite Micogian, direi problema risolto... ;)

ps- ragazzi ho fatto un copia e incolla veloce delle modifiche che ho apportato ai miei file, scusate ma non ho tempo di verificare più a fondo. Se qualcun altro fa la modifica ne confermi il funzionamento, grazie ;)
MarcoG
Utente
Utente
 
Messaggi: 90
Iscritto il: 13/01/2011, 23:56
Sesso: Maschio
Versione: 3.0.9
MOD:
Server: UNIX/Linux
phpBB SEO:
PHP: 5.3.8
Database: MySQL(i) 5.1.58

Re: Topten Topics

Messaggioda juventissimo » 18/01/2012, 22:10

ho un problema, su ultimi post (lato destro) quando clicco il link che appare della risposta mi apre si il topic, ma lo apre sempre sul primo post, non capisco però il motivo :(
eppure sul link appare #p1200
mi sapete aiutare?
grazie

EDIT:
il problema persiste quando la risposta sul post va a finire nelle pagine sucessive del topic
juventissimo
Utente
Utente
 
Messaggi: 88
Iscritto il: 11/12/2011, 13:21
Sesso: Maschio
Versione: 3.0.9
MOD:
Server: UNIX/Linux
phpBB SEO: No
PHP: PHP 5.2.17
Database: MySQL 5.1.49-community-log

Re: Topten Topics

Messaggioda Micogian » 18/01/2012, 23:31

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
 
Messaggi: 2466
Iscritto il: 07/01/2010, 9:51
Località: Udine
Versione: 3.0.10
MOD:
Server: UNIX/Linux
phpBB SEO: No
PHP: 5.2.9
Database: MySQL 5.0.77

Re: Topten Topics

Messaggioda juventissimo » 19/01/2012, 20:36

Micogian ha scritto:Già discusso di questo problema, mi pare qui: http://www.phpbbitalia.net/forum/database-mods-f11/topten-topics-t3846-30.html#p23018
Micogian ha scritto:Il link per aprire l'ultimo post dovrebbe essere questo:
Codice: Seleziona tutto
$last_post_link[$n4]      = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row4['forum_id'] . "&t=" . $row4['topic_id'] . "#p" . $row4['topic_last_post_id']);


Adesso dovrebbe essere a posto anche la function mod_data()

Le modifiche sono già state fatte nel codice postato, attendo per farlo nella Mod.



io ho seguito quello che hai scritto, ma non ho ben capito dove devo mettere e/o sostituire il codice :(
mi potresti editare il codice che ti ho allegato cosi non rischio di fare danni?
grazie mille

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 = 20 ;   // numero di records da estrarre dalla tabella (alcuni topics potrebbero non aver il permesso di lettura)
$list_view = 10 ;  // sostituire il numero della variabile $lista se si desidera diminuire/aumentare il numero dei Topics

//---------- 10 Topics più Recenti start -----------//
$sql1 = "SELECT tt.topic_id, tt.forum_id, tt.topic_title, tt.topic_time, tt.topic_moved_id, tt.topic_first_poster_name,
    ft.forum_id, ft.forum_name
    FROM " . TOPICS_TABLE . " tt, " . FORUMS_TABLE . " ft
    WHERE tt.topic_moved_id = 0
    AND tt.forum_id <> '38'
    AND tt.forum_id <> '44'
    AND tt.forum_id <> '67'
    AND tt.forum_id = ft.forum_id
    ORDER BY tt.topic_time DESC LIMIT 0,$list_rec";
$result1 = $db->sql_query($sql1);
    $n1 = 0;
    while ($row1 = $db->sql_fetchrow($result1))
    {
          if ($auth->acl_get('f_read', $row1['forum_id']) == 1)
        {
            if ($n1 < $list_view)
         {
            if (strlen($row1['topic_title']) > 28)
            {
            $topic_title1 = substr($row1['topic_title'],0,27) . "...";
            }else{
            $topic_title1 = $row1['topic_title'];
            }
         $last_topic_link[$n1]         = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row1['forum_id'] . "&amp;t=" . $row1['topic_id']);
            $last_topic_title[$n1]        = $row1['topic_title'];
         $last_topic_title_short[$n1]     = $topic_title1;
         $last_topic_forum[$n1]        = $row1['forum_name'];
            $last_topic_author[$n1]       = $row1['topic_first_poster_name'];
            $last_topic_data[$n1]         = $user->format_date($row1['topic_time'], "|d M|");
         ++$n1 ;             
            }else{
         break ;
         }
        }
    }
//---------- 10 Topics più Recenti end -----------//

//---------- 10 Topics più Visti start -----------//

$sql2 = "SELECT tt.topic_id, tt.forum_id, tt.topic_title, tt.topic_first_poster_name, tt.topic_views,
    ft.forum_id, ft.forum_name
    FROM " . TOPICS_TABLE . " tt, " . FORUMS_TABLE . " ft
    WHERE tt.forum_id = ft.forum_id
    ORDER BY tt.topic_views DESC LIMIT 0,$list_rec";
$result2 = $db->sql_query($sql2);
    $n2 = 0 ;
    while ($row2 = $db->sql_fetchrow($result2))
    {
      if ($auth->acl_get('f_read', $row2['forum_id']) == 1)
      {
         if ($n2 < $list_view)
         {
            if (strlen($row2['topic_title']) > 28)
            {
            $topic_title2 = substr($row2['topic_title'],0,27) . "...";
            }else{
            $topic_title2 = $row2['topic_title'];
            }
         $view_topic_link[$n2]         = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row2['forum_id'] . "&amp;t=" . $row2['topic_id']);
         $view_topic_title[$n2]         = $row2['topic_title'];
         $view_topic_title_short[$n2]     = $topic_title2;   
         $view_topic_forum[$n2]        = $row2['forum_name'];      
         $view_topic_author[$n2]       = $row2['topic_first_poster_name'];
         $view_topic_views[$n2]        = $row2['topic_views'];
         ++$n2 ;
         }else{
         break ;
         }
      }
   }
//---------- 10 Topics più visti end -----------//

//---------- 10 Ultimi posts start -----------//
$sql4 = "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_post_subject, tt.topic_last_post_time,
    ft.forum_id, ft.forum_name
    FROM " . TOPICS_TABLE . " tt, " . FORUMS_TABLE . " ft
    WHERE tt.topic_moved_id = 0
    AND tt.forum_id <> '38'
    AND tt.forum_id <> '44'
    AND tt.forum_id = ft.forum_id
    ORDER BY tt.topic_last_post_time DESC LIMIT 0,$list_rec";
$result4 = $db->sql_query($sql4);
    $n4 = 0;
    while ($row4 = $db->sql_fetchrow($result4))
    {
          if ($auth->acl_get('f_read', $row4['forum_id']) == 1)
        {
            if ($n4 < $list_view)
         {
            $post_subject = str_replace("Re: ", "", $row4['topic_last_post_subject']) ;
            if (strlen($post_subject) > 28)
            {
            $post_title = substr($post_subject,0,25) . "...";
            }else{
            $post_title = $post_subject ;
            }
         $last_post_link[$n4]      = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row4['forum_id'] . "&amp;t=" . $row4['topic_id'] . "#p" . $row4['topic_last_post_id']);
         //$last_post_link[$n4]         = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row4['forum_id'] . "&amp;t=" . $row4['topic_id'] . "p#" . $row4['topic_last_post_id']);
         $last_post_title[$n4]       = $row4['topic_last_post_subject'];
         $last_post_title_short[$n4] = $post_title;
         $last_post_forum[$n4]        = $row4['forum_name'];
         $last_post_author[$n4]       = $row4['topic_last_poster_name'];
         ++$n4 ;             
         }else{
         break ;
         }
        }
    }
//---------- 10 Ultimi posts end -----------//

// Crea l'array "topten_list" che contiene le Variabili per il Template
for ($x = 0; $x < $list_view; ++$x)
{
 $template->assign_block_vars('topten_list',array(
   'LAST_TOPIC_LINK'         => $last_topic_link[$x],
   'LAST_TOPIC_TITLE'         => $last_topic_title[$x],
   'LAST_TOPIC_TITLE_SHORT'   => $last_topic_title_short[$x],
   'LAST_TOPIC_FORUM'         => $last_topic_forum[$x],
   'LAST_TOPIC_AUTHOR'         => $last_topic_author[$x],
   'LAST_TOPIC_DATA'         => $last_topic_data[$x],

   'VIEW_TOPIC_LINK'         => $view_topic_link[$x],
   'VIEW_TOPIC_TITLE'         => $view_topic_title[$x],
   'VIEW_TOPIC_TITLE_SHORT'   => $view_topic_title_short[$x],
   'VIEW_TOPIC_FORUM'         => $view_topic_forum[$x],
   'VIEW_TOPIC_AUTHOR'         => $view_topic_author[$x],
   'VIEW_TOPIC_VIEWS'         => $view_topic_views[$x],

   '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'         => $last_post_forum[$x],
   'LAST_POST_AUTHOR'         => $last_post_author[$x]
   ));
}
?>
juventissimo
Utente
Utente
 
Messaggi: 88
Iscritto il: 11/12/2011, 13:21
Sesso: Maschio
Versione: 3.0.9
MOD:
Server: UNIX/Linux
phpBB SEO: No
PHP: PHP 5.2.17
Database: MySQL 5.1.49-community-log

Re: Topten Topics

Messaggioda Micogian » 19/01/2012, 20:57

No, non è quella la modifica da fare, quella era già fatta.
Devi fare questa:
La Mod si divide in tre parti, l'ultima riguarda "gli ultimi posts".
Devi trovare la riga
Codice: Seleziona tutto
$last_post_link[$n4]    = append_sid("{$phpbb_root_path}viewtopic.$phpEx""f=" $row4['forum_id'] . "&amp;t=" $row4['topic_id'] . "#p" $row4['topic_last_post_id']); 

e sostituirla con questa:
Codice: Seleziona tutto
$last_post_link[$n4]    = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row4['forum_id'] . "&amp;t=" . $row4['topic_id'] . "&amp;p=" . $row4['topic_last_post_id'] . "#p" . $row4['topic_last_post_id']);

In pratica nell'url che apre il post viene aggiunto il "post_id".
Questo per quanto riguarda le versioni normali di phpbb3, in presenza della SEO non sono certo che funzioni correttamente perchè non ho la SEO per provare. Dovrebbe comunque funzionare regolarmente.
Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
 
Messaggi: 2466
Iscritto il: 07/01/2010, 9:51
Località: Udine
Versione: 3.0.10
MOD:
Server: UNIX/Linux
phpBB SEO: No
PHP: 5.2.9
Database: MySQL 5.0.77

Re: Topten Topics

Messaggioda juventissimo » 19/01/2012, 21:45

Micogian ha scritto:No, non è quella la modifica da fare, quella era già fatta.
Devi fare questa:
La Mod si divide in tre parti, l'ultima riguarda "gli ultimi posts".
Devi trovare la riga
Codice: Seleziona tutto
$last_post_link[$n4]    = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row4['forum_id'] . "&amp;t=" . $row4['topic_id'] . "#p" . $row4['topic_last_post_id']); 

e sostituirla con questa:
Codice: Seleziona tutto
$last_post_link[$n4]    = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row4['forum_id'] . "&amp;t=" . $row4['topic_id'] . "&amp;p=" . $row4['topic_last_post_id'] . "#p" . $row4['topic_last_post_id']);

In pratica nell'url che apre il post viene aggiunto il "post_id".
Questo per quanto riguarda le versioni normali di phpbb3, in presenza della SEO non sono certo che funzioni correttamente perchè non ho la SEO per provare. Dovrebbe comunque funzionare regolarmente.


bella, grazie sembra che funzioni :D

EDIT:
mi hanno confermato che funziona :D
grazie
juventissimo
Utente
Utente
 
Messaggi: 88
Iscritto il: 11/12/2011, 13:21
Sesso: Maschio
Versione: 3.0.9
MOD:
Server: UNIX/Linux
phpBB SEO: No
PHP: PHP 5.2.17
Database: MySQL 5.1.49-community-log

PrecedenteProssimo

Torna a Database MODs

SEO Search Tags

Mod Topten Topics      in file /mod_topten_topics.php      mod last ten topic      phpBB3 ten topics      phpBB3 top ten      top ten topics      top ten topics phpbb      topten topic      topten topics      

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

  • Pubblicità