Flux rss fonctionne sur une page et pas sur une autre

WRInaute occasionnel
Bonjour à tous,

En suivant cet excellent article => https://www.webrankinfo.com/dossiers/webmastering/integrer-un-flux-rss j'ai réussi à récupérer le flux rss de mon blog mais l'affichage ne fonctionne pas sur ma page d'accueil.

Ma page d'accueil est une page statique (index.html) elle s'affiche via un moteur de template (template.htm)

En ajoutant un ligne à mon .htaccess j'arrive à éxecuter le code php dans une page html seule.
Par contre quand je tente d'afficher mon flux rss sur une page qui passe par le template, le code n'est pas exécuté (il est par contre bien présent dans le code source).

Quelle pourrait être la solution à ce problème technique ?

Merci.
 
WRInaute accro
C'est quoi le moteur de template ? Il n'y a pas une syntaxe spéciale pour exécuter du PHP dedans ?
 
WRInaute occasionnel
spout a dit:
C'est quoi le moteur de template ? Il n'y a pas une syntaxe spéciale pour exécuter du PHP dedans ?

Le moteur de template c'est un fichier htm qui est placé à la racine et dans lequel viennent s'afficher toutes mes pages, même les pages dynamiques.

Par contre dans mes pages j'ai effectivement une syntaxe spéciale avec des tags du style _#nomdeFonction#_ qui permet d'activer du code php (enfin je pense).
Le truc c'est que les fonctions sont stockées dans la base de donnée. Je ne sais pas si c'est très orthodoxe comme truc mais ça marche.

Ecrire les fonctions en php dans la base de donnée implique probablement de réécrire le code source de la fonction.
Je me demandais s'il était possible de contourner le problème
 
WRInaute accro
Savoy a dit:
Le moteur de template c'est un fichier htm qui est placé à la racine et dans lequel viennent s'afficher toutes mes pages, même les pages dynamiques.
Ça ne dit tjs pas quel est le moteur de template utilisé: Smarty, Savant, Twig, template maison,... ?
Tu as essayé un simple <?php echo 'test';?> dans les templates .htm pour être bien sûr que le PHP s'exécute dedans ?
 
WRInaute occasionnel
spout a dit:
Savoy a dit:
Le moteur de template c'est un fichier htm qui est placé à la racine et dans lequel viennent s'afficher toutes mes pages, même les pages dynamiques.
Ça ne dit tjs pas quel est le moteur de template utilisé: Smarty, Savant, Twig, template maison,... ?
Tu as essayé un simple <?php echo 'test';?> dans les templates .htm pour être bien sûr que le PHP s'exécute dedans ?

Merci pour ton aide.
Le template, je crois que c'est du maison.

Après, le constat que je fais c'est :
page.html => lecture du flux rss
/dossierDesPagesTemplate/page.html => pas de lecture du flux Rss

Alors tu vas me dire : "ben met ta page hors de /dossierDesPagesTemplate/" mais là c'est le reste qui marche plus...

Sinon, je ne peux pas appeler directement le fichier template.htm.
Sinon dans mon template j'ai un tag du style _#require html#_

spout a dit:
Tu as essayé un simple <?php echo 'test';?> dans les templates .htm pour être bien sûr que le PHP s'exécute dedans ?
Oui le code apparait dans la source mais comme s'il était commenté et rien ne s'affiche en revanche il n'y a pas de /* ou de //
 
WRInaute accro
Donc le PHP ne s'exécute pas dans le template, alors tu vas devoir envoyer une variable contenant le flux RSS parsé et transformé en HTML dans le template via ton controller (si t'en as un, je n'ai aucune idée de l'architecture de ton script, c'est souvent du style $template->set('maVar', $maVar)).

NB: Les moteurs de templates c'est le mal, PHP est déjà un moteur de templates.
 
