mantenere i contenuti generati dagli utenti dalla rottura del layout?

Ho un sito che racchiude alcuni contenuti generati dagli utenti, e voglio essere in grado di separare il markup per il layout e il markup dal contenuto generato dall’utente, in modo che il contenuto di ug non possa rompere il layout del sito.

Il contenuto generato dall’utente è affidabile, poiché proviene da un gruppo noto di utenti sulla mia rete, ma è consentito solo un piccolo sottoinsieme di tag html (p, ul / ol / li, em, strong e un altro paio ). Tuttavia, non è garantito che i contenuti generati dagli utenti siano ben formati e abbiamo avuto alcune istanze di contenuti generati dall’utente malformati che hanno infranto il layout del sito.

Stiamo lavorando con i nostri utenti per mantenere il contenuto ben formato, ma nel frattempo sto cercando di trovare un buon modo per separare il contenuto dal layout. Ho esaminato gli spazi dei nomi, ma non sono riuscito a trovare una buona documentazione sul supporto CSS per gli spazi dei nomi incorporati.

Qualcuno ha qualche buona idea?

MODIFICARE

Ho visto alcuni suggerimenti davvero buoni qui, ma probabilmente dovrei chiarire che non ho assolutamente alcun controllo sul meccanismo di input che usano gli utenti. Inseriscono il contenuto in un unico sistema e la mia pagina utilizza l’API di quel sistema per estrarre il contenuto da esso. Quel sistema sta usando TinyMCE, ma come ho detto, stiamo ancora ottenendo dei contenuti malformati.

    • Forse eccessivo, ma HTML Tidy potrebbe aiutare se puoi usarlo.

    • Usa un WYSIWYG come TinyMCE o CKEditor che ha incorporato metodi di pulizia.

    Il suggerimento di Robert Koritnik di usare il markdown sembra geniale, specialmente considerando che si accettano solo pochi e innocui tag di formattazione.

    Non penso che ci sia qualcosa che puoi fare con i CSS per impedire che i layout si rompano a causa di tag HTML aperti, quindi probabilmente dimenticherei quell’idea.

    Perché non usare il markdown

    Se i tuoi utenti sono in HTML literate o persone che sanno cogliere il concetto di syntax di markdown, ti suggerisco di andare con quello. Stackoverflow funziona alla grande con esso. Non riesco a immaginare di avere un solito editor ricco su Stackoverflow. Gli editor di Markdown sono molto più semplici e veloci da usare e offrono capacità di formattazione sufficienti per la maggior parte delle situazioni. Se hai bisogno di alcune funzionalità aggiuntive speciali puoi sempre aggiungerle, ma per i principianti le funzionalità della scatola saranno sufficienti.

    Vista in tempo reale per auto-convalida

    Ma non dimenticare di includere una visione in tempo reale di ciò che gli utenti stanno scrivendo. La convalida del sé fa miracoli in modo che correggano i propri errori prima di pubblicare i dati.

    Invece di analizzare il risultato o forzare l’utente a utilizzare un formato strutturato, è sufficiente visualizzare il contenuto all’interno di un iframe:

      

    Ho costruito sistemi CMS personalizzati esclusivamente per diversi anni e ho sempre avuto grande fortuna con una combinazione di un WYSIWYG di qualità, una validazione avanzata del front-end e una validazione del back-end inarrestabile.

    Mi rivolgo sempre a CKEditor perché è l’unico editor di front-end in grado di gestire l’output di Microsoft Word sul front-end … è un must nei miei libri. Certo, altri hanno una pasta dalla soluzione di parole, ma buona fortuna che gli utenti lo usino. In realtà ho avuto un sovraccarico del client un inserimento db grazie a Microsoft Word che non è stato rimosso in Tiny. L’HTML tidy è un’ottima soluzione per ripulire le cose prima della convalida sul back-end.

    CK ha modelli e classi incorporati, quindi li ho usati per aiutare i miei utenti a formattare senza esagerare. Sul back-end ho controllato per assicurarmi che non avessero provato nessun business divertente con i CSS, ma non era mai una preoccupazione per quel gruppo di utenti. Offri loro caratteristiche (sicure) sufficienti e non dovranno mai fare il ladro.