We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 37123
    • 186 Posts
    Ciao, vorrei realizzare una cosa simile quando mi posiziono su una parola mi appare un tooltip con una spiegazione.
    http://html.it/articoli/esempi/articoli_pro/458/tooltipesempio1.html
    Mi serve perche devo fornire una breve traduzione di alcune parole da friulano ad italiano, giusto per darvi un contesto), vorrei che modx valutasse tutte le parole nel contenuto e, prima di renderizzare la pagina aggiunga in automatico il tooltip con i dati recuperati da una sorta di dizionario (io lo pensavo come una TV di tipo MIGX con "parola"->"significato") .

    Esempio:
    la parola Mandi compare in 34 pagine del sito, è impensabile che l'utente debba in tutte le pagine inserire un codice, una classe o chissà cosa. In questo caso l'utente dovrà semplicemente inserire la parola "mandi" nella TV di tipo "migx" piu o meno cosi
    "mandi"->"ciao"

    Ogni volta che nella pagina compare la parola mandi modx se ne accorge e presenta il tooltip.

    La parte che non mi è chiara è il "backend" io partirei con il creare uno snippet "check_dizionario" che non fa altro che scansionare parola per parola di "content" e confrontarla con ogni posizione dell'array "dizionario". Questo snippet però quando dovrei richiamarlo secondo voi?

    La mia idea è giusta o secondo voi c'e un modo piu semplice? Qualche cosa di pronto?

    Grazie
    • Ciao!

      Secondo me dipende da quante parole hai da integrare con i tooltip, se sono meno di una ventina io farei tutto tramite javascript..
        TilliLab | MODX Ambassador
        website
        • 37123
        • 186 Posts
        Il problema non è tanto per la mia gestione ma per la semplicità di utilizzo da parte del cliente, se deve usare qualche tipo di codice sicuramente non gli andrà a genio. Per quello volevo integrare qualche tipo di plugin.

        So che molti cms hanno la censura, potrebbe essere uno spunto per il mio progetto.
          • 20215
          • 144 Posts
          Ciao zukimania

          potresti dedicare una risorsa (nascosta) specifica con una tv migx per gli inserimenti delle traduzioni e fare uno snippet che funzioni da filtro (Custom Output Filter) che pesca i dati della tv di quella risorsa che saranno in formato json se nn mi sbaglio, quindi dovresti farti le dovute conversioni magari trasformarlo in array, con quello fai il confronto parola per parola con l'$input cioè il content e il replace necessario se trovi la parola che deve fornire il tooltip. Insomma c'è da codare un pochino smiley
            ----------------------------------
            canale irc Italiano #modx server: tophost.azzurra.org
            • 37123
            • 186 Posts
            Si effettivamente potrebbe essere un idea ma comunque devo farmi uno snippet che ripassi l'intero contenuto, di li non si scappa.
              • 37123
              • 186 Posts
              Ecco qui, ho creato uno snippet a cui passo il contenuto su cui eseguire il replace delle parole e l'id della pagina "dizionario" (risorsa non pubblicata, nascosta nel menu in cui c'e la TV di tipo MIGX). Lo snippet mi ritorna lo stesso contenuto con il replace corretto.

              Aggiungo un div con un campo title="" e una specifica classe, poi tramite jquery faccio comparire il tooltip.

              Il codice dello snippet è semplicemente questo

              $page = $modx->getObject('modResource', $id);
              $tv = $page->getTVValue('dizionario');
              $contenitore = $modx->fromJSON($tv);
              foreach($contenitore as $prova){
              $content=str_ireplace($prova['parola'], '<div class="tooltip" title="'.ucfirst($prova['significato']).'"><em>'.$prova['parola'].'</em></div>', $content); 
              }
              return $content;


              Lo richiamo quindi cosi
              [[!traduci? &content='[[*content]]' &id='33']]

              Avrei potuto evitare di inserire l'id nel richiamo ma al momento mi è venuto cosi...
              Chiaramente funziona anche con altri tipi di contenuti, estrapolati attraverso getResourseces o altro

              Grazie per i consigli
              • Ottima soluzione, grazie per la condivisione.

                Solo una curiosità, se lo inserisci in cache lo snippet funziona lo stesso?
                  TilliLab | MODX Ambassador
                  website
                  • 37123
                  • 186 Posts
                  Richiamando
                  [[traduci ? &content='[[*content]]' &id='33']] quindi cachabile non funziona.

                  Come mai la dua domanda? Pensi che possa essere un problema questa cosa? Non penso di avere necessità di rendere cachabile il contenuto ma non si sa mai....

                  • Io sono un po' fissato con la cache...dopo aver avuto alcuni siti che mi facevano impazzire per le prestazioni e le risorse del server...

                    In generale direi che dipende da quante risorse hai nel tuo progetto, da quanto sono lunghe e quanti elementi ci sono nel dizionario.
                    Onestamente non so valutare che impatto potrebbe avere il tuo snippet, se le risorse non sono lunghe non credo ci siano problemi smiley
                      TilliLab | MODX Ambassador
                      website
                      • 37123
                      • 186 Posts
                      Direi che le parole nel dizionario potrebbero esser meno di 100 a regime e le pagine hanno una lunghezza piuttosto scarsa, se sono 2000 parole è tanto. Non credo di aver problemi di prestazioni.
                      Però come mai questa cosa non funziona cachabile?