Mostrare i prossimi eventi sull'indice del forum

Tutorial Mostrare i prossimi eventi sull'indice del forum

Messaggio Da Niko Sab 20 Feb 2021 - 22:14

Mostrare i prossimi eventi sull'indice del forum


Definizione

Il seguente tutorial ti consente di pubblicare i prossimi eventi nel tuo indice del forum. Funziona su tutte le versioni del forum (versione mobile inclusa) e richiede l'attivazione preventiva del sistema degli eventi.

Mostrare i prossimi eventi sull'indice del forum Events10

Creazione di un 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:
Mostrare 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.

Mostrare i prossimi eventi sull'indice del forum Events12

Creazione di un codice Javascript

Pannello di amministrazione ► Moduli ► HTML e JAVASCRIPT - Gestione del codice JavaScript
Assicurati che la gestione dei codici Javascript sia attiva , 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 + ' Futuro</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 + ' Passato' + ((count_past > 1) ? "s" : "") +'</span>');
        t_closest.find( vdata.f_child_posts ).html('<span class="'+ vdata.f_content_class +'">' + count_future + ' Futuro</span>');
        t_closest.find( vdata.f_child_lastposts ).html('<span class="'+ vdata.f_content_class +'">Prossimo: ' + nextEvent + '</span>');
      }
      } else {
        console.log('%c Error : Forum '+ f_id +' doesn\'t exist.', 'background: #E54732; color: white; display: block;');
      }
    } else if(data.search('afficher pour le moment') != '-1') {
      console.log('%c Error : There is no event created yet.', 'background: #E54732; color: white; display: block;');
    }
  }).fail(function() {
    console.log('%c Error : The events aren\'t activated. If you are the forum administrator, please check in your administration panel.', '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, cioè con l'identificativo del forum che servirà da visualizzazione dell'ultimo evento. Nel nostro esempio, questo era Forum 5.

Note

  • 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à : 28
Messaggi : 9576
Località : Provincia di Varese

https://www.fmcodes.net/
Niko è stato ringraziato dall'autore di questo topic.

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

- Argomenti simili

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