Visualizza i prossimi eventi sull'indice del forum


Tutorial Visualizza i prossimi eventi sull'indice del forum

Messaggio Da Niko Sab 16 Gen 2021 - 22:58

Visualizza i prossimi eventi sull'indice del forum


Il seguente tutorial ti consente di pubblicare il prossimo evento imminente sul tuo indice del forum. Funziona su tutte le versioni del forum (inclusa la versione mobile) e richiede l'attivazione anticipata del sistema degli eventi.

Visualizza i prossimi eventi sull'indice del forum Events10

Creazione del forum

Pannello di amministrazione  Generale  Forum - Categorie e forum

Come puoi vedere dall'esempio sopra, l'idea è di sostituire un sotto-forum indicando il numero di eventi esistenti, così come il prossimo evento a venire. Inoltre, il collegamento al forum viene sostituito dal collegamento dalla pagina di visualizzazione dell'evento.

Devi quindi creare un nuovo forum in cui vuoi vedere gli eventi visualizzati. Puoi nominarlo come preferisci, anche se il nome "Eventi" sembra essere il più coerente.

Una volta creato il forum, torna all'indice del forum e fai clic sul forum che hai appena creato:

Visualizza i prossimi eventi sull'indice del forum Events11

Quindi nella barra degli indirizzi, individua il numero che appare nell'URL di questo forum, è l'identificativo di questo sotto-forum. Nel nostro esempio, è 5. Ricorda questo numero, dovrebbe essere usato nel passaggio successivo.

Visualizza i prossimi eventi sull'indice del forum Events12

Creazione del codice Javascript

Pannello di amministrazione  Moduli  HTML e JAVASCRIPT - Gestione del codice JavaScript

Assicurati che la gestione dei codici Javascript sia attivata, quindi crea un nuovo javascript avente per titolo "ultimo evento" e per posizionamento "Indice del forum".

Inserisci il codice seguente:
Codice:
$(function() {
  $.get( "/events", function( data ) {
 
    var f_id = 3;
 
    var version = $('.bodylinewidth')[0] ? 0 :
      document.getElementById('phpbb') ? 1 :
      $('.pun')[0] ? 2 :
      document.getElementById('ipbwrapper') ? 3 :
      document.getElementById('modernbb') ? 4 :
      document.getElementById('mpage-body-modern') ? 5 :
      'badapple';
 
    var vdata = {
      ev_item : ['.EV_Row', '.EV_Item', '.EV_Item', '.EV_Item', '.EV_Item', ''][version],
      f_closest : ['tr', 'li.row', 'tr', 'tr', 'li.row', '.forum-content'][version],
      f_content_class : ['gensmall', 'eventInForum', 'eventInForum', 'eventInForum', 'eventInForum', 'eventInForum'][version],
      f_infos_splitter : [' ', ' ', '<i class="ion-calendar"></i> ', '<i class="ion-calendar"></i> ', '<i class="ion-calendar"></i>', ''][version],
      f_child_topics : ['td.row3', 'dd.topics', 'td.tc2', 'td:eq(1)', 'dd.topics', ''][version],
      f_child_posts : ['td:eq(3)', 'dd.posts', 'td.tc3', 'td:eq(2)', 'dd.posts', '.forum-statistics'][version],
      f_child_lastposts : ['td.row3.over', 'dd.lastpost', 'td.tcr', 'td.row1:not(.centered)', 'dd.lastpost', '.forum-lastpost-time'][version],
      separator : ['<br />', '<br />', '<br />', '<br />', '<br />', ''][version]
    };
 
    if( $('.EV_List', data).length ) {
      var count_future = 0,
          count_past = 0,
          nextEvent = "Aucun",
          date = '',
          location = '';
   
      if( $( ".EV_List[id*='new']", data ).length ) {
        var future = $( ".EV_List[id*='new']", data ),
            next = $(vdata.ev_item + ' .EV_ItemTitle:first', future).find('a'),
            infos = $(vdata.ev_item + ' .EV_ItemTitle:first', future).find('p').html();
     
        if( version != 5 ) { /* not displayed on mobile version */
          if( infos.search( vdata.f_infos_splitter ) != '-1' ) {
            var infos = infos.split( vdata.f_infos_splitter ),
                date = infos[1].replace(/ /g, ''),
                location = infos[0].replace(/&nbsp;/g, '');
          } else {
            var date = infos,
                location = '';
          }
        }
     
        var count_future = $('.EV_ItemTitle', future).length,
            nextEvent = '<a href="' + next.attr('href') +'">' + next.text() + '</a>' + vdata.separator + date + vdata.separator + location;
      }
 
      if( $( ".EV_List[id*='old']", data ).length ) {
        var past = $( ".EV_List[id*='old']", data );
        var count_past = $('.EV_ItemTitle', past).length;
      }
 
      if( $('a[href^="/f'+ f_id +'-"]').length ) {
        var t_forum = $('a[href^="/f'+ f_id +'-"]'),
            t_closest = t_forum.closest( vdata.f_closest );
     
      if( version == 5) {
        t_forum.attr('href', '/events');
        t_forum.find( vdata.f_child_posts ).html('<span class="'+ vdata.f_content_class +'">' + count_future + ' à venir</span>');
        t_forum.find( vdata.f_child_lastposts ).html('<span class="'+ vdata.f_content_class +'">Prossimo: ' + nextEvent + '</span>');
      } else {
        t_forum.attr('href', '/events');
        t_closest.find( vdata.f_child_topics ).html('<span class="'+ vdata.f_content_class +'">' + count_past + ' passé' + ((count_past > 1) ? "s" : "") +'</span>');
        t_closest.find( vdata.f_child_posts ).html('<span class="'+ vdata.f_content_class +'">' + count_future + ' à venir</span>');
        t_closest.find( vdata.f_child_lastposts ).html('<span class="'+ vdata.f_content_class +'">Prossimamente: ' + nextEvent + '</span>');
      }
      } else {
        console.log('%c Error : Forum '+ f_id +' non esistente.', 'background: #E54732; color: white; display: block;');
      }
    } else if(data.search('afficher pour le moment') != '-1') {
      console.log('%c Error : Non è ancora stato creato alcun evento', 'background: #E54732; color: white; display: block;');
    }
  }).fail(function() {
    console.log('%c Error : Gli eventi non sono stati attivati. Se sei l'amministratore del forum, controlla le impostazioni.', 'background: #E54732; color: white; display: block;');
  });
});

Quindi individuare la riga 4:
Codice:
    var f_id = 3;
E sostituire 3 con il numero ottenuto in precedenza durante la creazione del forum, ovvero con l'identificativo del forum che servirà da visualizzazione dell'ultimo evento. Nel nostro esempio, questo era il Forum 5.

Note e commenti

  • Questo trucco funziona su tutte le versioni del forum,
  • La posizione viene visualizzata, ovviamente, solo se l'evento lo indica,
  • I vari errori che possono verificarsi vengono visualizzati nella console del browser: eventi non attivati, nessun evento esistente, forum indicato come inesistente, ecc.



Niko
Niko
Moderatore
Moderatore

Sesso : Maschio
Età : 24
Messaggi : 8279
Località : Provincia di Varese

Visualizza il profilo https://www.openstudio.one
Niko è stato ringraziato dall'autore di questo topic.

Visualizza l'argomento precedente Visualizza l'argomento successivo Torna in alto


 
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.