Guida: installare la Sort Topics Alphabetically

PHP Bulletin Board: il sistema libero per la gestione di forum
Regole del forum
sezione dedicata al phpbb in generale: sviluppo, utilizzo, personalizzazioni ecc.

Guida: installare la Sort Topics Alphabetically

Messaggioda Silver Surfer » ven 10 giu 2011, 19:46

Si scarica la MOD di Ameeck se la si vuole conservare ( si installa anche semplicemente seguendo le istruzioni a seguire)

Questa modifica non implica nessun file aggiuntivo va solamente a integrare nuovo codice atto al funzionamento della medesima, con settaggi impostabili da PCA.

Si accede al database relazionale del forum tramite il front-end grafico PhpMyAdmin

si avrà una pagina del tipo
Immagine

si tratterà di aprire il database cliccando sul nome in azzurro, nel mio caso my_silvermaledetto

ora si vedranno le singole tabelle che costituiscono il database MySQL
Immagine

Dovendo integrare una tabella, si procede direttamente cliccando sul pulsante SQL in alto a sinistra
e si aprirà una pagina del tipo
Immagine

in cui bisognerà solo inserire nell'apposito spazio questo codice
Codice: Seleziona tutto
ALTER TABLE phpbb_forums ADD sort_alphabet TINYINT( 1 ) NOT NULL DEFAULT '0';


e cliccare evidentemente su Esegui

il che dovrebbe modificare la tabella phpbb_forums ( dove phpbb è il prefisso tabellare di default , ma se avete una board non installata manualmente, questo potrebbe pure essere diverso )
Immagine

Aprire: viewforum.php
cerca

Codice: Seleziona tutto
if (!$forum_data)
{
   trigger_error('NO_FORUM');
}

Aggiungi dopo

In una nuova linea creata

Codice: Seleziona tutto
// Begin Sort topics alphabetically
$letter   = request_var('letter', '');
if (!in_array($letter, range('A', 'Z')) && $letter != 'other' || !$forum_data['sort_alphabet'])
{
   $letter = '';
}
// End Sort topics alphabetically


Cerca

Codice: Seleziona tutto
gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param);

Aggiungi dopo

In una nuova linea creata

Codice: Seleziona tutto
// Begin sort topics alphabetically
// A bit of phpBB code from memberlist, thank you
$sql_where_letter = '';
if ($letter == 'other')
{
   for ($i = 97; $i < 123; $i++)
   {
      $sql_where_letter .= ' AND topic_title NOT ' . $db->sql_like_expression(chr($i) . $db->any_char);
   }
}
else if ($letter)
{
   $sql_where_letter .= ' AND topic_title ' . $db->sql_like_expression(substr($letter, 0, 1) . $db->any_char);
}
// End sort topics alphabetically


Cerca

