2013-01-02 10 views
11

Sto provando a creare un'estensione della GUI in Tridion dove inserisco uno specifico html nell'RTF quando si fa clic su un pulsante .... Ho la barra degli strumenti pulsante e popup per informare l'utente. Ma quando faccio clic su OK su popup quando inserisco l'HTML "</div > < div class = 'Pagina' >", inserisce "< div class = 'Pagina'/>".Tridion - Inserisci HTML (elementi letterali e parziali) in un RTF

Ho scoperto che il metodo applyHTML è quello che modifica ciò che è stato inserito. C'è qualche altra funzione/metodo che inserisce esattamente ciò che indico, voglio dire html non valido con tag di chiusura mancanti o tag aperti?

+0

Non sono sicuro di quale sia la funzione, ma immagino che sia impossibile ignorare la funzione di riordino HTML poiché il contenuto deve essere ben formato XHTML. Se riesci a spiegare cosa stai cercando di ottenere, forse una soluzione più adeguata può essere raggiunta. – johnwinter

risposta

6

Se è necessario creare un markup non valido, considerare un campo di testo normale. Non sei sicuro di quanto questo cambierebbe l'estensione e il modello di contenuti esistenti, ma puoi inserire qualsiasi cosa in un campo di testo semplice, incluso quello che sembra essere una sorta di "divisione" o di un segnaposto divisorio.

</div><div class='Page'>

Per mantenere la funzionalità rich text e seguire alcune pratiche tipiche Tridion, considerano una delle seguenti.

Completa tutte le modifiche di markup in una volta

Assumendo che il margine di profitto finale avranno un open <div> e chiusura </div>, considerando rendendo l'estensione avvolgere un intero set di rich text selezionato. Nel processo e prima di aggiornare il componente, consentire all'autore di selezionare la posizione della "divisione" e salvare l'intero aggiornamento sull'RTF.

Crea "split" con schemi incorporati e il codice del modello

campi schema incorporato sono un modo molto più facile dividere contenuti. Gli autori creano una nuova serie di campi incorporati e il codice del modello può modificarlo in schede, paragrafi o quali potrebbero essere le pagine (impaginazione?) Nel tuo caso.

A "Paragraph" embedded schema can handle this use case, come ho capito.

<!-- TemplateBeginRepeat name="Component.Fields.Paragraph" --> 
<div class='Page'> 
<!-- author-entered content --> 
</div> 
<!-- TemplateEndRepeat --> 

Questo creerà la </div><div class='Page'> in-tra gruppi di campi incorporati. Ti consente anche di cambiare classe e tag in futuro senza modifiche alle estensioni.

Inserire non-HTML "i campi unione" invece

Vedere Opzioni su un post che ho scritto su custom tags in rich text fields, che includono:

  • classi CSS in Esplora Content Manager, come class="page-split". Puoi persino modellare questo aspetto in un certo modo (ad esempio visivamente come <hr/>), quindi metterlo a modello con quello che ti serve nel markup finale.
  • campo unione tag segnaposto, come "[[end-page]][[start-page]"
  • nodi personalizzati HTML5, se si deve

è possibile inserire qualsiasi di questi con un'estensione, facoltativamente styling per guardare un certo modo nel CME.

Mi piace dare agli autori modi più semplici di inserire funzionalità nei campi rich text, ma il trucco con l'inserimento di HTML specifico, in particolare HTML non valido, nei componenti sta codificando nel dettaglio questa funzionalità nel contenuto. Ti imbatterai in problemi con la migrazione e le modifiche al design.

Considera di trarre vantaggio da come Tridion separa il design dal contenuto.

+0

Hey Alvin, grazie a un uomo di gruppo ... Ci hai risparmiato un sacco di ricerche e lavoro ... Hai ragione, stiamo cercando di realizzare l'impaginazione. Questo è il modo in cui l'ho fatto ... Ho usato un tag segnaposto [PaginateHere] in applyHTML. E poi ha fatto un getSource(). Nel testo restituito ho sostituito i tag con l'HTML non valido. E poi ha fatto un setSource(). Grazie ancora! –

+0

Buono a sapersi. Mi piace l'opzione "Paginate qui" (mi ricorda la funzione 'more' di Blogger). L'alternativa sarebbe il campo dello schema incorporato, soprattutto perché sono le "pagine" oggi, ma forse le schede, le aree swipe-able o qualche altro approccio di navigazione successivo. L'autore premeva il pulsante "+" fuori dalla scatola per separare il contenuto. Ad ogni modo, puoi anche _lasciare il segnaposto in RTF_ e cambiarlo con i modelli. –

0

Presumibilmente quando si dice: </div><div class='Page'>, intendi <div class='Page'></div>. Se è così, a meno che non sia possibile controllare direttamente il riordino XML, l'unico approccio rimanente (IMO) è assicurarsi che il div abbia qualche contenuto. Il modo più comune per farlo è inserire uno spazio senza interruzioni.

<div class='Page'>&#160;</div>