Outils pour utilisateurs

Outils du site


Panneau latéral

devguide:howto:importdefaultstructure

Importer une structure front

Dans l'exemple ci-dessous, nous partons sur la base de notre module ''recipes''(télécharger).

Parfois on souhaite pouvoir initialiser les pages et la structure minimale nécessaire au fonctionnement d'un module pour un site très rapidement. Il est possible de passer par une mécanique d'import des pages par script XML.

Objectifs :
Sur la base de notre module recipes nous allons créer un fichier XML pour importer les éléments suivants :

  • une rubrique “Recettes” dans le site par défaut
  • une page “Liste des recettes”, y placer le bloc de détail des listes et positionner le tag contextual_website_website_modules_recipes-list sur la page
  • une page “Détail d'une recette”, y placer le bloc de détail d'une recette, cacher la page dans le plan du site et positionner le tag contextual_website_website_modules_recipes-detail sur la page
  • l'entrée de menu conduisant à la page d'acceuil de la rubrique
  • les traductions de le rubrique et des pages

Définitions

Nous allons créer le fichier recipes/setup/defaultStructure.xml qui contiendra nos définitions XML. Nous initialisons ce fichier avec le binding du module website afin que les éléments de type site, rubrique, page et menu soient reconnus, nous y précisons également la cible de l'import, à savoir le site déclaré comme site par défaut :

<?xml version="1.0" encoding="UTF-8"?>
<script>
	<binding fileName="modules/website/persistentdocument/import/website_binding.xml" />

	<website byTag="default_modules_website_default-website">
	</website>
</script>

Rubrique "Recettes"

Nous créons un noeud topic nous y affectons un label et un id qui sera utilisé pour permettre de le retrouver à d'autres endroits du script :

	<topic byLabel="Recettes" id="recipesTopic">
	</topic>

Pages de liste et de détail

Nous créons un noeud page pour chacune des pages. Nous affectons les id aux pages pour les retrouver dans le script d'import, nous définissons leur tag (byTag), puis nous y insérons ensuite le contenu, pour la zone de saisie content-block. A noter que nous configurons le paramètre nbRecipesPerPage à 5 pour le bloc de liste des recettes :

	<page byTag="contextual_website_website_modules_recipes-list" id="recipesList" 
		template-attr="templateHome" isIndexPage="true" label="Liste des recettes"  >
		<changecontent for="content-block">
			<changeblock type="modules_recipes_Recipelist" __nbRecipesPerPage="5" />			
		</changecontent>
	</page>			
	<page byTag="contextual_website_website_modules_recipes_page-detail" id="recipeDetail" 
		template-attr="templateHome" label="Détail d'une recette" navigationVisibility="hidden" >
		<changecontent for="content-block">
			<changeblock type="modules_recipes_Recipe" />
		</changecontent>
	</page>

Entrée de menu

Nous insérons dans le menu indiqué comme étant le menu principal (tag contextual_website_website_menu-main) et nous y ajoutons la page sur laquelle nous avons définit l'id recipesList :

	<menus>
		<menu byTag="contextual_website_website_menu-main">
			<menuitempage pageid="recipesList" />
		</menu>
	</menus>

Traductions

Nous ajoutons un noeud i18n par traduction et nous définissons la langue de la traduction en lui affectant l'attribut lang. Pour retrouver les éléments auxquels se rapportent les traductions, nous utilisons l'attribut byRefid valant l'id de l'élément auquel se rapporte la traduction. Il n'est utile de préciser que les valeur localisées du document et les paramètres de bloc (on constate qu'il n'y a pas de paramètre pour le bloc de liste il sera donc configurer selon les valeurs par défaut du bloc) :

	<i18n lang="en">
		<topic byRefid="recipesTopic" label="Recipes">
			<page  byRefid="recipesList" label="Recipes list"  >
				<changecontent for="content-block">
					<changeblock type="modules_recipes_Recipelist" />			
				</changecontent>
			</page>			
			<page byRefid="recipeDetail" label="Recipe detail" >
				<changecontent for="content-block">
					<changeblock type="modules_recipes_Recipe" />
				</changecontent>
			</page>
		</topic>
	</i18n>

Fichier complet

Voici ce à quoi devrait ressembler votre fichier XML d'import

<?xml version="1.0" encoding="UTF-8"?>
<script>
	<binding fileName="modules/website/persistentdocument/import/website_binding.xml" />

	<website byTag="default_modules_website_default-website">
		<topic byLabel="Recettes" id="recipesTopic">
			<page byTag="contextual_website_website_modules_recipes-list" id="recipesList"
				template-attr="templateHome" isIndexPage="true" label="Liste des recettes"  >
				<changecontent for="content-block">
					<changeblock type="modules_recipes_Recipelist" __nbRecipesPerPage="5" />			
				</changecontent>
			</page>			
			<page byTag="contextual_website_website_modules_recipes_page-detail" id="recipeDetail"
				template-attr="templateHome" label="Détail d'une recette" navigationVisibility="hidden" >
				<changecontent for="content-block">
					<changeblock type="modules_recipes_Recipe" />
				</changecontent>
			</page>
		</topic>
		<i18n lang="en">
			<topic byRefid="recipesTopic" label="Recipes">
				<page  byRefid="recipesList" label="Recipes list"  >
					<changecontent for="content-block">
						<changeblock type="modules_recipes_Recipelist" />			
					</changecontent>
				</page>			
				<page byRefid="recipeDetail" label="Recipe detail" >
					<changecontent for="content-block">
						<changeblock type="modules_recipes_Recipe" />
					</changecontent>
				</page>
			</topic>
		</i18n>
		
		<menus>
			<menu byTag="contextual_website_website_menu-main">
				<menuitempage pageid="recipesList" />
			</menu>
		</menus>
	</website>
</script>

Importation du fichier

Pour importer le fichier il vous suffit de lancer la commande :

php framework/bin/change.php import-data recipes defaultStructure.xml

Plus loin dans l'importation XML

Il est possible de faire bien plus de choses encore par le biais de l'importation XML, pour cela veuillez consulter la section dédiée aux imports XML de la référence.

devguide/howto/importdefaultstructure.txt · Dernière modification: 2017/01/19 14:54 (modification externe)