récupération données dans xml
Jeremmm
Member
Bonjour,
Voilà, j'essai d'ajouter une fonction pour récupérer un champ (minia) quand les fichiers xml article que j'alimente en créant un article.
Voici comment il est :
<?xml version="1.0" encoding="UTF-8" ?>
- <document>
- <title>
- <![CDATA[ Premier article ]]>
</title>
- <minia>
- <![CDATA[ test ]]>
</minia>
<allow_com>1</allow_com>
- <template>
- <![CDATA[ article.php ]]>
</template>
- <chapo>
- <![CDATA[ ]]>
</chapo>
- <content>
- <![CDATA[ <p>Ceci est un article créé lors de l'installation de PluXml. Editez-le depuis la zone d'administration.</p> ]]>
</content>
- <tags>
- <![CDATA[ PluXml ]]>
</tags>
</document>
J'ai créé une fonction dans le fichier class.plx.show.php pour pouvoir récupérer le champ :
public function artImage() {
echo $this->plxMotor->plxRecord_arts->f('minia');
}
Impossible d'afficher ce que se trouve dans le champ, par contre quand je met, par exemple content ou chapo, il s'affiche bien.
Auriez vous une idée de pourquoi il ne s'affiche pas?
Merci
Voilà, j'essai d'ajouter une fonction pour récupérer un champ (minia) quand les fichiers xml article que j'alimente en créant un article.
Voici comment il est :
<?xml version="1.0" encoding="UTF-8" ?>
- <document>
- <title>
- <![CDATA[ Premier article ]]>
</title>
- <minia>
- <![CDATA[ test ]]>
</minia>
<allow_com>1</allow_com>
- <template>
- <![CDATA[ article.php ]]>
</template>
- <chapo>
- <![CDATA[ ]]>
</chapo>
- <content>
- <![CDATA[ <p>Ceci est un article créé lors de l'installation de PluXml. Editez-le depuis la zone d'administration.</p> ]]>
</content>
- <tags>
- <![CDATA[ PluXml ]]>
</tags>
</document>
J'ai créé une fonction dans le fichier class.plx.show.php pour pouvoir récupérer le champ :
public function artImage() {
echo $this->plxMotor->plxRecord_arts->f('minia');
}
Impossible d'afficher ce que se trouve dans le champ, par contre quand je met, par exemple content ou chapo, il s'affiche bien.
Auriez vous une idée de pourquoi il ne s'affiche pas?
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Je suis désolé je n'ai pas le temps de faire un tuto, mais voilà comment faire avec un plugin, tout facilement, proprement et sans modifier le core de pluxml (pour la version 5.1 beta 1)
Attention ça va aller vite....
dans le dossier /plugins/ créer une dossier plxNewArticleField (repecte les majuscules)
dans le dossier /plugins/plxNewArticleField créer un fichier infos.xml et colle dedans le code suivant:
toujours dans ce dossier créer un fichier plxNewArticleField.php et coller dedans le code suivant:
Dans le fichier de ton thème : /themes/<ton theme>/article.php en dessous de la ligne
ajoute la ligne suivante :
nb: cette ligne est à ajouter également dans les autres fichiers de ton theme partout où tu voudras voir afficher le nouveau champ.
Il ne te reste plus qu'à aller dans l'administration, menu Parametres > Plugins et activer le plugin "Demo"
Va sur la page de rédaction d'un article et en bas de page tu verras un nouveau champ de saisie intitulé "Mon nouveau champ :"
Pour info: le champ dans le fichier xml des article s'appelle "myfield"
Pour plus d'explications faudra dans un premier temps éplucher le code donné. Je répondrai aux questions bien entendu.
Je conseille également de lire la doc sur les plugins dispo dans l'archive de la beta 5.1 dans le dossier /docs.
Merci de la lire avant de poser des questions. Les réponses sont surement dedans.
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Je vais regarder ça de près.
Merci
donc la modification sera je pense :
bouton parcourir + redimensionnement de l'image en fonction des paramètres choisis.
comment fait on pour récupérer la valeur de myfield dans une page static ?
dans la page statique rajoute ce code
j'ai pas essayé donc peut etre que ça ne donnera rien
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
mais comme il y a un echo dans la fonction
et une balise de fin php '?>' mon php s'arrete
donc ?
j ai essayé avec un return mais la aussi je me suis planter
faut dire que je ne suis pas très bon en php
Je relance sous ce sujet pour savoir comment ajouter plusieurs champs (environ 10) . J'ai tenté de doubler le plugin mais ça ne fonctionne pas.
Quelqu'un a-t-il une solution?
Merci!
Article xml:lang="FR" handle="Meteo" type="Local">
<Location id="07157000" continent="EU" name_fr="Paris" altitude="108" latitude="49.02" longitude="2.53" type="Town">
<Day val="20130712">
<TempMor>11</TempMor>
<TempAft>26</TempAft>
<Txt_fr>bien ensoleillé</Txt_fr>
<Symb>90</Symb>
<Force>8</Force>
<Dir>N</Dir>
<Source>modell</Source>
</Day>
<Day val="20130713">
<TempMor>15</TempMor>
<TempAft>27</TempAft>
<Txt_fr>bien ensoleillé</Txt_fr>
<Symb>90</Symb>
<Force>8</Force>
<Dir>NE</Dir>
<Source>modell</Source>
</Day>
<Day val="20130714">
<TempMor>16</TempMor>
<TempAft>28</TempAft>
<Txt_fr>bien ensoleillé</Txt_fr>
<Symb>90</Symb>
<Force>6</Force>
<Dir>N</Dir>
<Source>modell</Source>
</Day>
</Location>
<Location id="06590000" continent="EU" name_fr="Luxembourg" altitude="376" latitude="49.62" longitude="6.22" type="Town">
<Day val="20130712">
<TempMor>12</TempMor>
<TempAft>23</TempAft>
<Txt_fr>bien ensoleillé</Txt_fr>
<Symb>90</Symb>
<Force>4</Force>
<Dir>W</Dir>
<Source>modell</Source>
</Day>
<Day val="20130713">
<TempMor>12</TempMor>
<TempAft>23</TempAft>
<Txt_fr>bien ensoleillé</Txt_fr>
<Symb>90</Symb>
<Force>6</Force>
<Dir>N</Dir>
<Source>modell</Source>
</Day>
<Day val="20130714">
<TempMor>12</TempMor>
<TempAft>24</TempAft>
<Txt_fr>bien ensoleillé</Txt_fr>
<Symb>90</Symb>
<Force>4</Force>
<Dir>NW</Dir>
<Source>modell</Source>
</Day>
</Location>
......
pour l instant j arrive a parser le fichier xml ça ma fiche:
Day:
TempMor:11
TempAft:26
Force:8
Dir:N
.....
mais le probleme day ne s affiche pas et voila le code que j'ai mis
<?php
//Function to convert date format
function ConvertDate($date)
{
$timezone = new DateTimeZone('UTC');
$dateTime = DateTime::createFromFormat('Ymd', $date, $timezone);
echo $dateTime->format('m/d');
}
$xml = simplexml_load_file('meteo.xml');
$items = $xml->xpath('*/Day');
$query =$xml->xpath('Location/Day'); // had les expression
foreach($query as $q) {
echo '<br>';
echo $q->Day;
}
foreach($items as $item) {
echo '<br>Day :'.$item->Day.'<br>TempMor :',$item->TempMor.'<br>TempAft :',$item->TempAft.'<br>Force :',$item->Force.'<br>Dir :',$item->Dir.'<br>----<br>' ;
}
?>
aidez moi s'il vous plait