Codice: Seleziona tutto
if ($sort_days)
{
   $min_post_time = time() - ($sort_days * 86400);


Rimpiazza con

Codice: Seleziona tutto
if ($sort_days || $letter)
{
   $min_post_time = ($sort_days) ? time() - ($sort_days * 86400) : 0;


Cerca

Codice: Seleziona tutto
OR topic_type = " . POST_ANNOUNCE . ")

Aggiungi dopo

Codice: Seleziona tutto
$sql_where_letter


Cerca

Codice: Seleziona tutto
'GOTO_PAGE_IMG'            => $user->img('icon_post_target', 'GOTO_PAGE'),

Aggiungi dopo

In una nuova linea creata

Codice: Seleziona tutto
'U_ALL_TOPICS' => append_sid("viewforum.$phpEx", "f=$forum_id&amp;letter=&amp;st=$sort_days&amp;sk=$sort_key&amp;sd=$sort_dir"),
'S_SORT_ALPHABET' => $forum_data['sort_alphabet'],


Cerca


Codice: Seleziona tutto
// Grab icons
$icons = $cache->obtain_icons();

Aggiungi prima

In una nuova linea creata

Codice: Seleziona tutto
// Begin sort topics alphabetically

foreach (range('A', 'Z') as $single_letter)
{
   $template->assign_block_vars('alphabet', array(
      'LETTER' => $single_letter,
      'U_LETTER' => append_sid("viewforum.$phpEx", "f=$forum_id&amp;letter=$single_letter&amp;$u_sort_param"),
      'DIVIDER' => ',',
   ));
}
$template->assign_block_vars('alphabet', array(
      'LETTER' => "#",
      'U_LETTER' => append_sid("viewforum.$phpEx", "f=$forum_id&amp;letter=other&amp;$u_sort_param"),
      'DIVIDER' => '',
));
// End sort topics alphabetically


Cerca

Codice: Seleziona tutto
else
      {
         $topics_count--;
      }

Rimpiazza con

Codice: Seleziona tutto
elseif(empty($letter))
        {
            $topics_count--;
        }


Cerca

Codice: Seleziona tutto
{
   $get_forum_ids = array_diff($active_forum_ary['forum_id'], $active_forum_ary['exclude_forum_id']);
   $sql_where = (sizeof($get_forum_ids)) ? $db->sql_in_set('t.forum_id', $get_forum_ids) : 't.forum_id = ' . $forum_id;
}

Aggiungi dopo

In una nuova linea creata

Codice: Seleziona tutto
// Sort topic alphabetically
// We need to edit the once generated where part of the query, since table shortcuts are used
$sql_where_letter = str_replace('topic_title', 't.topic_title', $sql_where_letter);


Cerca

Codice: Seleziona tutto
$sql_approved

Aggiungi dopo

In una nuova linea creata

Codice: Seleziona tutto
$sql_where_letter


Cerca

Codice: Seleziona tutto
'PAGINATION'   => generate_pagination(append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id&amp;$u_sort_param"), $topics_count, $config['topics_per_page'], $start),

Rimpiazza con

Codice: Seleziona tutto
'PAGINATION'   => generate_pagination(append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id&amp;letter=$letter&amp;$u_sort_param"), $topics_count, $config['topics_per_page'], $start),



Aprire: includes/acp/acp_forums.php
Cerca

Codice: Seleziona tutto
'forum_password_unset'   => request_var('forum_password_unset', false),

Aggiungi dopo

In una nuova linea creata

Codice: Seleziona tutto
'sort_alphabet'         => request_var('sort_alphabet', 0),


cerca

Codice: Seleziona tutto
'forum_password_confirm'=> '',

Agiungi dopo

In una nuova linea creata

Codice: Seleziona tutto
'sort_alphabet'      => 0,


Cerca

Codice: Seleziona tutto
'S_FORUM_PASSWORD_SET'      => (empty($forum_data['forum_password'])) ? false : true,

Aggiungi dopo

In una nuova linea creata
Codice: Seleziona tutto
'S_SORT_ALPHABETICALLY'      => $forum_data['sort_alphabet'],



Aprire: language/en/viewforum.php
I file di linguaggio vanno modificati solo con codifica UTF-8 senza BOM!!
Cerca

Codice: Seleziona tutto
'POST_FORUM_LOCKED'      => 'Forum is locked',

Aggiungi dopo

In una nuova linea creata
Codice: Seleziona tutto
'SORT_ALPHABETICALLY' => 'Sort alphabetically',

da riportare nella cartella it nella medesima posizione ( se si vuole una traduzione, ma la modifica funzionerà ugualmente)
'SORT_ALPHABETICALLY' => 'Indice alfabetico',



Aprire: language/en/acp/forums.php
Cerca

Codice: Seleziona tutto
'REDIRECT_ACL'   => 'Now you are able to %sset permissions%s for this forum.',

Aggiungere dopo

In una nuova linea creata

Codice: Seleziona tutto
'SORT_ALPHABETICALLY' => 'Allow sorting by first letters',
'SORT_ALPHABETICALLY_EXPLAIN' => 'Displays a panel which lets users to choose to display topics starting with a specific letter or character.',


come prima per la cartella speculare in it
'SORT_ALPHABETICALLY' => 'Abilita una lista alfabetica di ordinamento argomenti',
'SORT_ALPHABETICALLY_EXPLAIN' => 'Visualizza un pannello che permette agli utenti
di scegliere di ordinare gli argomenti che iniziano con una lettera specifica o un carattere',



Aprire: styles/prosilver/template/viewforum_body.html
Cerca

Codice: Seleziona tutto
<!-- BEGIN topicrow -->

Aggiungi prima

In una nuova linea creata

Codice: Seleziona tutto
<!-- IF S_SORT_ALPHABET -->
            <div class="panel">
<div class="inner"><span class="corners-top"><span></span></span>
<ul class="linklist">
<li><strong style="font-size: 0.95em;">{L_SORT_ALPHABETICALLY}: <a href="{U_ALL_TOPICS}" style="font-weight: bold;">{L_ALL_TOPICS}</a>,
   <!-- BEGIN alphabet -->
   <a href="{alphabet.U_LETTER}" style="font-weight: bold;">{alphabet.LETTER}</a>{alphabet.DIVIDER}
   <!-- END alphabet --></strong>
</ul>
<span class="corners-bottom"><span></span></span></div>
</div>
<!-- ENDIF -->



Aprire: adm/style/acp_forums.html
Cerca

Codice: Seleziona tutto
<dl>
   <dt><label for="topics_per_page">{L_FORUM_TOPICS_PAGE}:</label><br /><span>{L_FORUM_TOPICS_PAGE_EXPLAIN}</span></dt>
   <dd><input type="text" id="topics_per_page" name="topics_per_page" value="{TOPICS_PER_PAGE}" size="4" maxlength="4" /></dd>
</dl>

Aggiungi dopo

In una nuova linea creata
Codice: Seleziona tutto
<dl>
   <dt><label for="sort_alphabet">{L_SORT_ALPHABETICALLY}:</label><br /><span>{L_SORT_ALPHABETICALLY_EXPLAIN}</span></dt>
   <dd><label><input type="radio" class="radio" name="sort_alphabet" value="1"<!-- IF S_SORT_ALPHABETICALLY --> id="sort_alphabet" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
   <label><input type="radio" class="radio" name="sort_alphabet" value="0"<!-- IF not S_SORT_ALPHABETICALLY --> id="sort_alphabet" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
</dl>


Salva tutti i file, entra nel PCA e cancella la cache generale del forum.La MOD è finita.
Da PCA quando si creerà un nuovo forum o si andrà a modificarne uno esistente, ora si vedrà questo nuovo settaggio
Immagine

Nella normale navigazione di quel forum si vedrà invece
Immagine

la lista alfabetica e dei caratteri speciali, cliccabile.
”Un guerriero senza patria e senza spada
Con un piede nel passato
E lo sguardo dritto e aperto nel futuro”
Avatar utente
Silver Surfer
Principe
Principe
 
Messaggi: 82341
Iscritto il: gio 20 set 2007, 21:13

Re: Guida: installare la Sort Topic Alphabetically

Messaggioda Silver Surfer » mer 29 giu 2022, 19:30

Se hai un derivato dal subsilver2 e quindi uno stile tabellare dovrai rivedere la parte relativa

Aprire: styles/subsilver2/template/viewforum_body.html
Cerca

Codice: Seleziona tutto
<!-- BEGIN topicrow -->

         <!-- IF topicrow.S_TOPIC_TYPE_SWITCH eq 1 -->
            <tr>


Aggiungi prima in una nuova riga creata opportunamente


Codice: Seleziona tutto
<!-- IF S_SORT_ALPHABET -->
<tr align="center">
      <td class="row3" colspan="<!-- IF S_TOPIC_ICONS -->7<!-- ELSE -->6<!-- ENDIF -->"><strong style="font-size: 0.95em;">{L_SORT_ALPHABETICALLY}: <a href="{U_ALL_TOPICS}" style="font-weight: bold;">{L_ALL_TOPICS}</a>,
      <!-- BEGIN alphabet -->
         <a href="{alphabet.U_LETTER}" style="font-weight: bold;">{alphabet.LETTER}</a>{alphabet.DIVIDER}
      <!-- END alphabet --></strong></td>
</tr>
<!-- ENDIF -->


Ultimo bump di Silver Surfer effettuato il mer 29 giu 2022, 19:30.
”Un guerriero senza patria e senza spada
Con un piede nel passato
E lo sguardo dritto e aperto nel futuro”
Avatar utente
Silver Surfer
Principe
Principe
 
Messaggi: 82341
Iscritto il: gio 20 set 2007, 21:13

Torna a PhpBB

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron