Impostare un forum come preferito


Tutorial Impostare un forum come preferito

Messaggio Da Niko Dom 17 Gen 2021 - 16:06

Impostare un forum come preferito


Definizione

Con questo codice, i membri avranno la possibilità impostare alcuni forum come preferiti; I forum contrassegnati vengono posizionati in cima all'elenco dei forum, quindi puoi accedere facilmente ai tuoi forum preferiti.

Caratteristiche
  • Usabilità! Puoi aggiungere i forum a Speciali passando con il mouse sul titolo del forum e facendo clic sulla stella accanto ad esso. Puoi rimuovere da Speciali i forum nello stesso modo.
  • Accesso facile! Tutti i forum che hai contrassegnato come speciali saranno disponibili all'inizio dell'elenco dei forum.
  • Modificabilità! Personalizza questo plugin modificando il testo, le icone, ecc ..!


Impostare un forum come preferito Star10

Installazione del codice Javascript

Le pagine JavaScript attive nel tuo forum ti consentono di inserire script e jQuery per personalizzare il tuo forum, tuttavia è importante sapere che qualsiasi script trovato su Internet non finisce per apparire nei forum.

Non dobbiamo fare altro che andare verso Pannello di amministrazione ► Moduli ► HTML & Javascript ► Gestione del codice Javascript, assicurarci che la gestione dei codici javascript sia attiva e crearne uno nuovo con queste impostazioni:
  • Titolo: a tua scelta
  • Dove: in tutte le pagine
  • Codice:
    Codice:
    $(function() {
      if (/\/c\d+-/.test(window.location.href)) return; // return if category
     
      // automatically detects the version
      var version = $('.bodylinewidth')[0] ? 0 : document.getElementById('wrap') ? 1 : $('div.pun')[0] ? 2 : document.getElementById('ipbwrapper') ? 3 : document.getElementById('fa_edge') ? 4 : 'badapple';
     
      // error notifications
      if (version == 'badapple' || !window.JSON || !window.localStorage) {
        var errString = 'The plugin "fa_starred" could not be executed because : ';
     
        if (version == 'badapple') errString += '\nYour forum version is not supported.';
        if (!window.JSON) errString += '\nJSON is not supported by your browser';
        if (!window.localStorage) errString += '\nThe Storage API is not support by your browser.';
     
        window.console && console.error ? console.error(errString) : alert(errString);
        return;
      }
     
      // get fontawesome if unavailable
      if (!$('link[href$="font-awesome.min.css"]')[0]) {
        document.getElementsByTagName('HEAD')[0].insertAdjacentHTML('beforeend', '<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.0/css/font-awesome.min.css" />');
      }
     
      window.fa_starred = {
        version : version, // forum version
        forums : localStorage.fa_starred_forums ? JSON.parse(localStorage.fa_starred_forums) : null,
     
        // language settings
        lang : {
            star : 'Segna come preferito',
          unstar : 'Rimuovi dai preferiti',
          starred : 'Forum preferiti'
        },
     
        icon : {
            star : '',
          unstar : ''
        },
     
        // selectors
        select : {
          content : version ? document.getElementById('main-content') : $('#content-container td:has(> img[height="5"])')[0],
          category : ['.forumline:has(.secondarytitle)', '.forabg', '.main:has(.tcr) .main-content', '.borderwrap:has(.index-box)', '.forum-category'][version],
          forum : 'a.' + (version ? 'forumtitle' : 'forumlink'),
          row : version == 1 ? 'li' : version == 4 ? '.forum-block' : 'tr'
        },
     
        // move the selected forum to the "starred" category
        star : function(that, id, startup) {
          if (!fa_starred.forums) fa_starred.forums = {};
          if (!fa_starred.board) fa_starred.createStarBoard();
     
          if (!fa_starred.forums[id]) {
            // clone the row and add it to the star board
            var clone = $(that).closest(fa_starred.select.row)[0].cloneNode(true),
                rows = $(that).closest(fa_starred.select.row).parent().find(fa_starred.select.row);
     
            // update the star attributes for the clone
            $('.fa_star', clone).attr({
              'onclick' : 'fa_starred.unstar(this, ' + id + '); return false',
              'class' : 'fa_unstar',
              'title' : fa_starred.lang.unstar
            }).html('<i class="fa">' + fa_starred.icon.unstar + '</i>');
     
            fa_starred.list.appendChild(clone); // append the clone to the starred category
     
            $(that).closest(fa_starred.select.row)[0].style.display = 'none'; // hide the original row
     
            // check if all forums are hidden for this category
            for (var i = 0, j = rows.length, k = 0; i < j; i++) {
              if (/none/.test(rows[i].style.display)) k++;
            }
     
            // hide the category if all forums are hidden
            if (i == k) {
              $(that).closest(fa_starred.select.category)[0].className += ' fa_star_hidden';
            }
     
            // jump to the star board if it's out of sight
            if (!startup && document.getElementById('fa_star_board').getBoundingClientRect().top < 0) {
              window.location.hash = '';
              window.location.hash = '#fa_star_board';
            }
     
            // update storage
            fa_starred.forums[id] = 1;
            localStorage.fa_starred_forums = JSON.stringify(fa_starred.forums);
          }
     
        },
     
        // unstar the selected forum
        unstar : function (that, id) {
          var forum, catg, i = 0, j;
     
          fa_starred.list.removeChild($(that).closest(fa_starred.select.row)[0]); // remove cloned row
     
          // update variables
          forum = $(fa_starred.select.forum + '[href^="/f' + id + '-"]')[0]; // original forum
          catg = $(forum).closest(fa_starred.select.category)[0]; // original category
     
          $(forum).closest(fa_starred.select.row)[0].style.display = ''; // show the original forum's row
     
          // show the category if all forums were hidden
          if (/fa_star_hidden/.test(catg.className)) {
            catg.className = catg.className.replace(/fa_star_hidden/, '');
          }
     
          // delete the starred forum and check if there are anymore stars
          delete fa_starred.forums[id];
          for (j in fa_starred.forums) {
            if (fa_starred.forums[j]) i++;
          }
     
          // update storage
          if (i) {
            localStorage.fa_starred_forums = JSON.stringify(fa_starred.forums);
          } else {
            fa_starred.forums = null;
            localStorage.removeItem('fa_starred_forums');
     
            // remove nodes
            if (version == 2) {
              fa_starred.board.parentNode.removeChild(fa_starred.board.previousSibling); // remove header for punbb
            }
            fa_starred.board.parentNode.removeChild(fa_starred.board);
     
            // delete node references
            delete fa_starred.board;
            delete fa_starred.list;
          }
     
        },
     
        // create the "starred" category
        createStarBoard : function() {
          var catg = $(fa_starred.select.category, fa_starred.select.content)[0],
              board = catg ? catg.cloneNode(true) : null,
              rows = $(fa_starred.select.row, board);
       
          if (!catg) return;
     
          board.id = 'fa_star_board';
          board.style.display = '';
     
          if (version != 2) {
            board.getElementsByTagName('H2')[0].innerHTML = fa_starred.lang.starred; // change category title
          }
     
          // find forum list and remove exisiting rows in the clone
          fa_starred.list = rows[0].parentNode;
          rows.remove();
     
          // punbb insertion method
          if (version == 2) {
            var head = catg.previousSibling.cloneNode(true);
            head.getElementsByTagName('H2')[0].innerHTML = fa_starred.lang.starred;
     
            catg.parentNode.insertBefore(board, catg.previousSibling);
            board.parentNode.insertBefore(head, board);
          } else {
            catg.parentNode.insertBefore(board, catg); // default insertion
          }
     
          fa_starred.board = board;
        }
      };
     
      fa_starred.select.row += ':has(' + fa_starred.select.forum + ')'; // update row selector
     
      // general startup
      var a = $(fa_starred.select.forum, fa_starred.select.content),
          i = 0,
          j = a.length,
          k,
          id;
     
      // setup star board and reset forum states if starred
      if (fa_starred.forums) {
        if (!fa_starred.board) fa_starred.createStarBoard();
        for (k in fa_starred.forums) {
          fa_starred.forums[k] = 0;
        }
      }
     
      // setup stars and starred forums
      for (; i < j; i++) {
        id = a[i].href.replace(/.*?\/f(\d+).*/, '$1');
     
        a[i].insertAdjacentHTML('afterend', '<a href="#" class="fa_star" onclick="fa_starred.star(this, ' + id + '); return false;" title="' + fa_starred.lang.star + '"><i class="fa">' + fa_starred.icon.unstar + '</i></a>');
     
        if (fa_starred.forums) {
          for (k in fa_starred.forums) {
            if (k == id) {
              fa_starred.star(a[i], id, true);
            }
          }
        }
      }
     
      document.getElementsByTagName('HEAD')[0].insertAdjacentHTML('beforeend', '<style type="text/css">a.fa_star,a.fa_unstar{color:#999!important;font-size:16px;vertical-align:-2px;margin-left:3px;opacity:0}a.fa_star:hover,a.fa_unstar,li:hover a.fa_star,tr:hover a.fa_star{opacity:1}a.fa_star i,a.fa_unstar i{position:relative}a.fa_star i:hover:after,a.fa_unstar i:after{content:"' + fa_starred.icon.star + '";position:absolute;left:0;bottom:0}a.fa_unstar i:hover:after{content:""}.fa_star_hidden {display:none!important}</style>');
    });


