Structure xml pour un plugin

flipflipflipflip Member
septembre 2011 modifié dans Discussions générales
Salut, pour le plugin plxcoinslider j'essaie de créer un fichier xml par slideshow dans lequel je stock la configuration mais aussi les images et textes lié à ces images. Voila à quoi ressemble le array que je veux sauvegarder :
Array
(
    [id] => 0001
    [name] => test
    [width] => 
    [height] => 
    [spw] => 
    [sph] => 
    [delay] => 
    [sdelay] => 
    [opacity] => 
    [titleSpeed] => 
    [effet] => 
    [navigation] => 
    [links] => 
    [hoverPause] => 
    [image] => Array
        (
            [number] => 0001
            [imagename] => piscine.jpg
            [description] => des
            [link] => lin
        )

)
Côté php j'ai une fonction charger d'écrire le fichier
public function editSlideshow($content) {
		$xml = "<?xml version=\"1.0\" encoding=\"".PLX_CHARSET."\"?>\n";
		$xml .= "<document>\n";
		foreach ($content as $key => $slideshow) {
			if(is_array($content[ $key ] )) {
				$xml .= "\t<image>\n";
				foreach ($content[ $key ] as $iKey => $image) {
					$xml .= "\t\t<".$iKey.">".$image."</".$iKey.">\n";
				}
				$xml .= "\t</image>\n";
			} else {
				$xml .= "\t<".$key.">".$slideshow."</".$key.">\n";
			}
		}
		$xml .= "</document>";

		# On écrit le fichier
		$filename = $_SESSION['user'].'.'.$content['id'].'.'.$content['name'].'.xml';
		if(plxUtils::write($xml, PLX_ROOT.'plugins/plxcoinslider/slideshow/'.$filename)) {
			return plxMsg::Info(L_SAVE_SUCCESSFUL);
		} else {
			return plxMsg::Error(L_SAVE_ERR.' '.PLX_ROOT.'plugins/plxcoinslider/slideshow/'.$filename);
		}
	}
voila une fois écrit dans le xml
<?xml version="1.0" encoding="UTF-8"?>
<document>
	<id>0001</id>
	<name>tes</name>
	<width>900</width>
	<height></height>
	<spw></spw>
	<sph></sph>
	<delay></delay>
	<sdelay></sdelay>
	<opacity></opacity>
	<titleSpeed></titleSpeed>
	<effet>random</effet>
	<navigation>true</navigation>
	<links>true</links>
	<hoverPause>true</hoverPause>
	<image>
		<number>0001</number>
		<imagename>logfin+ombre.jpg</imagename>
		<description>des</description>
		<link>lin</link>
	</image>
</document>
La ou je bloc c'est pour la lecture du xml surtout la partie avec image, je vois vraiment pas trop comment faire.

Merci d'avance.

J'ai un string de l'array

Réponses

  • Personne n'a d'idée ?

    J'ai un string de l'array

  • Personnellement j'ai pas compris ce que tu veux dire .et aussi ou tu vas faire ces modifications....merci d'expliquer
  • Le plugin permet de créer des slideshow d'images. Dans la première version tu pouvais en faire un seul qui était configuration via le menu configuration dans la liste des plugins. Maintenant j'ai fais évolué, l'idée est de pouvoir créer autant de slideshow que possible pour pouvoir les intégrer dans des articles ou pages statiques. Pour que ça marche chaque slideshow doit avoir son propre fichier de configuration qui stocke les paramètres mais aussi la liste des images qu'il contient avec la description et un lien.

    L'écriture du fichier xml ne me pose pas problème mais c'est le chargement des paramètres qui coince et particulière le "sous" tableau des images.

    voila la fonction que j'utilise pour lire le fichier xml :
    public function getSlideshow($content) {
            $filename = PLX_PLUGINS.'plxcoinslider/slideshow/'.$_SESSION['user'].'.'.$content.'.xml';
            # Mise en place du parseur XML
            $data = implode('',file($filename));
            $parser = xml_parser_create(PLX_CHARSET);
            xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
            xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,0);
            xml_parse_into_struct($parser,$data,$values,$iTags);
            xml_parser_free($parser);
            $nb = sizeof($iTags['name']);
            # Recuperation des valeurs de nos champs XML
            for($i=0; $i < $nb; $i++) {
                $slideshow['id'] = isset($iTags['id'][$i])?$values[ $iTags['id'][$i] ]['value']:'';
                $slideshow['name'] = isset($iTags['name'][$i])?$values[ $iTags['name'][$i] ]['value']:'';
                $slideshow['width'] = isset($iTags['width'][$i])?$values[ $iTags['width'][$i] ]['value']:'';
                $slideshow['height'] = isset($iTags['height'][$i])?$values[ $iTags['height'][$i] ]['value']:'';
                $slideshow['spw'] = isset($iTags['spw'][$i])?$values[ $iTags['spw'][$i] ]['value']:'';
                $slideshow['sph'] = isset($iTags['sph'][$i])?$values[ $iTags['sph'][$i] ]['value']:'';
                $slideshow['delay'] = isset($iTags['delay'][$i])?$values[ $iTags['delay'][$i] ]['value']:'';
                $slideshow['sdelay'] = isset($iTags['sdelay'][$i])?$values[ $iTags['sdelay'][$i] ]['value']:'';
                $slideshow['opacity'] = isset($iTags['opacity'][$i])?$values[ $iTags['opacity'][$i] ]['value']:'';
                $slideshow['titleSpeed'] = isset($iTags['titleSpeed'][$i])?$values[ $iTags['titleSpeed'][$i] ]['value']:'';
                $slideshow['effet'] = isset($iTags['effet'][$i])?$values[ $iTags['effet'][$i] ]['value']:'';
                $slideshow['navigation'] = isset($iTags['navigation'][$i])?$values[ $iTags['navigation'][$i] ]['value']:'';
                $slideshow['links'] = isset($iTags['links'][$i])?$values[ $iTags['links'][$i] ]['value']:'';
                $slideshow['hoverPause'] = isset($iTags['hoverPause'][$i])?$values[ $iTags['hoverPause'][$i] ]['value']:'';
    
                if(is_array($iTags['image'][$i])) {
                    echo '---'.$values[ $iTags['image'][$i] ]['value'].'<br>';
                    foreach($values[ $iTags['image'][$i] ]['value'] as $key => $image) {
                        $slideshow['image'][ $key ] = $image;
                    }
            }
    
            # On retourne le tableau
            return $slideshow;
        }
    
    C'est à partir du is_array que ça bloque. En fait je ne sais pas trop quoi faire contrôler à is_array pour vérifier si c'est bien un tableau.

    J'ai un string de l'array

  • ok merci je vais essayer a trouver une solution........................essai
Connectez-vous ou Inscrivez-vous pour répondre.