Visualizzazione risultati 1 fino 10 di 10
Like Tree2Likes
  • 1 Post By alemoppo
  • 1 Post By frasidipace

Discussione: Checkbox con memorizzazione scelta o localstorage o cookie in wordpress gestito

  1. #1
    preghierafacile non è connesso Utente Blog
    Data registrazione
    14-01-2024
    Messaggi
    6

    Predefinito Checkbox con memorizzazione scelta o localstorage o cookie in wordpress gestito

    Ciao!
    Volevo sapere se posso fare in modo che il valore della scelta dell'utente(NON REGISTRATO) di una checkbox rimanga memorizzato(a lunga scadenza tipo 1 o 2 anni) anche se l'utente esegue il refresh della pagina/articolo o esce dalla pagina/articolo e poi vi rientra. Sia con cookie o se non serve anche in localstore (anche se non so bene cosa si intenda con localstore).

    Nonè proprio una checkbox con valori corti uno sotto l'altro.
    Ogni riga checkbox con valore "Letto" (che sta per testo letto) ha sotto del testo lungo e sopra ad ogni testo andremme la singola checkbox "Letto".

    Oppure devo scegliere se creare un articolo/pagina per ogni songolo testo ed inserire una sola checkbox per articolo.

    Se si potesse eviterei di installare plugins. Se si potesse.

    Qui ho trovato questo per il localstorage ma non so come inserirlo:
    https://codepen.io/kylastoneberg/pen/qweppq

    Il codice a sx funziona, manon so come vada inserito quello a dx.
    Va in fondo all'articolo o attaccato al codice html?
    Una volta soltanto o attaccato ad ogni songola checkbox?
    Ho provato a inserirlo tra <script> e </script> ma o non l'ho fatto bene o non funziona.
    Ogni volta che faccio il refresh la spunta scompare.

    Ho visto anche qui ma non ho capito bene:
    https://forum.it.altervista.org/word...wordpress.html

    Spero possiate aiutarmi!
    Grazie!
    Ultima modifica di preghierafacile : 25-01-2024 alle ore 11.53.04

  2. #2
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,186

    Predefinito

    I plugin non fanno altro che inserire codice, con un plugin avresti circa la stessa cosa ma saresti abbastanza più sicuro circa il funzionamento.

    Il codice che hai indicato sì, va tra <script> e </script>. Però quel codice così non fa quel che vorresti. Ho scritto questo codice (ovviamente molto migliorabile ma può essere una base di partenza):

    Codice HTML:
    <script>
    let PAGINA = "1"; //cambia questo valore per ogni pagina
    
    function save()
    {
      localStorage.setItem("pagina_" + PAGINA, document.getElementById('pagina_' + PAGINA).checked);
    }
    let checked = false;
    if(localStorage.length > 0)
      checked = JSON.parse(localStorage.getItem("pagina_" + PAGINA));
    document.write('<input type="checkbox" id="pagina_'+PAGINA+'" class="box" '+ (checked?'checked':'') +'>Letto</input>');
    window.addEventListener("load", (event) => {
    document.getElementById('pagina_' + PAGINA).addEventListener('change', save); 
    });
    </script>
    Nota che per ogni pagina devi modificare PAGINA = "1" con un valore (o nome) differente.

    È sufficiente inserirlo nel blocco HTML. Detto questo però dovresti conoscere un po' di HTML anche solo per impostare la posizione o la grafica. Se non conosci HTML/CSS, ti consiglierei appunto l'uso di un plugin.

    Ciao!
    Ultima modifica di alemoppo : 25-01-2024 alle ore 20.17.13
    preghierafacile likes this.

  3. #3
    frasidipace non è connesso AlterGuru
    Data registrazione
    07-05-2010
    Messaggi
    2,373

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    I plugin non fanno altro che inserire codice, con un plugin avresti circa la stessa cosa ma saresti abbastanza più sicuro circa il funzionamento.

    Il codice che hai indicato sì, va tra <script> e </script>. Però quel codice così non fa quel che vorresti. Ho scritto questo codice (ovviamente molto migliorabile ma può essere una base di partenza):

    Codice HTML:
    <script>
    let PAGINA = "1"; //cambia questo valore per ogni pagina
    
    function save()
    {
      localStorage.setItem("pagina_" + PAGINA, document.getElementById('pagina_' + PAGINA).checked);
    }
    let checked = false;
    if(localStorage.length > 0)
      checked = JSON.parse(localStorage.getItem("pagina_" + PAGINA));
    document.write('<input type="checkbox" id="pagina_'+PAGINA+'" class="box" '+ (checked?'checked':'') +'>Letto</input>');
    window.addEventListener("load", (event) => {
    document.getElementById('pagina_' + PAGINA).addEventListener('change', save); 
    });
    </script>
    Nota che per ogni pagina devi modificare PAGINA = "1" con un valore (o nome) differente.

    È sufficiente inserirlo nel blocco HTML. Detto questo però dovresti conoscere un po' di HTML anche solo per impostare la posizione o la grafica. Se non conosci HTML/CSS, ti consiglierei appunto l'uso di un plugin.

    Ciao!
    Ciao,
    Wordpress però non ha singole pagine html, per cui va modificato il file relativo al post singolo del tema (es. single.php).
    Per fare ciò occorre creare un tema child, cosa non possibile con temi Altervista, e copiare il file all'interno della cartella del tema child rinominandolo.
    Dopo bisogna individuare nel file il punto in cui viene letto il post ed inserire il tuo codice a cui aggiugnere la lettura dell'id post:

    Codice:
    $post_id=get_the_id();  // Cattura l'id post
    ?>
    <script>
      var PAGINA = <?php echo json_encode($post_id);?>;
    			   
    			   
    
      function save()
      {
         localStorage.setItem("pagina_" + PAGINA, document.getElementById('pagina_' + PAGINA).checked);
      }
      let checked = false;
      if(localStorage.length > 0)
        checked = JSON.parse(localStorage.getItem("pagina_" + PAGINA));
        document.write('<input type="checkbox" id="pagina_'+PAGINA+'" class="box" '+ (checked?'checked':'') +'>Letto</input>');
        window.addEventListener("load", (event) => {
        document.getElementById('pagina_' + PAGINA).addEventListener('change', save); 
      });
    </script>
    Controlla se ti torna tutto.

    Ciao
    Ultima modifica di frasidipace : 26-01-2024 alle ore 01.30.42
    preghierafacile likes this.

  4. #4
    preghierafacile non è connesso Utente Blog
    Data registrazione
    14-01-2024
    Messaggi
    6

    Predefinito

    Grazie a tutti. Quindi non posso farlo dato che utilizzerò il tema Reneè di Altervista whosting gestito? Ma un plugin che fa questo cè già?
    Dato che i moderatori di Blog Starter (gruppo facebook hosting per gestito) consigniano di installare yoast e monsterinsight e al max contact form 7 perché molti plugin e soprattutto quelli non aggiornati "rompono" a lungo andare il sito, come potri fare?
    A me interessa solo che appaia una checkbos appena sotto il titolo dell'ARTICOLO in modo che si veda anche nel testo introduttivo nella pagina elenco articoli di una categoria. Per il css mi importa che ci sia solo il quadrtatino della checkbox e a destra, la scritta "Letto". Poi quando vistato, invece che il classico blu checkbox, appaia questo colore HEX #ac9052
    Non è un problema inserire il codice in ogni articolo con id progressivo.
    Non ho capito dove devo sostituire il numero con pagina.
    anche nella proima riga? no vero? let PAGINA = 1 ?
    Poi in tutti i testi con pagina in MAISCOLO? e pagina mnuscolo no?
    Poi, funziona solo in wordpress hosting con file maanger?
    Poi, se serve un plugin da adattare con gli aggiornamenti di wordpress e del php, potrei oppure chiedere a chi lo conosce cosa modificare, prima di aggiornare wordpress oppure il php.

    Oppure se c'è già un plugin di qualità che viene aggiornato spesso, che fa già questo, ok. Se propro non si può fare o creare un plugin ex novo.

    Questo plugin?
    https://www.advancedcustomfields.com...rces/checkbox/

    Plugin tipo lista to do? mettendo solo una riga nella lista in modo che faccia la stessa funzione?

    A pensarci bene avere più righe per articolo. 3 o 4 checkbox.

    Sarebbe indispensabile avere un tasto che azzeri tutte le checkbox del sito.

    Che ne pensate ragazzi?

    Intanto vi ringrazio per le preziose informazioni!!!

  5. #5
    preghierafacile non è connesso Utente Blog
    Data registrazione
    14-01-2024
    Messaggi
    6

    Predefinito

    A me funziona il primo codice postato qui, quello di alemoppo.
    guardate preghierafacile.altervista.org e fate la prova sulle pagine prova e prova2

    Come mai frasidipace funziona anche senza fare come hai detto?
    Oppure mi sfugge qualcosa?

    PS: non riesco a trovare il codice cdd per cambiare colore alla checkbox vistata.

    Posso avere l'esempio di codice se inserissi 2 checkbox ad esempio LEtto e Studiato? ppoi da 2 a 4 chechbox è la stessa cosa. Non so come inserire nello stesso script 2 checkbox. oppure perché funzionino separatamente devo scrivere 2 script separati?

    Altra domanda. Come far funzionare questo codice anche negli articoli o solo negli articoli?
    Oppure vale per tutti?

    Ultima cosa.
    Sarebbe utile che ci fossi un bottone che azzeri tutte le propre checkbox vistate "Letto" e un altro che cancelli tutte le checkbox vistate "Studiato".

    Così sarebbe perfetto.

    Se proprio non si può, lascerò solo 1 checkbox e dirò agli utenti di eliminare i dati senza il bisogno del bottone. I bottoni servivano solo se inserire più checkbox.

    Grazie infinite!!!!!!!!!
    Ultima modifica di preghierafacile : 26-01-2024 alle ore 13.11.27

  6. #6
    preghierafacile non è connesso Utente Blog
    Data registrazione
    14-01-2024
    Messaggi
    6

    Predefinito

    Ho visto che il codice funziona anche per gli articoli.

  7. #7
    preghierafacile non è connesso Utente Blog
    Data registrazione
    14-01-2024
    Messaggi
    6

    Predefinito

    Ho notato che in vista elenco articoli di na categoria appare solo il testo e non lo script.
    Non c'è niente da fare?

    Se non si può fare nulla mi tocca evitare il tutto.

    Oppure se si può fare solo con plugin, e che si veda la checkbox anche in vista elenco articoli categoria, mi tocca valutare in futuro di far creare un plugin ad hoc se ne varrà la pena. Che ne dite?

    Grazie mille del vostro prezioso aiuto intanto!!!

  8. #8
    frasidipace non è connesso AlterGuru
    Data registrazione
    07-05-2010
    Messaggi
    2,373

    Predefinito

    Salve,
    se ha inserito il codice di alemoppo in un blocco html per ciascun articolo può funzionare, però ogni volta che scriverà un articolo dovrà ricordarsi di inserire questo blocco rilevando manualmente l'id post. Il mio codice, invece, gestiva in automatico la checkbox su tutti gli articoli. Con il tema Altervista ciò non è possiible.
    I plugins che Le hanno suggerito sul gruppo Fb non fanno ciò che Le serve. Ad es. CF7 è un plugin per creare un form di contatto, mentre ACF aggiunge campi personalizzati a pagine/articoli, ma poi occorre scrivere codice per farli visualizzare sul frontend.
    Per far visualizzare la checkbox sulla pagina articoli occorrerebbe intervenire sul file archive.php del tema, ma anche in questo caso occorrerebbe il tema child.
    Non conosco plugins che svolgano questa funzione.

    Saluti

  9. #9
    preghierafacile non è connesso Utente Blog
    Data registrazione
    14-01-2024
    Messaggi
    6

    Predefinito

    Grazie mille!
    A questo punto meglio pensare di creare un file pdf da far stampare agli utenti con i vari possibili diari di lettura e far vistare a mano con un segno di matita e poi cancellare tutto con la gomma.
    Più semplice.
    Comunque grazie per le importanti info che potranno servire o in futuro o ad altre persone.
    Grazie!

  10. #10
    frasidipace non è connesso AlterGuru
    Data registrazione
    07-05-2010
    Messaggi
    2,373

    Predefinito

    Citazione Originalmente inviato da preghierafacile Visualizza messaggio
    Grazie mille!
    A questo punto meglio pensare di creare un file pdf da far stampare agli utenti con i vari possibili diari di lettura e far vistare a mano con un segno di matita e poi cancellare tutto con la gomma.
    Più semplice.
    Adesso però mi spiazza. Avevo inteso che il Suo desiderata era di segnalare all'utente di aver già letto un determinato articolo.
    Se invece serve a Lei come "ricevuta" di lettura, la cosa è completamente diversa. Non può gestire il tutto con un cookie, ma deve memorizzare a DB l'avvenuta lettura del singolo utente.
    Cosa deve fare esattamente?

    Saluti

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •