Semantisk HTML med eZ Publish
eZ Publish er et veldig fleksibelt publiseringssystem mht maler og generert kode. Men for å virkelig få på plass finsemantikken i innholdet som produseres gjennom XML-feltene må du justere litt på standardoppsettet.
eZ Publishs XML-format
En av de store styrkene til eZ Publish (heretter eZP) er at innholdet ikke lagres som et bruddstykke av et HTML-dokument. Innholdet lagres heller som eZXML, en XML-dialekt laget av eZ Systems for eZP. De fleste innholdsfelter i eZP bruker denne typen, og innholdet her transformeres til HTML ved hjelp av Smarty-lignende maler når siden skal vises.
Custom Tags
eZXML har støtte for de mest vanlige elementene så som headinger, lenker, lister osv. Men, skal man ha mer detaljert semantikk i dokumentene sine må man ty til eZPs "custom tags". Disse lar deg definere vilkårlige tagger som innholdsforfatterne kan benytte seg av. En custom tag kan være en tag som mapper 1:1 mot en HTML-tag, eller en helt egen sak som viser for eksempel en faktaboks med noe mer kompleks HTML bak. Alt bestemmes av malene.
Hvordan konfigurere?
For å ta i bruk dette må du gjøre noen få konfigurasjonsinngrep. Den første er å definere hvilke tagger som er tillatt. Disse navnene kan være hva som helst, de trenger ikke å ha tilknytning til HTML-standarden eller andre standarder, de er foreløpig kun interne navn. Definisjonene må legges i content.ini(.append(.php)), på et sted som adminen har tilgang til, for eksempel settings/override/content.ini.append:
[CustomTagSettings]
AvailableCustomTags[]=q
AvailableCustomTags[]=blockquote
AvailableCustomTags[]=cite
AvailableCustomTags[]=del
AvailableCustomTags[]=ins
AvailableCustomTags[]=code
AvailableCustomTags[]=dfn
AvailableCustomTags[]=abbr
AvailableCustomTags[]=acronym
AvailableCustomTags[]=span
Merk at selv om alle disse navnene tilfeldigvis er HTML-tagger kunne de ha vært hva som helst. Jeg har inkludert span til slutt fordi span kan være nyttig når du trenger å angi språk på et uttrykk midt i en setning eller lignende uten at du ønsker annet trykk på det.
Videre må det defineres hvorvidt taggene er inline eller blokk-elementer (gjøres under samme CustomTagSettings-seksjon):
IsInline[q]=true
IsInline[blockquote]=false
IsInline[cite]=true
IsInline[del]=true
IsInline[ins]=true
IsInline[code]=true
IsInline[dfn]=true
IsInline[span]=true
IsInline[abbr]=true
IsInline[acronym]=true
Når dette er gjort kan vi opprette en blokk per tag for å gi dem attributter. Fortsatt samme fil:
[q]
CustomAttributes[]
CustomAttributes[]=cite
CustomAttributes[]=title
CustomAttributes[]=classification
CustomAttributes[]=id
CustomAttributes[]=lang
Legg merke til at det ikke finnes noe xml:lang-attributt. Dette kan vi dedusere fra lang-attributtet i templaten, dersom det er XHTML vi bruker.
Malene
Neste skritt er å lage maler for disse taggene. I eXML vil disse taggene lagres som <custom class="q" cite="..." lang="...">...</custom>. Uten at vi trenger å gjøre noe som helst så vil eZP spørre etter en mal content/datatype/view/ezxmltags/<tagnavn>.tpl når den møter på slike.
Alt vi da trenger å gjøre er å legge malene på eksempelvis design/mittdesign/templates/content/datatype/view/ezxmltags/<tag>.tpl. Ønsker du ikke å bruke denne plasseringen kan du lage overrides i override.ini og angi en annen plassering. MatchFile er da content/datatype/.../<tag>.tpl
Siden alle disse malene skal fungere helt likt: oversette en custom-tag til sin tilsvarende HTML-tag, og siden navnet på taggene er helt like kunne vi ha klart oss med en mal for dette. Desverre har ikke jeg vært i stand til å finne dokumentasjon som forteller meg hvordan jeg henter tag-navnet i malen, så jeg har ikke vært i stand til å lage kun én mal. Det jeg heller gjorde var å lage en generell mal som alle de andre inkluderer.
design/mittdesign/templates/content/datatype/view/ezxmltags/custom.tpl:
{def $attr_str=''}
{if not(is_set($attributes))}{def $attributes=hash()}{/if}
{foreach $attributes as $key => $value}
{if $value|trim|ne('')}
{set $attr_str=concat($attr_str, ' ', $key, '="', $value, '"')}
{if $key|eq('lang')}
{set $attr_str=concat($attr_str, ' xml:lang="', $value, '"')}
{/if}
{/if}
{/foreach}
<{$tagname}{$attr_str}>{$content}</{$tagname}>
Denne malen tar som input $tagname, $content og hash-en $attributes. Den brukes fra tag-malene på følgende måte:
design/mittdesign/templates/content/datatype/view/ezxmltags/q.tpl
{include uri='design:content/datatype/view/ezxmltags/custom.tpl'
name='html_q'
tagname='q'
content=$content
attributes=hash('cite', $cite,
'title', $title,
'class', $classification,
'id', $id,
'lang', $lang)}
Editoren/admin
Når dette er gjort kan du bruke taggene fra <?>-knappen i editoren, eller manuelt ved å skrive <custom class="<tagnavn>" [attributter]>...</custom>. Bruker du custom tags ofte vil du etterhvert spare tid på å skrive eZXML selv fremfor å bruke editoren.
Bruker du editoren vil du helt sikkert ha et ønske om å visuelt markere de forskjellige custom taggene. Dette kan du gjøre ved å åpne extension/ezdhtml/design/standard/stylesheets/ezdhtml/editor_classes.css og legge inn stiling av taggene der. Hvordan du gjør det er forklart i toppen av filen.
Voila! Semantisk HTML i alle ledd med eZ Publish (forutsatt at du har laget malene selv).
Kommentarer
bigger penis
(http://www.buypenisenlargement.com)
19. desember, 11:45
<a href=http://www.buypenisenlargement.com>penis enlargement pills</a>
<a href=http://vimax3-4.com>vimax</a>
<a href=http://www.male-sexual-styles.com>penis enlargement</a>
<a href=http://www.vimax-pills.org>Vimax</a> EWE19122010, <a href="http://www.vimax-pills.org">Vimax</a> EWE00Tai90 7567676, <a href="http://vimax3-4.com">vimax</a>, 5345454, <a href="http://www.buypenisenlargement.com">penis enlargement</a>, 0843098 <a href="http://www.buypenisenlargement.com">penis enlargement pills</a>, -04947365 <a href="http://www.buypenisenlargement.com">bigger penis</a>, 098267 <a href="http://penisenlargementkey.com">penis enlargement pills</a> work or not? 893397, <a href="http://www.male-sexual-styles.com">penis enlargement</a>, 873139 <a href="http://adspe.com">download youtube videos</a>, 897926 <a href="http://www.male-sexual-styles.com">penis enlargement pills</a>, 90077092
vimax
(http://vimax3-4.com)
2. januar, 03:48
<a href=http://www.buypenisenlargement.com>penis enlargement pills</a>
<a href=http://vimax3-4.com>vimax</a>
<a href=http://www.male-sexual-styles.com>penis enlargement</a>
<a href=http://www.vimax-pills.org>Vimax</a> EWE19122010, <a href="http://www.vimax-pills.org">Vimax</a> EWE00Tai90 7567676, <a href="http://vimax3-4.com">vimax</a>, 5345454, <a href="http://www.buypenisenlargement.com">penis enlargement</a>, 0843098 <a href="http://www.buypenisenlargement.com">penis enlargement pills</a>, -04947365 <a href="http://www.buypenisenlargement.com">bigger penis</a>, 098267 <a href="http://penisenlargementkey.com">penis enlargement pills</a> work or not? 893397, <a href="http://www.male-sexual-styles.com">penis enlargement</a>, 873139 <a href="http://adspe.com">download youtube videos</a>, 897926 <a href="http://www.male-sexual-styles.com">penis enlargement pills</a>, 90077092
surface encounters
(http://www.surfaceencounterswixom.com/2010/01/surface-encounters-installs-new-granite.html )
12. april, 21:43
surface encounters
(http://www.jumptags.com/surfaceencounters/)
12. april, 22:11
freelancework4u: Logo And Banner Design Work: Hello We need 3 logo designs for our websites Five banners banners with gif anim
<a href=http://www.mixx.com/users/surfaceencounter>surface encounters</a>
pipedseats