WRInaute occasionnel
spout a dit:
Donc le PHP ne s'exécute pas dans le template, alors tu vas devoir envoyer une variable contenant le flux RSS parsé et transformé en HTML dans le template via ton controller (si t'en as un, je n'ai aucune idée de l'architecture de ton script, c'est souvent du style $template->set('maVar', $maVar)).

NB: Les moteurs de templates c'est le mal, PHP est déjà un moteur de templates.

Oui bon je pense que ce n'est pas à ma portée car CSS ok pas de souci mais php :lol:

Je vais jeter un oeil à mes scripts mais j'ai peur de tout massacrer...

Sinon le stockage des fonctions dans la Bdd tu en penses quoi ?

Voilà c'est du style :

Code:
function _connect() {
global $idcli;


if(empty($idcli)) {


$buf=<<<HERE
         
          <form name="form1" id="form1" method="post" action="/xxx.php">
          <table width="100%"  border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td >Email :
                 <input type=hidden name=login value=1>
                  <input name="user" type="text" size="15" />
PSWD :<br />
<input name="pass" type="password" size="15" /></td>
                <td ><input type="submit" name="Submit" value="Go" /></td>
              </tr>
            </table>
    			<a href="oubli.html" >Mot de passe oublié ?</a><br />
              <a href="inscription.html">Inscription</a>
          </form>
          
HERE;
} else {

$q="select * from xxx where ref='$idcli'";
$r=mysql_query($q);
$o=mysql_fetch_object($r);


$buf=<<<HERE

$o->nom $o->prenom 


<a href=compte.html>compte</a>
HERE;

}


return $buf;

}

ensuite la fonction est appelée par _#connect#_ dans ma page html
 
WRInaute accro
Savoy a dit:
Sinon le stockage des fonctions dans la Bdd tu en penses quoi ?
C'est une technique comme une autre, je suis pas fan mais si c'est bien secure ça devrait aller.
C'est quoi ce CMS ?

Tu peux essayer de créer une fonction test dans le meme fichier ou il y a la fonction _connect():
PHP:
<span class="syntaxdefault"><br /></span><span class="syntaxkeyword">function&nbsp;</span><span class="syntaxdefault">_test</span><span class="syntaxkeyword">(){<br />echo&nbsp;</span><span class="syntaxstring">'Ca&nbsp;fonctionne'</span><span class="syntaxkeyword">;<br />}<br />&nbsp;</span><span class="syntaxdefault"></span>
Puis tu testes dans ton template:
_#test#_

Si ça fonctionne, tu mets tout le code PHP de parsage du flux RSS dans la fonction (et tu renommes en autre chose que "test").
 
WRInaute occasionnel
Ah oui j'avais pensé faire ça mais le code que j'ai affiché plus haut c'est du php ?

Et sinon ce que tu dis pour la fonction test ca marche j'ai déjà testé ce truc.

Ce qui me pose problème c'est les require je ne sais pas trop comment je dois les appeler vu que j'ai deux morceaux :

La fonction qui parse (je la met dans la bdd) => là ok
La fonction qui appelle le script, c'est un bout de php et là je ne sais pas trop quoi en faire... est-ce que je peux le mettre ausi dans la base de donnée puis l'appeler via un tag ?
Code:
<?php
require_once("feedparser.php");
echo FeedParser("http://www.monite.com/rss.php");
?>
 
