Publication structurée

De OviWiki
Révision de 18 juillet 2016 à 08:58 par Gregory.mebarki (discussion | contributions) (Version éditeur de plan de site)

Aller à : navigation, rechercher

Containers OVML

OCPublication

Liste des publications

<source lang="ovml"> <OCPublication [node=""] [structure="" [publication=""]] [filter=""] [limit=""] [order=""] [orderby=""]>

     <OVPublicationId>
     <OVPublication...>

</OCPublication> </source>


Paramètres

node
Id du noeud dans le plan du site. Si node n'est pas renseigné, structure devra être renseigné
structure
nom de la structure de donnés, si structure n'est pas renseigné, node devra être renseigné
publication
Id numérique de la publication ou liste d'id séparés par des virgules
path (optionnel)
requête XPath à utiliser pour récupérer la structure, la requête doit retourner un noeud de type <element name="nom de la structure">. Exemple de requête pour que les publications affichées soient les sous-publications définies sous "slide" dans la structure : .//xs:element[@name='slide']. Par défaut, le container va utiliser l'élément à la racine.
filter (optionnel)
Les filtres doivent êtes séparés par des virgules, le nom du champ et la valeur doivent êtres séparés par un =. Ex. type=Courrier,deleted=0. Les noms de champ à utiliser sont ceux de la structure.
limit (optionnel)
 ???
order (optionnel)
asc ou desc
orderby (optionnel)
l'ordre par défaut est l'ordre manuel des sous publication dans le cas ou path est défini, ou l'ordre des id si le champ publication contient plusieurs id séparés par des virgules.

Variables

Variable Valeur
OVPublicationSitemapNodeId Id du noeud du plan du site fourni par ovidentia (toujours présent)
OVPublicationSitemapCustomNodeId Id du premier noeud ayant pour cible cette publication dans le plan du site défini dans les options du site (peut être vide si la publication n'est pas dans sitemap_editor).
PublicationSitemapCustomNodeText Nom du premier noeud ayant pour cible cette publication dans le plan du site défini dans les options du site (peut être vide si la publication n'est pas dans sitemap_editor).
PublicationSitemapCustomNodeDescription Description du premier noeud ayant pour cible cette publication dans le plan du site défini dans les options du site (peut être vide si la publication n'est pas dans sitemap_editor).
PublicationSitemapUrl Url réécrite permettant d'accéder à la publication.
... Autant de variables que de champs dans la structure Il faut utiliser une majuscule pour le premier caractère, example: title dans le fichier xsd deviens OVTitle dans l'ovml

Fonctions OVML

OFDownloadUrl

Créer une url de téléchargement.

<source lang="ovml"> <OFDownloadUrl path="localPath" permanent="1|0" saveas=""> </source>

Paramètres

path
chemin local du fichier tel qu'il est proposé par le container OCPublication par exemple.
permanent (optionnel)
0 (par défaut) : l'identifiant unique change à chaque rafraîchissement de la page, pour une sécurité plus forte
1 : L'identifiant unique reste toujours le même pour une url locale donnée, le lien peut être bookmarké ou indexé par les moteurs de recherche (préférable pour les url publiques)
saveas
Enregistrer le résultat dans une variable OVML

OFGetPublicationId

Pour obtenir l'id numérique d'une publication à partir d'un noeud du plan du site.

Ancien nom de la fonction: OFPublicationNode

<source lang="ovml"> <OFGetPublicationId [node=""] [saveas=""] [all="0"]> </source>


Paramètres

node (optionnel)
Par défault le noeud de la page en cours sera utilisé
all (optionnel)
0 (par défaut) : seulement la publication
1 : la publication associée au nœud et toutes les publications associées au nœuds en dessous.
saveas (optionnel)
Enregistrer le résultat dans une variable ovml


Exemple d'intégration des structures

Les pré-requis

La publication structurée est fonctionnelle via le système des portlets et/ou l'éditeur de plan de site. Il est indispensable qu' Ovidentia soit à jour et que les modules le soient également. Afin de s'assurer d'être à jour, il est souhaitable d'installer le module storeclient. Ce dernier facilite le téléchargement, l'installation et la mise à jour des modules et d' Ovidentia directement depuis storeclient.

- Module Publication (à jour)

- Module Editlinks (à jour) => Attribuer les droits nécessaires (Administrateurs ou utilisateurs enregistrés)

- Module Porlets (à jour)

- Module Widgets

- Module LibOrm

Mise en place de la structure des dossiers dans le skin

Voici un exemple de dossiers et de fichiers nécessaires à la mise en place de la publication structurée. Par convention, nous nommerons de la même manière le fichier ovml et le xsd. exemple : nom_du_theme_foo.ovml et nom_du_theme_foo.xsd

- A la racine du thème, un dossier structures répertoriant les fichiers xsd nécessaires pour la structure des données.

- Dans le dossier ovml, les fichiers "ovml" nécessaires pour le rendu des données.

Capture.png


Version portlet

Ci-dessous un exemple de fichier Ovml permettant la mise à disposition d'une publication structurée de type Wysiwyg dans un portlet. Il s'agit ici du fichier 'theme_sw_wysiwyg.ovml' que nous avons vu plus haut.

Dans un portlet <OVStructure> saura aller chercher la structure "theme_sw_wysiwyg". Idem pour <OVPublication>.

Ovml.png


Ci-dessous le fichier 'theme_sw_wysiwyg.xsd' intégrant la structure XSD de la publication de type Wysiwyg.

Xsd.png


Lorsque nous ajouterons un portlet Publication, un fenêtre nous proposera l'ajout de la structure Wysiwyg

Portlet-pub-2.png

Version éditeur de plan de site

En passant par l’éditeur, nous observons quelques différences pour le conteneur publication. Le nom de la structure devra être renseignée et pou cibler la publication nous pouvons utiliser la fonction <OFGetPublicationId>. le ciblage se fera à l'aide l'attribut node. L'option all="1" ou "0" permettra de savoir si nous ciblons que la publication en question ou toutes les publications à partir de celle-ci.

CaptureediteurOvml.PNG


Dans l'éditeur de plan de site, il est important de gérer les droits sur la publication, il ne sera pas possible sinon d'ajouter un sous noeud de type "Wysiwyg". En effet,

Captureplande-site-niv1.jpg

<OFPutVar name="babSiteName"> <OFPutVar name="babSkin"> <OFGetPublicationId node="smed_5788d957d3665" saveas="PublicationIds" all="1">

<OCPublication structure="theme_sw_wysiwyg" publication="<OVPublicationIds>" root> <span class="publication-dynamicrecord-<OVPublicationStructure>-<OVPublicationId>"></span>

<OVPublicationTitre>

<OCIfNotEqual expr1="<OVPublicationBorderwysiwyg>" expr2="Sans bordure">

</OCIfNotEqual>

<OVPublicationContenu>

</OCPublication root>