Flus Rss (et atom)

Messagepar oscim » Dim 05 Juil 2009, 13:20

Bonjour

Voila, cherchant un flux a mettre en place et adapter sur une boutique, je me retrouve comme d'habitude avec une multitude de choix possible.
Je vous tend donc un peu la perche, pour savoir si vous en avez intégrer, et su vous avez un petit retour d'expérience.

Histoire de faire un rapide etat des lieux, J'ai trouvé:
* RSS NewsLecteur rss, administrable de l'admin

* Backends RSS qui est celui que j'ai choisi. C'est un vrai module, il rajoute des element et ne demande pas de modification sur les fichiers. Assez extensible, on peut lui ajouter autant de flux différents, il contient c'est propre boite pour générer le contenu

* RSS Feed 0.1 qui semble configurable via admin, contient bcp de hack, et semble un peu fastidieux a mettre en place. il est celui qui est le plus récent dans ces mise a jour

* RSS/XML Auto Newsletter Permet l'envoi de newsletter construit automatiquement

Mon choix c'est donc porter sur Backends RSS, le plus souple, puisque il est possible d'ajouter toute les traitements possible via des box, et un appel avec des arguments get.
Enfin, il ne modifie pas le code du moteur
Pour finir j'ai quelque peu modifié le code pour permettre plus de souplesse et la prise en charge des langue dans les titre du flux

J'ai adapté le fichier rss.php
Code: Tout sélectionner
header("Content-type: application/rss+xml");

include('includes/application_top.php');
require(DIR_WS_LANGUAGES . $language . '/rss.php' );
if (!strlen($_GET['box'])) $_GET['box'] = "new_products";
$file = DIR_WS_INCLUDES .'rss/' . $_GET['box'] . '.php';

print '<?xml version="1.0" encoding="'. CHARSET .'"?>' . "n";
print '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">' . "n";
print '  <channel>' . "n";
print "    <title>".STORE_NAME.": ".constant('TITLE_'.strtoupper($_GET['box']))."</title>n";
print "    <description>".constant('DESC_'.strtoupper($_GET['box']))."</description>n";
print "    <link>".HTTP_SERVER.'/'.FILENAME_PRODUCTS_NEW."</link>n";

if (file_exists($file)) require($file);

print "  </channel>n";
print "</rss>n";

Il n'est pas necessaire d'ajouter le chemin en constante dans le configure.php, un fichier de langue nommé rss.php doit être présent
Les titre est description des flux sont construit avec:
TITLE_(Nom de la boxe)
DESC_(Nom de la boxe)

ex fichier langue rss.php:
Code: Tout sélectionner
<?php
/*
  $Id: search.php,v 1.3 2009/07/03 17:42:30 oscim Exp $
+-----------------------------------------------------------------------+
|                  osCSS Open Source E-commerce                         |
+-----------------------------------------------------------------------+
| Copyright (c) 2005 - 2009 The osCSS developers                               |
|                                                                       |
| http://www.oscss.org                                       |
|                                                                       |
| Portions Copyright (c) 2003 osCommerce                                |
+-----------------------------------------------------------------------+
| This source file is subject to version 2.0 of the GPL license,        |
| available at the following url:                                       |
| http://www.oscss.org/license/2_0.txt.                      |
+-----------------------------------------------------------------------+
*/

define('TITLE_NEW_PRODUCTS', 'Nouveau produits');
define('TITLE_MANUFACTUREDS', 'Fabricants');
define('TITLE_CATEGORIES', 'Catégories de produits');

define('DESC_NEW_PRODUCTS', 'Le flux des nouveau produits');
define('DESC_MANUFACTUREDS', 'Le flux des fabricants');
define('DESC_CATEGORIES', 'Le flux des catégories de produits');

Voilouvoila, si ca peut servir a quelqu'un
Dernière édition par oscim le Dim 05 Juil 2009, 13:28, édité 1 fois.
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar cynic- » Ven 30 Oct 2009, 12:51

si ca peut servir a quelqu'un

J'allais adapter RSS FEED 0.1 mais je te fais confiance là-dessus, je vais plutôt tester Backends RSS (même si sa dernière mise à jour date un peu il est vrai)

Merci !
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar cynic- » Ven 30 Oct 2009, 13:09

Premières remarques :
- installation très très simple et rapide
- 1 fichier rss.php à placer dans catalog/
- 1 dossier rss/ contenant 2 fichiers, à placer dans catalog/includes/
- 1 fichier rss.php à placer dans votre dossier de langues
- ne pas oublier les 2 lignes à ajouter dans le .htaccess
Dernière édition par cynic- le Ven 30 Oct 2009, 13:09, édité 1 fois.
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar cynic- » Ven 30 Oct 2009, 13:35

Dans le fichier de langue rss.php ne pas oublier d'ajouter
define('TITLE_WHATS_NEW', 'Nouveautés');
define('DESC_WHATS_NEW', 'Nouveaux produits');
Dans ce même fichier attention coquille : MANUFACTUREDS > MANUFACTURERS