Quando hai finito, salva lo script e il plugin verrà installato! Vai al tuo forum e passa il mouse su un forum, così facendo dovrebbe visualizzare una stella. Facendo clic su questa stella, il forum verrà aggiunto in cima all'elenco in modo da potervi accedere facilmente. Puoi rimuovere i forum da Speciali e rimuoverli dall'elenco degli Speciali facendo clic sulla stella accanto al titolo del forum.

Se desideri apportare modifiche a questo plugin, consulta la sezione successiva.

Personalizzazione

Di seguito sono riportate le modifiche che possono essere apportate a questo plugin.

Lingua

Se vuoi cambiare la formulazione o tradurre i testi, trova l' oggetto lang nello script e modifica i testi come preferisci.
Codice:
    lang : {
        star : 'Segna come preferito',
      unstar : 'Rimuovi dai preferiti',
      starred : 'Forum preferiti'
    },

L'icona della stella

Se vuoi cambiare l'icona della stella in qualcos'altro, trova l' oggetto icona nello script.
Per impostazione predefinita utilizza le icone FontAwesome . Tuttavia, puoi anche utilizzare immagini HTML se lo desideri.
Codice:
    icon : {
        star : '',
      unstar : ''
    },

Il tema

Se vuoi cambiare il colore delle icone delle stelle, trova questo foglio di stile nella parte inferiore dello script e cambia questo colore #999
Codice:
document.getElementsByTagName('HEAD')[0].insertAdjacentHTML('beforeend', '<style type="text/css">a.fa_star,a.fa_unstar{color:#999!important;font-size:16px;vertical-align:-2px;margin-left:3px;opacity:0}a.fa_star:hover,a.fa_unstar,li:hover a.fa_star,tr:hover a.fa_star{opacity:1}a.fa_star i,a.fa_unstar i{position:relative}a.fa_star i:hover:after,a.fa_unstar i:after{content:"' + fa_starred.icon.star + '";position:absolute;left:0;bottom:0}a.fa_unstar i:hover:after{content:""}.fa_star_hidden {display:none!important}</style>');
Puoi anche modificare la dimensione del carattere e altri attributi.

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.