WRInaute accro
Ce code
Savoy a dit:
Code:
<?php
require_once("feedparser.php");
echo FeedParser("http://www.monite.com/rss.php");
?>
est à mettre dans la fonction créé:
PHP:
<span class="syntaxdefault"><br /></span><span class="syntaxkeyword">function&nbsp;</span><span class="syntaxdefault">_feed</span><span class="syntaxkeyword">(){<br />require_once(</span><span class="syntaxstring">"feedparser.php"</span><span class="syntaxkeyword">);</span><span class="syntaxcomment">//attention&nbsp;au&nbsp;chemin<br /></span><span class="syntaxkeyword">echo&nbsp;</span><span class="syntaxdefault">FeedParser</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"http://www.monite.com/rss.php"</span><span class="syntaxkeyword">);<br />}<br />&nbsp;</span><span class="syntaxdefault"></span>

puis dans ton template:
_#feed#_
 
WRInaute accro
feedparser.php sur ton serveur oui, mais je ne sais pas te dire exactement où, ça dépend de ton script, ensuite indiquer le bon chemin au require_once()
 
WRInaute occasionnel
Est-ce que tu sais s'il est possible de supprimer les dossiers demo et tests dans simplepie_1.2 ?
 
WRInaute occasionnel
Bon, j'ai pas mal avancé j'arrive à afficher pas mal de truc mais j'ai un souci sur l'affichage du contenu :

J'utilise une syntaxe un peu particulière qui me permet d'afficher les titres des derniers posts mais dans ce cas précis ça ne m'affiche qu'un seul post je n'arrive pas à afficher le contenu du foreach.

Code:
foreach ($feed->get_items() as $item);
return $item->get_title();

Comment faire pour afficher cette liste d'items ?

Merci pour votre aide
 
WRInaute accro
Ce bout de code il est dans une fonction ? Il nous faut un peu plus d'infos là pour t'aider, mais globalement si c'est le cas, le return te fait sortir de la fonction d'emblée. La solution est de passer par une variable intermédiaire, dans laquelle tu concatènes les données comme tu en as envie, et de faire ton return en dehors du foreach.
 
WRInaute occasionnel
oui désolé j'aurais dû être plus précis...

Code:
function _feedItem() { 
require_once("php/simplepie.inc");
$feed = new SimplePie();
$feed->set_feed_url('http://www.monsite.com/blog/feed/'); 
$feed->set_output_encoding('ISO-8859-1');
$feed->init(); 
$feed->handle_content_type();
foreach ($feed->get_items() as $item);
return $item->get_title();
}
Ensuite avec un tag spécial je "recrache" la fonction _feedItem()
Là où je ne comprends plus c'est que le $feed->get_items() doit renvoyer 10 valeurs (un tableau je crois) c'est ensuite l'affichage de ces 10 lignes qui me pose problème...
Merci
 
WRInaute accro
Relis ce que je t'ai mis juste au dessus : ton return met immédiatement fin, dès le premier passage, à l'exécution de ta fonction.

Tu attends quoi en sortie, un tableau ?

Si oui :

Code:
$a_titles = array()
foreach ($feed->get_items() as $item);
{
     array_push($a_titles,$item->get_title());
}
return $a_titles;
 
WRInaute occasionnel
Merci pour ton aide !

En fait un tableau j'en sais trop rien...
Je dois avoir les 10 titres de mes items $item->get_title()

Ce que tu as indiqué me renvoie une erreur de sytaxe
 
WRInaute accro
Tu dois renvoyer du HTML.

PHP:
<span class="syntaxdefault"><br />function _feedItem</span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br />require_once(</span><span class="syntaxstring">"php/simplepie.inc"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">$feed </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> new SimplePie</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">$feed</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_feed_url</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'http://www.monsite.com/blog/feed/'</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">$feed</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_output_encoding</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'ISO-8859-1'</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">$feed</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">init</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">$feed</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">handle_content_type</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">$html </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'<ul>'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">foreach </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$feed</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_items</span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> as $item</span><span class="syntaxkeyword">){<br /></span><span class="syntaxdefault">$html </span><span class="syntaxkeyword">.=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'<li>'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$item</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_title</span><span class="syntaxkeyword">().</span><span class="syntaxstring">'</li>'</span><span class="syntaxkeyword">;<br />}<br /></span><span class="syntaxdefault">$html </span><span class="syntaxkeyword">.=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'</ul>'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">return $html</span><span class="syntaxkeyword">;<br />}<br /></span><span class="syntaxdefault"> </span>
 
WRInaute occasionnel
aaaaaaaaaaaaaaaaaaaaaaaaaa

OUI !!!!

J'ai passé tout l'après midi sur ce truc, javais mis un <br /> mais je n'aurais jamais trouvé !!!

Merci Merci Merci Merci Merci Merci Merci Merci

Bon j'ai qd même une autre question :

Je crée une fonction pour chaque tag est-il possible de simplifier ?

Code:
function _feedTitle() { 
require_once("php/simplepie.inc");
$feed = new SimplePie();
$feed->set_feed_url('http://monsite/blog/feed/'); 
$feed->set_output_encoding('ISO-8859-1');
$feed->init(); 
$feed->handle_content_type();
return $feed->get_title();

}

function _feedDesc() { 
require_once("php/simplepie.inc");
$feed = new SimplePie();
$feed->set_feed_url('http://monsite/blog/feed/'); 
$feed->set_output_encoding('ISO-8859-1');
$feed->init(); 
$feed->handle_content_type();
return $feed->get_description();
}

function _feedItem() {
require_once("php/simplepie.inc");
$feed = new SimplePie();
$feed->set_feed_url('http://monsite/blog/feed/');
$feed->set_output_encoding('ISO-8859-1');
$feed->init();
$feed->handle_content_type();
$html = '<ul>';
foreach ($feed->get_items() as $item){
$html .= '<li>'.$item->get_title().'</li>';
}
$html .= '</ul>';
return $html;
}

est-ce que ça ne va pas ralentir le chargement de la page ?

merci beaucoup !!!
 
WRInaute accro
Si on ne sait pas comment passer des paramètres à l'appel des fonctions dans tes templates, tu n'as pas le choix que de créer x fonctions.

Sinon cela aurait pu être:
PHP:
<span class="syntaxdefault"><br /></span><span class="syntaxkeyword">function&nbsp;</span><span class="syntaxdefault">_feedItem</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$url</span><span class="syntaxkeyword">){<br />&nbsp;&nbsp;&nbsp;&nbsp;require_once(</span><span class="syntaxstring">"php/simplepie.inc"</span><span class="syntaxkeyword">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$feed&nbsp;</span><span class="syntaxkeyword">=&nbsp;new&nbsp;</span><span class="syntaxdefault">SimplePie</span><span class="syntaxkeyword">();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$feed</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_feed_url</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$url</span><span class="syntaxkeyword">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$feed</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_output_encoding</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'ISO-8859-1'</span><span class="syntaxkeyword">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$feed</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">init</span><span class="syntaxkeyword">();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$feed</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">handle_content_type</span><span class="syntaxkeyword">();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$html&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxstring">'<ul>'</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;foreach(</span><span class="syntaxdefault">$feed</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_items</span><span class="syntaxkeyword">()&nbsp;as&nbsp;</span><span class="syntaxdefault">$item</span><span class="syntaxkeyword">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$html&nbsp;</span><span class="syntaxkeyword">.=&nbsp;</span><span class="syntaxstring">'<li>'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$item</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_title</span><span class="syntaxkeyword">().</span><span class="syntaxstring">'</li>'</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$html&nbsp;</span><span class="syntaxkeyword">.=&nbsp;</span><span class="syntaxstring">'</ul>'</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span class="syntaxdefault">$html</span><span class="syntaxkeyword">;<br />}<br />&nbsp;</span><span class="syntaxdefault"></span>
 
WRInaute occasionnel
Bah finalement j'ai viré tout le début pour ne garder que la liste car c'est réellement ce qui m'intéresse.

Je ne sais pas si ça pourra aider qq1 mais en tout car un grand merci à spout

Bonne soirée et merci à tous pour votre aide, quand ma liste s'est affichée ce soir j'en aurais chialé :lol:
 
Discussions similaires
Haut