Pour la détection automatique par Firefox, IE... ajouter dans le <head></head> de votre template.php :
Code: Tout sélectionner
  <link rel="alternate" type="application/rss+xml" title="Nouveautés" href="whats_new.xml" />
  <link rel="alternate" type="application/rss+xml" title="Catégories" href="categories.xml" />
Dernière édition par cynic- le Ven 30 Oct 2009, 13:36, édité 1 fois.
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar j4k » Ven 30 Oct 2009, 14:04

cool !

il va falloir en faire un plugin ! ;)
~ osCSS 1.2.1 ~
Avatar de l’utilisateur
j4k
Site Admin
 
Messages: 1259
Inscription: Mer 27 Avr 2005, 09:13
Localisation: France

Messagepar cynic- » Ven 30 Oct 2009, 14:20

Yep, ça ferait un super plugin, encore merci OSCIM
TODO :
- ajout de la description de l'article sur
rss.php?box=whats_new
rss.php?box=categories
- dans l'appel <head></head> utiliser la constante du fichier de langues plutôt que title="Mot en français"
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar cynic- » Ven 30 Oct 2009, 18:51

Une peu de mise au propre :
Ajouter ceci dans catalog/includes/filenames.php :
Code: Tout sélectionner
define('FILENAME_RSS', 'rss.php');

Attention pour la validation w3c du flux, afin d'éviter ce message Missing atom:link with rel="self" il y a un changement à apporter sur catalog/rss.php

Je corrige tout cela
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar cynic- » Ven 30 Oct 2009, 20:58

Télécharger / Download : BACKENDS RSS FOR OSCSS

DONE ! ajouter la description du produit dans le flux / add products description in the feed
TO DO : validation flux / feed validation (http://validator.w3.org/feed/)

Français /////////////////////////////////////
Aucun fichier à modifier.

1. Ajouter ces fichiers à votre boutique :
catalog/rss.php
catalog/includes/rss/whats_new.php
catalog/includes/rss/categories.php
catalog/includes/languages/french/rss.php

2. Dans votre fichier catalog/templates/(votre-template)/template.php
Ajouter avant </head> :
Code: Tout sélectionner
<link rel="alternate" type="application/rss+xml" title="(titre-nouveautés)" href="whats_new.xml" />
<link rel="alternate" type="application/rss+xml" title="(titre-catégories)" href="categories.xml" />

N'oubliez pas de changer le(s) attribut(s) title + cf note*
TO DO : utiliser une constante pour le title plutôt que du texte en dur

3. Ajouter ceci dans catalog/includes/filenames.php :
Code: Tout sélectionner
define('FILENAME_RSS', 'rss.php');

4. Ajouter ceci à la fin de votre fichier catalog/.htaccess
Code: Tout sélectionner
# Ajout pour osCSS Backend RSS
RewriteRule nouveautes.xml rss.php?box=whats_new
RewriteRule categories.xml rss.php?box=categories

+ cf note*

*Note : pour optimiser votre référencement renommez nouveautes.xml et categories.xml en quelque chose de plus précis !
exemple : guitare-electrique-pas-cher.xml, stickers-muraux.xml, etc

English /////////////////////////////////////
No file to modify.

1. Add these files to your shop :
catalog/rss.php
catalog/includes/rss/whats_new.php
catalog/includes/rss/categories.php
catalog/includes/languages/english/rss.php

2. In your template file catalog/templates/(your-template)/template.php
Add before </head> :
Code: Tout sélectionner
<link rel="alternate" type="application/rss+xml" title="(new-products-title)" href="whats_new.xml" />
<link rel="alternate" type="application/rss+xml" title="(new-products-title)" href="categories.xml" />

Don't forget to change the title attribute(s) + see note*
TO DO : use a constant for the title rather than plain text

3. Add this in catalog/includes/filenames.php :
Code: Tout sélectionner
define('FILENAME_RSS', 'rss.php');

4. Add this at the end of the catalog/.htaccess file
Code: Tout sélectionner
# Added for osCSS Backend RSS
RewriteRule whats-new.xml rss.php?box=whats_new
RewriteRule categories.xml rss.php?box=categories

+ see note*

*Note : for a better SEO you should rename whats-new.xml and categories.xml by something more explicit !
for example : cheap-electric-guitars.xml, wall-stickers.xml, etc
Dernière édition par cynic- le Ven 06 Nov 2009, 14:39, édité 1 fois.
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar cynic- » Ven 30 Oct 2009, 20:59

Plugin BACKENDS RSS visible ici :
Véhicules occasion Nord
Dernière édition par cynic- le Mar 03 Nov 2009, 18:56, édité 1 fois.
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar cynic- » Mar 03 Nov 2009, 16:37

ajouter la description du produit dans le flux
Je ne vois vraiment pas comment aller chercher puis afficher la description du produit

Dans catalogincludesrsswhats_new.php j'ai ajouté

Code: Tout sélectionner
// BEGIN
$product_info_query = "select p.products_id, pd.products_name, pd.products_description, p.manufacturers_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = '" . (int)$_GET['products_id'] . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'";
$desc = $product_info_query['products_description'];
// END

Et après
Code: Tout sélectionner
echo '    <guid>' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products_new['products_id'], NONSSL) . '</guid>' . "n";

J'ajoute ceci :
Code: Tout sélectionner
echo '   <description>Test : ' . $products_new['products_id'] . ' + ' . $products_new['manufacturers_name']  . ' + ' . $desc . '</description>' . "n";

Et le flux m'affiche cela :
Test : 9 + Peugeot + s

C'est quoi ce "s" ? :|
Dernière édition par cynic- le Mar 03 Nov 2009, 16:39, édité 1 fois.
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar oscim » Mar 03 Nov 2009, 21:05

Su un serveur de test ?

Dans ce cas, en hat de page, placer un
Code: Tout sélectionner
error_reporting(E_ALL);

Certe, beaucoup de retour d'erreur, mais tu dois retrouver dans la liste, celle qui fait reference au numero de ligne.
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar cynic- » Mer 04 Nov 2009, 18:28

Code: Tout sélectionner
Notice:  Undefined index:  products_id in D:wampwwwcatalogincludesrsswhats_new.php on line 19

+ des erreurs qui (je pense) ne sont pas liées :
Code: Tout sélectionner
Notice:  Undefined variable: connection in D:wampwwwcatalogincludesclassesseo.class.php on line 831<br />
<br />
Notice:  Undefined variable: _sid in D:wampwwwcatalogincludesclassesseo.class.php on line 791<br />
    <link>http://localhost/catalog/mon-produit-p-25.html</link>

Merci
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar oscim » Mer 04 Nov 2009, 21:20

En fait je pense que le s est un "bout" de code de sortie d'une erreur ou un pbs de concaténation.

dans ce cas, l'erreur souligne quand même qu 'il ne trouve pas la key products_id dans la ligne de la boxe. C'est quoi la ligne 19.

Sinon, lorque tu affiche la source du flux xml generé ?

Quant à la class SEO, elle est bourré d'erreur de notice. souvent des var utilisé avant d'être initialisé.

Pour finir, perso j'ai utilisé une contrib du meme genre ou la méme , avec un rep /rss est des boxe.

J'en ai ajouté une qui reprend e grande partie le code sql de advanced_shearh.

J'appel donc mon flux avec keywords quelque chose.

Pour moi l'interet, c'est qu'il n'est presque plus nécessaire de multiplier les boites /rss, elle sert a tout
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar cynic- » Mer 04 Nov 2009, 22:13

Je me suis, comme toi, basé sur Backends RSS, les modif que j'ai faites sont sur le zip / tuto plus haut ;)
La ligne 19 c'est ça :
Code: Tout sélectionner
$desc = $product_info_query['products_description'];
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar cynic- » Jeu 05 Nov 2009, 15:36

J'ai résolu le problème, en supprimant la requête $product_info_query ; quant à la requête d'origine j'y ai ajouté pd.products_description, :
Code: Tout sélectionner
$products_new_query_raw = "select p.products_id, pd.products_name, p.products_image, p.products_price, pd.products_description, p.products_tax_class_id, p.products_date_added, m.manufacturers_name from " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on (p.manufacturers_id = m.manufacturers_id), " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by p.products_date_added DESC, pd.products_name limit 20";

Puis dans le while {}
Code: Tout sélectionner
echo '   <description>' . strip_tags($products_new['products_description']) . '</description>' . "n";

Simple comme bonjour mais ça m'a échappé dès le début :x
Bon, la suite...

edit : ajout de strip_tags() pour retirer les balises html de la description sinon le flux n'est pas valide. Je mets le zip à jour.
Dernière édition par cynic- le Ven 06 Nov 2009, 14:38, édité 1 fois.
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar oscim » Ven 06 Nov 2009, 01:36

J'ai pas eu le temps de te faire remonté, sorry.

Suis completement out....


Effectivement, j'a la copie de mon fichier te donne la même chose

Code: Tout sélectionner
$products_new_query_raw = "select p.products_id, pd.products_name,pd.products_description, p.products_image, p.products_price, p.products_tax_class_id, p.products_date_added, m.manufacturers_name from " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on (p.manufacturers_id = m.manufacturers_id), " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by p.products_date_added DESC, pd.products_name limit 20";

Perso , je pense qu'il est souhaitable d'jouter une limite a la requete.

Par contre, tu dis paramétrable via admin ?

Tu paramétre quoi ?
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar cynic- » Ven 06 Nov 2009, 13:29

Je me relis et non, j'ai pas dit ça, c'est vrai que t'es out :D :D :D
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04


Retourner vers Plugin

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité