[DEV] Mod Topic of the week

MODs in fase di sviluppo.
Rispondi
Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3702
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:

[DEV] Mod Topic of the week

Messaggio da Micogian » 06/10/2010, 13:45

Mod Topic of the week

Nome Mod: Mod Topic of the week
Autore: Micogian
Descrizione della Mod: Consente di selezionare un certo numero di Topic che contengono nel testo il bbcode [img].
La Mod provvede a estrarre il link dell'immagine inserito tra i bbcode e visualizzarla in una striscia inserita nella Home page del Forum.
Può tornare utile per evidenziare immagini che richiamano alcuni Topics, come "Foto del mese", "Topics della settimana", ecc.
Versione Mod: 1.0.1
Versioni compatibili phpBB: 3.0.x

Istruzioni

1) Creare un Topic in area riservata. Questo Topic ha lo scopo di contenere nel testo la lista dei topic_id selezionati separati da una virgola.
(es. 4523,4530,4600,4602,4607) Il testo non deve contenere altre stringhe al di fuori della Lista topic_id.

2) Nella root del Forum creare il file mod_week_img.php con il contenuto seguente:

Codice: Seleziona tutto

<?php
// Mod Topic of the week - by Micogian 2010
if (!defined('IN_PHPBB'))
{
   exit;
}
$post_ori = '9999';  // inserire il post_id del Topic contenente la Lista dei topic_id

// Estrae la lista dei post_id da elaborare
$sql = "SELECT post_id, post_text FROM " . POSTS_TABLE . " WHERE post_id = " . $post_ori ;
    $result = $db->sql_query($sql);
   {
   $row = $db->sql_fetchrow($result);
       $topic_list = $row['post_text'];     
   }

// elabora i topic selezionati
$sql1 = "SELECT topic_id, post_id, post_subject, post_text, bbcode_uid FROM " . POSTS_TABLE . " WHERE topic_id IN(" . $topic_list . ") ORDER BY topic_id, post_id";
    $result1 = $db->sql_query($sql1);

    $lista_topics = '' ;
    while ($row1 = $db->sql_fetchrow($result1))
    {
       // estrae solo il primo post di ogni Topic.
          if( strpos($lista_topics, $row1['topic_id']) == '0'){
         // Titolo
         if (strlen($row1['post_subject'] > '28'))
         {
         $topic_title_short = substr($row1['post_subject'],0,27) . "...";
         }else{
         $topic_title_short = $row1['post_subject'];
         }
         // immagine compresa tra i tag [img]...[/img]
         $post_text_tmp = $row1['post_text'] ;  // testo del post
    	 $post_text_tmp = str_replace($row1['bbcode_uid'],"",$post_text_tmp);
         $post_text1 = str_replace("[/img:]","[img:]", $post_text_tmp) ;
         $post_text2 = explode("[img:]", $post_text1) ;
         $post_img = $post_text2[1] ;   // link dell'immagine

         // descrizione compresa tra i tag [quote]...[/quote]
         $post_quote_tmp = str_replace("[/quote:]","[quote:]", $post_text_tmp) ;
         $post_quote2 = explode("[quote:]", $post_quote_tmp) ;
         $post_quote = $post_quote2[1] ;
         if (strlen($post_quote) > 200){
         $post_quote_short = substr($post_quote,0,200) . "..." ;
         }else{
         $post_quote_short = $post_quote ;
         }

      $template->assign_block_vars('week_topic', array(
            'U_WEEK_TITLE'         => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "t=" . $row1['topic_id']),
            'WEEK_TITLE'            => $row1['post_subject'] ,
            'WEEK_TITLE_SHORT' => $topic_title_short,
            'WEEK_IMG'              => $post_img ,
            'WEEK_SHORT_TEXT' => $post_quote_short
             ));
          $lista_topics .= "," . $row1['topic_id'] ;
            }
    }
?>
3) inserire nel file index.php la riga seguente:

Codice: Seleziona tutto

include($phpbb_root_path . 'mod_week_img.' . $phpEx);
La riga "include" va inserita verso la fine del file, prima della riga

Codice: Seleziona tutto

// Output page
4) Template subsilver2
Creare nella cartella "template" dello style di derivazione subsilver2 il file mod_week_img_body.html con il seguente contenuto:

Codice: Seleziona tutto

<div align='center'>
   <table class="tablebg" width="100%" cellspacing="1">
      <tr class="nav">
         <td class="cat" valign="middle" align="center">I Films della settimana</td>
      </tr>
      <tr>
         <td class="row1">
         <div align="center">
            <table width="98%" border="0" cellspacing="2" cellpadding="0">
               <tr>
			<!-- BEGIN week_topic -->
                  <td align="center" valign="top" width="20%" style="font-size: 0.9em;"><a href="{week_topic.U_WEEK_TITLE}" title="{week_topic.WEEK_TITLE}">{week_topic.WEEK_TITLE_SHORT}</a></td>
			<!-- END week_topic -->
               </tr>
               <tr>
			<!-- BEGIN week_topic -->
                  <td>
                     <div align="center">			
                     <a href="{week_topic.U_WEEK_TITLE}" title="{week_topic.WEEK_SHORT_TEXT}"><img src="{week_topic.WEEK_IMG}" alt="{week_topic.WEEK_TITLE}" height="250" border="0"></a></div>			                  
			</td>
			<!-- END week_topic -->
               </tr>
            </table>
            <br>
            </div>
         </td>
      </tr>
   </table>
</div>

<br clear="all" />
4) Nel file index_body.html trovare la riga:

Codice: Seleziona tutto

<!-- INCLUDE forumlist_body.html -->
Inserire: PRIMA la riga

Codice: Seleziona tutto

<!-- INCLUDE mod_week_img_body.html -->
In questo modo la tabella viene posta prima della Lista dei Forums.

Naturalmente la Mod, con opportune modifiche, si presta per realizzare una striscia di immagini relative a Topic da mettere in evidenza, come "Foto del mese", "Topics della settimana", ecc.

Non l'ho provata, è solo teorica, spero funzioni.

Avatar utente
gennyna
Utente
Utente
Messaggi: 1017
Iscritto il: 11/07/2009, 18:31
Versione: 3.0.10
Server: UNIX/Linux
Contatta:

Re: [DEV] Mod Topic of the week

Messaggio da gennyna » 06/10/2010, 14:38

solo una cosa; come vedo il post ID?

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3702
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: [DEV] Mod Topic of the week

Messaggio da Micogian » 06/10/2010, 14:44

gennyna ha scritto:solo una cosa; come vedo il post ID?
Vai sul post, clicca col tasto destro sul titolo, "proprietà" e vedi il numero dopo il carattere "p".
Anche se entri in modifica nel post vedi il post_id nell'url

Avatar utente
gennyna
Utente
Utente
Messaggi: 1017
Iscritto il: 11/07/2009, 18:31
Versione: 3.0.10
Server: UNIX/Linux
Contatta:

Re: [DEV] Mod Topic of the week

Messaggio da gennyna » 06/10/2010, 15:07

fatto; però ora mi da la pagina bianca all'apertura del sito

Avatar utente
Carlo
Amministratore
Amministratore
Messaggi: 9957
Iscritto il: 19/04/2009, 10:24
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 7.1.0
Database: MySQL(i) 10.0.27-MariaDB-cll-lve
Località: Puglia
Contatta:

Re: [DEV] Mod Topic of the week

Messaggio da Carlo » 06/10/2010, 16:01

Dovrebbe esserci qualche errore nel file di bingo. Infatti vedo in questa parte di codice, delle parentesi graffe che non c'entrano.

Codice: Seleziona tutto

   {
   $row = $db->sql_fetchrow($result);
       $topic_list = $row['post_text'];     
   }
MODs | Stili | Traduzioni MOD
Ogni MP contenente una richiesta di supporto verrà ignorato.

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3702
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: [DEV] Mod Topic of the week

Messaggio da Micogian » 06/10/2010, 16:09

C'è un errore qui:

Codice: Seleziona tutto

if (strlen($post_quote'] > '200')){
il codice corretto è

Codice: Seleziona tutto

if (strlen($post_quote) > '200'){

Avatar utente
gennyna
Utente
Utente
Messaggi: 1017
Iscritto il: 11/07/2009, 18:31
Versione: 3.0.10
Server: UNIX/Linux
Contatta:

Re: [DEV] Mod Topic of the week

Messaggio da gennyna » 06/10/2010, 16:28

Bingo con la modifica da te proposta ecco alcuni errori:

Codice: Seleziona tutto

[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 34: Undefined offset: 1
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 39: Undefined offset: 1
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 34: Undefined offset: 1
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 39: Undefined offset: 1
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 34: Undefined offset: 1
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 39: Undefined offset: 1
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 34: Undefined offset: 1
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 39: Undefined offset: 1
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 34: Undefined offset: 1
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 39: Undefined offset: 1

Avatar utente
gennyna
Utente
Utente
Messaggi: 1017
Iscritto il: 11/07/2009, 18:31
Versione: 3.0.10
Server: UNIX/Linux
Contatta:

Re: [DEV] Mod Topic of the week

Messaggio da gennyna » 06/10/2010, 23:32

ancora errore:

Codice: Seleziona tutto

SQL ERROR [ mysql4 ]

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY topic_id, post_id' at line 1 [1064]

SQL

SELECT topic_id, post_id, post_subject, post_text, bbcode_uid FROM phpbb_posts WHERE topic_id IN() ORDER BY topic_id, post_id

BACKTRACE

FILE: includes/db/mysql.php
LINE: 174
CALL: dbal->sql_error()

FILE: mod_week_img.php
LINE: 16
CALL: dbal_mysql->sql_query()

FILE: index.php
LINE: 295
CALL: include('mod_week_img.php')

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3702
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: [DEV] Mod Topic of the week

Messaggio da Micogian » 07/10/2010, 7:15

Non trova la Lista dei Topics, dovrebbe essere tra le parentesi dopo IN:

Codice: Seleziona tutto

WHERE topic_id IN()
Forse non hai sostituito il post_id= '9999' con quello del tuo post

La variabile $post_ori deve corrispondere al post_id del Topic che hai creato e che contiene la Lista dei Topic.
Io non lo conosco, per quello ho messo '9999'

Codice: Seleziona tutto

$post_ori = '9999';
Lo avevo detto:
Sostituisci il contenuto del file mod_week_img.php con quello che ho inserito adesso al punto 2)

Ricordati di sostituire il post_id

EDIT:
Altra cosa: nel file mod_week_img_body.html mancano due "virgolette" che non fanno funzionare il link e la variabile non è U_WEEK_LINK ma U_WEEK_TITLE.
Nella riga

Codice: Seleziona tutto

<td align="center" valign="top" width="20%" style="font-size: 0.8em;"><a href="{week_topic.U_WEEK_LINK} title="{week_topic.WEEK_TITLE}">{week_topic.WEEK_TITLE}</a></td>
manca la virgoletta che chiude il link prima di "title", la riga giusta è

Codice: Seleziona tutto

<td align="center" valign="top" width="20%" style="font-size: 0.8em;"><a href="{week_topic.U_WEEK_TITLE}" title="{week_topic.WEEK_TITLE}">{week_topic.WEEK_TITLE}</a></td>
Stessa cosa per la riga che riguarda le immagini

Codice: Seleziona tutto

<a href="{week_topic.U_WEEK_LINK} title="{week_topic.WEEK_TITLE}"><img src="{week_topic.WEEK_IMG}" alt="{week_topic.WEEK_SHORT_TEXT}" height="250" border="0"></a></div>
che deve essere

Codice: Seleziona tutto

<a href="{week_topic.U_WEEK_TITLE}" title="{week_topic.WEEK_TITLE}"><img src="{week_topic.WEEK_IMG}" alt="{week_topic.WEEK_SHORT_TEXT}" height="250" border="0"></a></div>
In alternativa copia il nuovo codice che ho corretto nel primo post. In pratica mancano le virgolette prima della parola title e la variabile non è U_WEEK_LINK ma U_WEEK_TITLE

Avatar utente
gennyna
Utente
Utente
Messaggi: 1017
Iscritto il: 11/07/2009, 18:31
Versione: 3.0.10
Server: UNIX/Linux
Contatta:

Re: [DEV] Mod Topic of the week

Messaggio da gennyna » 07/10/2010, 18:23

ancora errore:

Codice: Seleziona tutto

[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 39: Array to string conversion
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 40: Undefined offset: 1
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 35: Undefined offset: 1
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 39: Array to string conversion
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 40: Undefined offset: 1
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 39: Array to string conversion
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 40: Undefined offset: 1
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 39: Array to string conversion
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 40: Undefined offset: 1
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 39: Array to string conversion
[phpBB Debug] PHP Notice: in file /mod_week_img.php on line 40: Undefined offset: 1

Rispondi

Torna a “MODs in sviluppo”

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti