Vous n'êtes pas identifié.

#1 29-12-2005 16:41:02

ZuckBin
Membre actif
Date d'inscription: 10-09-2005
Messages: 49
Réputation :   

Url rewriting

Bonjour,

J'ai instale ceci: Ultimate SEO URLs 2.1d

C'est pas tip top sur oscss, probleme de l'ajout du panier.

J'arrive pas a ajouter de nouvelles pages.

Quel contributions ou solution est conseillé sur oscss pour l'url rewritting ?

Merci de votre aide.
Cordialement.


_____________________
osCSS 1.0.1 + Full Rewriting + contribs...

Hors ligne

 

#2 29-12-2005 22:17:00

MicaeL
Invité

Re: Url rewriting

Moi je dit qu'il faudrait l'intégrer a osCSS! Et la possibilité de l'activer ou pas dans configure.php (plutot que par mysql, car en cas de problème tout le site pourrait partir en erreur 500).

 

#3 29-12-2005 22:18:46

sidarus
Administrateur
Lieu: Geneva (CH)
Date d'inscription: 03-05-2005
Messages: 800
Réputation :   
Site web

Re: Url rewriting

Salut Zuck

Ultimate SEO URLs me semble etre la contrib la plus approprié en terme d'url rewriting... s'appel pas SEO (Search Engine Optimization) pour rien wink

J'ai pas vraiment le temps de m'en occuper vu que je passe le plus clair de mon temp sur notre wiki. En contre partie j'ai créé dans wiki un nouveau repository : osc:plugin

Pour l'instant je n'ai fais que ceci :
  * un moteur de recherche vers les contrib OsC
  * et une liste des contrib OsC que nous avons optimisées pour osCSS

Voila pour l'heure

MicaeL a écrit:

Moi je dit qu'il faudrait l'intégrer a osCSS! Et la possibilité de l'activer ou pas dans configure.php

Bien entendu... vu que Apache comprend un mod_rewrite prévu à cet effet (cf httpd.conf) :

LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c

Pour autant que SEO n'apporte rien de plus (pas encore testé).

Hors ligne

 

#4 07-04-2006 17:39:24

ZuckBin
Membre actif
Date d'inscription: 10-09-2005
Messages: 49
Réputation :   

Re: Url rewriting

Salut,

Des nouvelles pour ce Seo ?

J'ai réussi à insérer d'autres pages, tout ce passe dans le fichier seo.class.php et ne pas oublier d'ajouter la regle dans le htaccess.Il faut aussi bien ajouter le nom des pages rajoutées dans le fichier filenames.php.

Je ne peux pas poster ici le code du fichier seo.class.php, car il pese 72ko, et le forum ne le prend pas.

Par contre toujours, un probleme avec le panier, lors d'un ajout de produit, le panier reste vide !

Je comprend pas.

++


_____________________
osCSS 1.0.1 + Full Rewriting + contribs...

Hors ligne

 

#5 09-04-2006 18:13:24

stepibou
Administrateur
Lieu: Lyon
Date d'inscription: 30-10-2005
Messages: 295
Réputation :   
Site web

Re: Url rewriting

Salut,

tu as fais des modifications sur ce fichier?
Si oui, met ici que tes modifs. Sinon, completement inutile, vu que le code est disponible sur oscommerce et ici :
http://wiki.oscss.org/doku.php?id=osc:p … e_seo_urls

Sur cette page du wiki, tu peux mettre tes observations, solutions ou meme questions ciblés...

Je vais bientot l'installer pour une boutique, je regarderai ca de plus pret...
Mais , à priorie c'est compatible...

T'as essayé de mettre utilisation de force des cookies sur false?

wink


-->                    osCSS inside                   <--

Hors ligne

 

#6 10-04-2006 09:49:16

ZuckBin
Membre actif
Date d'inscription: 10-09-2005
Messages: 49
Réputation :   

Re: Url rewriting

Bonjour,

J'ai essayer de mettre utilisation de force des cookies sur false, et ca change rien.

Sinon, voici le code pour ceux que ca intéresse, pour ajouter une page a seo ou plusieurs.

Il s'agit du fichier seo.class.php pris ici le 07/04/06:
http://forum.oscommerce-freelancers.com … d.php?t=71

J'espere que c'est la derniere version.

On va ajouter 2 pages pour l'exemple: popup_image_2.php et popup_image_3.php.
Bien evidemment, c'est la meme technique pour vos pages, changer en fonction de vos noms de fichiers.

Vers la ligne 548

Code:

$seo_pages = array(FILENAME_DEFAULT, 
                      FILENAME_PRODUCT_INFO, 
               FILENAME_POPUP_IMAGE,
               FILENAME_POPUP_IMAGE_2,
               FILENAME_POPUP_IMAGE_3,
               FILENAME_PRODUCT_REVIEWS,
               FILENAME_PRODUCT_REVIEWS_INFO);

On ajoute FILENAME_POPUP_IMAGE_2, FILENAME_POPUP_IMAGE_3.

Vers la ligne 587

Code:

$this->reg_anchors = array('products_id' => '-p-',
                  'cPath' => '-c-',
                   'manufacturers_id' => '-m-',
                  'pID' => '-pi-',
                  'pID2' => '-pi2-',
                  'pID3' => '-pi3-',
                  'tPath' => '-t-',
                   'articles_id' => '-a-',
                   'products_id_review' => '-pr-',
                   'products_id_review_info' => '-pri-',
                   'info_id' => '-i-'
                  );

On ajoute 'pID2' => '-pi2-', 'pID3' => '-pi3-',

Vers la ligne 833

Code:

case 'pID':
         switch(true){
           case ($page == FILENAME_POPUP_IMAGE):
           $url = $this->make_url($page, $this->get_product_name($p2[1]), $p2[0], $p2[1], '.html', $separator);
            break;
          default:
            $container[$p2[0]] = $p2[1];
            break;
          } # end switch
          break;
        case 'pID2':
          switch(true){
           case ($page == FILENAME_POPUP_IMAGE_2):
           $url = $this->make_url($page, $this->get_product_name($p2[1]), $p2[0], $p2[1], '.html', $separator);
            break;
          default:
            $container[$p2[0]] = $p2[1];
            break;
          } # end switch
          break;
        case 'pID3':
          switch(true){
           case ($page == FILENAME_POPUP_IMAGE_3):
           $url = $this->make_url($page, $this->get_product_name($p2[1]), $p2[0], $p2[1], '.html', $separator);
            break;
          default:
            $container[$p2[0]] = $p2[1];
            break;
          } # end switch
          break;
        case 'tPath':
         switch(true){
           case ($page == FILENAME_ARTICLES):
              $url = $this->make_url($page, $this->get_topic_name($p2[1]), $p2[0], $p2[1], '.html', $separator);
              break;
            default:
              $container[$p2[0]] = $p2[1];
              break;
          } # end switch
          break;

On ajoute les cases pID2 et pID3

C'est fini pour ce fichier

Ne pas oublier d'ajouter les noms des 2 fichiers dans filenames.php

Code:

  define('FILENAME_POPUP_IMAGE_2', 'popup_image_2.php');
  define('FILENAME_POPUP_IMAGE_3', 'popup_image_3.php');

Et enfin dans le .htaccess

Code:

RewriteRule ^(.*)-pi2-(.*).html$ popup_image_2.php?pID=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pi3-(.*).html$ popup_image_3.php?pID=$2&%{QUERY_STRING}

Voila, j'ai toujours mon probleme d'ajout au panier, et de symbole ''amp;" dans l'url.
J'espere que ca aidera certains d'entre vous.

Concernant mon fichier html_output.php, voici le contenu de la fonction HTML href link wrapper function:

Code:

// The HTML href link wrapper function
if (SEO_ENABLED == 'true') { //run chemo's code
  function tep_href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true, $search_engine_safe = true) {
        global $seo_urls;
                if ( !is_object($seo_urls) ){
                        if ( !class_exists('SEO_URL') ){
                                include_once(DIR_WS_CLASSES . 'seo.class.php');
                        }
                        global $languages_id;
                        $seo_urls = new SEO_URL($languages_id);
                }
        return $seo_urls->href_link($page, $parameters, $connection, $add_session_id);
  }
} else { //run original code
// The HTML href link wrapper function
  function tep_href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true, $search_engine_safe = true) {
    global $request_type, $session_started, $SID;

    if (!tep_not_null($page)) {
      die('<br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine the page link!<br><br>');
    }

    if ($connection == 'NONSSL') {
      $link = HTTP_SERVER . DIR_WS_HTTP_CATALOG;
    } elseif ($connection == 'SSL') {
      if (ENABLE_SSL == true) {
        $link = HTTPS_SERVER . DIR_WS_HTTPS_CATALOG;
      } else {
        $link = HTTP_SERVER . DIR_WS_HTTP_CATALOG;
      }
    } else {
      die('<br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine connection method on a link!<br><br>Known methods: NONSSL SSL</b><br><br>');
    }

    if (tep_not_null($parameters)) {
      $link .= $page . '?' . tep_output_string($parameters);
      $separator = '&';
    } else {
      $link .= $page;
      $separator = '?';
    }

    while ( (substr($link, -1) == '&') || (substr($link, -1) == '?') ) $link = substr($link, 0, -1);

// Add the session ID when moving from different HTTP and HTTPS servers, or when SID is defined
    if ( ($add_session_id == true) && ($session_started == true) && (SESSION_FORCE_COOKIE_USE == 'False') ) {
      if (tep_not_null($SID)) {
        $_sid = $SID;
      } elseif ( ( ($request_type == 'NONSSL') && ($connection == 'SSL') && (ENABLE_SSL == true) ) || ( ($request_type == 'SSL') && ($connection == 'NONSSL') ) ) {
        if (HTTP_COOKIE_DOMAIN != HTTPS_COOKIE_DOMAIN) {
          $_sid = tep_session_name() . '=' . tep_session_id();
        }
      }
    }

    if ( (SEARCH_ENGINE_FRIENDLY_URLS == 'true') && ($search_engine_safe == true) ) {
      while (strstr($link, '&&')) $link = str_replace('&&', '&', $link);

      $link = str_replace('?', '/', $link);
      $link = str_replace('&', '/', $link);
      $link = str_replace('=', '/', $link);

      $separator = '?';
    }

    if (isset($_sid)) {
      $link .= $separator . $_sid;
    }

    return $link;
  }
}

Ca vous semble correct ?

++

Dernière modification par ZuckBin (10-04-2006 10:19:40)


_____________________
osCSS 1.0.1 + Full Rewriting + contribs...

Hors ligne

 

#7 12-04-2006 10:09:37

ZuckBin
Membre actif
Date d'inscription: 10-09-2005
Messages: 49
Réputation :   

Re: Url rewriting

Bonjour,

Je continu mes recherches concernant seo + oscss.

A présent, j'a plus de problemes de panier, ni de "amp;" dans l'url, il suffisait de commenter cette ligne:

Code:

// return str_replace('&', '&amp;', $get_url);

dans le fichier general.php dans la fonction

Code:

// Return all HTTP GET variables, except those passed as a parameter
  function tep_get_all_get_params($exclude_array = '')

On peu dire que c'est fonctionnel.

Maintenant, je voudrai m'attaquer à réecrire tout le site, donc tout les liens du site.

On a vu plus haut qu'on pouvait ajouter des adresses avec des paramètres.

Ca peu paraitre bete, mais je n'arrive pas à ajouter des adresses sans parametres, par exemple:

sitemap.php qui deviendrait plan-du-site.html

C'et facile du coté du .htaccess, mais je voudrais une fonction php qui fasse le boulot inverse par rapport au fichier .htaccess.

Je ne souhaite pas modifier tout mes liens du site sur toute les pages.

ll serait judicieux d'implémenter ces adresses directement dans la classe seo, en créant une nouvelle fonction.

Ainsi, le lien sera réecris automatiquement.

J'ai trouver une piste avec ce bout de code pris ici:
http://www.webmaster-experience.net/art … cle-2.html

"Nous avons vu comment ça se passe du côté du serveur mais au niveau du code PHP il faut maintenant avoir les bonnes url, c'est à dire au format .HTML. Pour cela il y a deux manière, la première c'est que vous mettiez les bonnes url directement dans votre code, soit utiliser une fonction PHP inverse de celle du .htacces. Cet deuxième solution a l'avantage d'être extrêmement souple, si vous changez vos règles ou si le support de l'URL Rewriting est désactivé du serveur. Voici la fonction que j'utilise :"

Code:

function lienurlrewriting($url) {
if (eregi("(.*).php(.*)",$url,$regs)) {
$monurl = $regs[1];
$geturl = $regs[2];
while (eregi("(.*)(\?|&)([^=]+)=([^=]*)(.*)",$geturl,$regs)) {
$geturl = $regs[1]."-".$regs[3]."-".$regs[4].$regs[5];
}
$url = $monurl.$geturl;
} elseif(eregi("(.*).php",$url,$regs)) {
$url = $regs[1];
}
return $url.".html";
}

Je ne sais pas trop comment implémenter ceci dans le fichier seo.class.php

Je pense que ca faciliterai pas mal le travail a tout ceux qui veulent utiliser l'url rewriting.

J'espere avoir ouvert une piste, je continu mes recherches de mon coté, en esperant que quelq'un de plus qualifié que moi s'intéresse à ce sujet.

Cordialement.
++

Dernière modification par ZuckBin (12-04-2006 10:12:46)


_____________________
osCSS 1.0.1 + Full Rewriting + contribs...

Hors ligne

 

#8 06-05-2006 15:55:33

fbparis
Membre inactif
Lieu: Paris
Date d'inscription: 06-05-2006
Messages: 8
Réputation :   
Site web

Re: Url rewriting

Bon, c resolu les amis et voila les modifs a faire dans la classe SEO_URL :

Ligne 549 dans le constructeur de la classe, ajouter FILENAME_PRODUCTS_NEW :

Code:

//ojp FILENAME_LINKS   
    $seo_pages = array(FILENAME_DEFAULT, 
                      FILENAME_PRODUCT_INFO,
              FILENAME_PRODUCTS_NEW,
              FILENAME_POPUP_IMAGE,
               FILENAME_PRODUCT_REVIEWS,
               FILENAME_PRODUCT_REVIEWS_INFO);

Ligne 753 :

Code:

  function parse_parameters($page, $params, &$separator){
   $params = str_replace('&amp;','&',$params);

Ligne 766 ajouter ca :

Code:

            case ( $page == FILENAME_PRODUCTS_NEW && !$this->is_attribute_string($p2[1]) ):
             $url = $this->make_url($page, $this->get_product_name($p2[1]), $p2[0], $p2[1], '.html', $separator);
              break;

Pour infos, j'ai aussi modifier ca dans include/functions/general/ pour la fonction tep_get_all_get_params ligne 198, je sais pas si ca joue mais ca peut pas faire de mal...

Code:

    return str_replace('&', '&amp;', str_replace('&amp;', '&', $get_url));

Voila, ne me remerciez pas, et sinon bravo a la personne qui a lance le projet osCss meme si ca semble pas bouger depuiis qq temps... Toutes les tables de la BDD s'installent pas lors de la procedure d'installation, et ya un petit bug dans la page pour gerer les menus dans l'admin, mais tout ca se corrige facilement... C'est un super projet en tous cas en attendant osCommerce 3 !

Hors ligne

 

#9 06-05-2006 16:40:44

fbparis
Membre inactif
Lieu: Paris
Date d'inscription: 06-05-2006
Messages: 8
Réputation :   
Site web

Re: Url rewriting

je viens de voir qu'il faut aussi ajouter FILENAME_ADVANCED_SEARCH_RESULT dans seo_pages

il semble sinon que la recherche fonctionne mal, je vais voir pour corriger ca smile

Hors ligne

 

#10 06-05-2006 17:39:09

fbparis
Membre inactif
Lieu: Paris
Date d'inscription: 06-05-2006
Messages: 8
Réputation :   
Site web

Re: Url rewriting

Bon je trouve pas pour la recherche avancee, donc j'ai ajoute ca dans advanced_serach_result.php au debut, apres $error = false :

Code:

  $query_string = str_replace('&amp;','&',$_SERVER['QUERY_STRING']);
  parse_str($query_string,$output);
  foreach ($output as $k=>$v) $_GET[$k] = urldecode($v);

au fait si la personne qui s'occupe de osCss veut reprendre du service, je peux aider pour sortir une version avec les qqs bugs corriges, et j'ai aussi ajoute un systeme de generation de rss pour les categories de produits, nouveautés et promotions et je vais faire aussi pour les resultats de recherche, j'ai aussi pondu une generation automatique de sitemap google.

prochaine etape, un menu dynamique 100% css sans js pour l'affichage des categories de produits, mais ca ca concerne le template a priori.

j'aurais pas le temps de sortir des contribs mais je veux bien transmettre toutes mes modifs a la personne qui s'occupera de sortir la contrib ou la mise a jour de osCss...

toutes mes modifs sont en prod sur le site d'un client : http://www.editions-jpl.com , si vous trouvez des bugs dites le moi hein !

Hors ligne

 

#11 06-05-2006 20:33:11

stepibou
Administrateur
Lieu: Lyon
Date d'inscription: 30-10-2005
Messages: 295
Réputation :   
Site web

Re: Url rewriting

Salut,

Merci pour l'explication sur l'integration de seo url..

return str_replace('&', '&amp;', str_replace('&amp;', '&', $get_url));
me semble une assez forte aberation big_smile

L'url rewriting de la recherche, ne present à priorie aucun interet vu que les moteur ne vont pas faire de recherche...

Sinon, pour les bugs, tu peux les presenter un à un dans le forum oscss rc1,
verifie bien qu'il n'est pas deja mensionné.

pour le rss, je comprend pas quel temps ca te prendrai de creer un poste ou tu met tes fichiers de création de rss prour categ, promo, nouveauté...
Après je pourrai le mettre dans le wiki , si ca te porte peine.

Regarde ce post : c'est quand meme un truc qui reste un plugin/contrib et qui est recherché par d'autres : http://forums.oscss.org/viewtopic.php?id=228
Si tu l'a fais, pourquoi ne pas partager?
regarde ici le peu de plugin dispo, et pourtant, il y en aurrai que deux , si je m'etais dis , ho j'ai pas le temps..., http://wiki.oscss.org/doku.php?id=osc:plugin
Donc , voila , merci de relier la parole aux actes, si possible.

J'ajouterai meme, que si manmachine, c'etait dit ha j'ai pas le temps de faire un site pour ma version , on serai pas là à faire des sites avec, ni discuter dessus... think about this!

a+


-->                    osCSS inside                   <--

Hors ligne

 

#12 10-05-2006 16:43:11

ZuckBin
Membre actif
Date d'inscription: 10-09-2005
Messages: 49
Réputation :   

Re: Url rewriting

Bonjour,

Pour mon cas, j'ai fini de rewriter tout mon site, je le test, et retest.

Dans mon post précédent, je disais que je n'arrivais pas à implémenter une page sans paramètres, c'est maintenant résolu.

Ceci est la méthode que j'utilise, si quelqu'un à trouvé mieux...

On va transformer le fichier suivant about.php en a-propos.html

Vous pourrez faire de mème pour d'autres pages.

Attention, pour reécrire tout votre site, certains paramètres doivent ètre pris en compte, et donc vous devez utilisez la premiere méthode cité plus haut.

Dans le fichier seo.class.php

Apres

Code:

  function href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true){

     $this->start($this->timestamp);
   $this->performance['NUMBER_URLS_GENERATED']++;
    if ( !in_array($page, $this->attributes['SEO_PAGES']) || $this->attributes['SEO_ENABLED'] == 'false' ) {

Rajouter ceci

Code:

if(eregi("(.*).php",$page,$regs)) {
$page = $regs[1];

$find[] = 'about';
$replace[] = 'a-propos';

$page = str_replace($find, $replace, $page);

return $page.'.html';
}

Dans le htaccess

Rajouter ceci

Code:

RewriteRule ^a-propos\.html$ about.php [L]

Normalement, vous devez vous retrouver avec le lien a-propos.html à la place de about.php, c'est implémenter dans la function href_link.

Voila,
J'attends vos questions, remarques,... si vous en avez.

++


_____________________
osCSS 1.0.1 + Full Rewriting + contribs...

Hors ligne

 

#13 25-05-2006 14:34:15

Av4t4r
Membre inactif
Date d'inscription: 25-04-2006
Messages: 2
Réputation :   

Re: Url rewriting

has anyone had any success with making this plugin fully osCSS compliant ?

Hors ligne

 

#14 13-12-2006 19:13:02

yozz
Membre inactif
Date d'inscription: 20-10-2006
Messages: 1
Réputation :   

Re: Url rewriting

Bonjour à tous.

J'ai reussi a installer SEO sans difficulté grace aux infos de ce post, donc, deja, merci smile

Il me reste un probleme avec les menus deroulants qui permettent de changer la devise ou le fabricant : apres avoir choisi dans la drop-box, on se retrouve a chaque fois sur la page d'accueil avec l'url :

Code:

index.php?shop=index.php

(shop est le sous-dossier ou se trouve oscss)

Si quelqu'un a des infos smile

Merci d'avance.

yozz.

Hors ligne

 

#15 16-12-2006 17:54:22

leksa
Membre inactif
Lieu: Montpellier
Date d'inscription: 07-12-2006
Messages: 6
Réputation :   
Site web

Re: Url rewriting

Salut,

Et bien de mon cote ceci fonctionne a moitié.

En effet les pages et les liens sont bien renommés cependant je tombe tout le temps sur une page "not found" ??!!

Si j'utilise des url sans variable ceci fonctionne bien, je pense donc que le mode rwrinting est ok sur le serveur.

Quelqu'un aurait-il une solution a ceci ?

Merci a + smile

Hors ligne

 

#16 03-01-2007 14:15:50

Mali
Modérateur
Date d'inscription: 29-03-2006
Messages: 257
Réputation :   
Site web

Re: Url rewriting

Bonjour,

quand je suis sur la page product_info, qui me présente donc le produit, et que je souhaite changer de langue :

Fatal error: Cannot instantiate non-existent class: infobox in /home/WwwBSD/kellidenn.com/includes/content/product_info.php on line 15

Du à la modification du fichier includes/fucntions/general.php de Zuckbin :

Code:

// return str_replace('&', '&amp;', $get_url);

Avec cette modif, le panier se rempli ! cool. Mais impossible de changer de langue... Exemple :

Code:

http://www.kellidenn.com/product_info.php?products_id=77

je souhaite passer en allemand :

Code:

http://www.kellidenn.com/product_info.php?language=de

il perd le "products_id=77"... et m'affiche :

Code:

Fatal error: Cannot instantiate non-existent class: infobox in /home/WwwBSD/kellidenn.com/includes/content/product_info.php on line 15

Pour info : la ligne 15 du fichier product_info est :     

<div class="infoText"><?php new infoBox(array(array('text' => TEXT_PRODUCT_NOT_FOUND))); ?></div>

quelqu'un peut m'aider ?

Hors ligne

 

#17 03-01-2007 16:54:38

Mali
Modérateur
Date d'inscription: 29-03-2006
Messages: 257
Réputation :   
Site web

Re: Url rewriting

Bon, j'ai avancé... ca a l'air d'être OK...

j'ai remis valide le code dans general.php :

Code:

// return str_replace('&', '&amp;', $get_url);

mais en inversant deux valeurs comme ici :

Code:

return str_replace('&amp;', '&', $get_url);

Ne comprenant pas grand chose... est ce que cela peut porter atteinte au fonctionnement de la boutique ? car j'ai été sur le site faire plusieurs essais, et ca a l'air de fonctionner en pratique.

Mali

Hors ligne

 

#18 03-01-2007 21:14:35

ZuckBin
Membre actif
Date d'inscription: 10-09-2005
Messages: 49
Réputation :   

Re: Url rewriting

Kikou,

Dans le fichier seo.class.php, j'ai ceci tout à la fin:

Code:

$url = preg_replace('/&amp;/','&',$url);

Je sais pas si ca va vous aidez.

Pour le multilangue, il à fallut que je fasse d'autre manipulations pour que cela fonctionne.

Quand vous avez une erreur de ce style:

Code:

Fatal error: Cannot instantiate non-existent class:

C'est que la class n'existe pas, et il faut la creer.

Si ca peu aider, voici mon fichier languages.php modifié, pour que cela fonctionne:

Code:

<?php
  if (!isset($lng) || (isset($lng) && !is_object($lng))) {
    include(DIR_WS_CLASSES . 'language.php');
    $lng = new language;
  }

  $languages_string = '';
  reset($lng->catalog_languages);
  
  if(strstr($_SERVER["REQUEST_URI"],'?language=')!=false)
  $_SERVER["REQUEST_URI"]=substr($_SERVER["REQUEST_URI"],0,strpos($_SERVER["REQUEST_URI"],'?language='));
elseif(strstr($_SERVER["REQUEST_URI"],'&language=')!=false)
  $_SERVER["REQUEST_URI"]=substr($_SERVER["REQUEST_URI"],0,strpos($_SERVER["REQUEST_URI"],'&language='));
 
  while (list($key, $value) = each($lng->catalog_languages)) {
 
    $amelyshack = tep_href_link_old(substr($_SERVER['REQUEST_URI'],strpos(substr($_SERVER['REQUEST_URI'],1),'/')+1), tep_get_all_get_params(array('language', 'currency')) . 'language=' . $key, $request_type);

    $amelyshack = 'http://'.str_replace('//','/',substr($amelyshack,7));

  if(count(explode('?',$amelyshack))>2)
  $amelyshack = str_replace('?language=','&language=',$amelyshack);
  
  $languages_string .= '<a href="' . $amelyshack . '">' . tep_image2(DIR_WS_LANGUAGES .  $value['directory'] . '/images/' . $value['image'], $value['name']) . '</a>';
   }
?>

Et une partie du code modifié de html_output.php

Code:

function tep_href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true, $search_engine_safe = true) {
  
    global $seo_urls;   
    if ( !is_object($seo_urls) ){
     if ( !class_exists('SEO_URL') ){
        include_once(DIR_WS_CLASSES . 'seo.class.php');
     }
     global $languages_id;
     $seo_urls = new SEO_URL($languages_id);
 }
 return $seo_urls->href_link($page, $parameters, $connection, $add_session_id);
  }


function tep_href_link_old($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true, $search_engine_safe = true) {
    global $request_type, $session_started, $SID;
  
    if (!tep_not_null($page)) {
      die('<p><br /><font color="#ff0000"><strong>Error!</strong></font><br /><br /><strong>Unable to determine the page link!</strong><br /></p>');
    }

    if ($connection == 'NONSSL') {
      $link = HTTP_SERVER . DIR_WS_HTTP_CATALOG;
    } elseif ($connection == 'SSL') {
      if (ENABLE_SSL == true) {
        $link = HTTPS_SERVER . DIR_WS_HTTPS_CATALOG;
      } else {
        $link = HTTP_SERVER . DIR_WS_HTTP_CATALOG;
      }
    } else {
      die('<p><br /><font color="#ff0000"><strong>Error!</strong></font><br /><br /><strong>Unable to determine connection method on a link!</strong><br />>Known methods: NONSSL SSL</p>');
    }

    if (tep_not_null($parameters)) {
      $link .= $page . '?' . tep_output_string($parameters);
      $separator = '&';
    } else {
      $link .= $page;
      $separator = '?';
    }

    while ( (substr($link, -1) == '&amp;') || (substr($link, -1) == '?') ) $link = substr($link, 0, -1);

// Add the session ID when moving from different HTTP and HTTPS servers, or when SID is defined
    if ( ($add_session_id == true) && ($session_started == true) && (SESSION_FORCE_COOKIE_USE == 'False') ) {
      if (tep_not_null($SID)) {
        $_sid = $SID;
      } elseif ( ( ($request_type == 'NONSSL') && ($connection == 'SSL') && (ENABLE_SSL == true) ) || ( ($request_type == 'SSL') && ($connection == 'NONSSL') ) ) {
        if (HTTP_COOKIE_DOMAIN != HTTPS_COOKIE_DOMAIN) {
          $_sid = tep_session_name() . '=' . tep_session_id();
        }
      }
    }

    if ( (SEARCH_ENGINE_FRIENDLY_URLS == 'true') && ($search_engine_safe == true) ) {
      while (strstr($link, '&&')) $link = str_replace('&&', '&', $link);

      $link = str_replace('?', '/', $link);
      $link = str_replace('&', '/', $link);
      $link = str_replace('=', '/', $link);

      $separator = '?';
    }

    if (isset($_sid)) {
      $link .= $separator . $_sid;
    }

    return $link;
  }

Si vous avez des remarques, questions...

++

Dernière modification par ZuckBin (03-01-2007 21:22:01)


_____________________
osCSS 1.0.1 + Full Rewriting + contribs...

Hors ligne

 

#19 03-01-2007 21:27:30

ZuckBin
Membre actif
Date d'inscription: 10-09-2005
Messages: 49
Réputation :   

Re: Url rewriting

yozz a écrit:

Bonjour à tous.

J'ai reussi a installer SEO sans difficulté grace aux infos de ce post, donc, deja, merci smile

Il me reste un probleme avec les menus deroulants qui permettent de changer la devise ou le fabricant : apres avoir choisi dans la drop-box, on se retrouve a chaque fois sur la page d'accueil avec l'url :

Code:

index.php?shop=index.php

(shop est le sous-dossier ou se trouve oscss)

Si quelqu'un a des infos smile

Merci d'avance.

yozz.

Kikou,

Pour les menus déroulants, il faut modifier soit la fonction qui gere les a href, soit tu t 'en recreer une, soit tu modifies à la mano.

Code:

  <dl>
    <dt onMouseOver="javascript:montre();"><a href="<?php echo tep_href_link(FILENAME_PRODUCTS_NEW) ;?>" title="<?php echo BOX_HEADING_WHATS_NEW; ?>"><?php echo BOX_HEADING_WHATS_NEW; ?></a></dt>
 </dl>

ou comme ca par exemple:

Code:

  <dl>
    <dt onMouseOver="javascript:montre();"><a href="accueil.html" title="<?php echo HEADER_TITLE_TOP; ?>"><?php echo HEADER_TITLE_TOP; ?></a></dt>
  </dl>

++


_____________________
osCSS 1.0.1 + Full Rewriting + contribs...

Hors ligne

 

#20 03-01-2007 23:13:29

stepibou
Administrateur
Lieu: Lyon
Date d'inscription: 30-10-2005
Messages: 295
Réputation :   
Site web

Re: Url rewriting

Salut,

merci de ne pas utiliser de short tag

remplacer <? par <?php

Et bonne année a tous au passage!


-->                    osCSS inside                   <--

Hors ligne

 

#21 06-01-2007 11:34:49

ZuckBin
Membre actif
Date d'inscription: 10-09-2005
Messages: 49
Réputation :   

Re: Url rewriting

leksa a écrit:

Salut,

Et bien de mon cote ceci fonctionne a moitié.

En effet les pages et les liens sont bien renommés cependant je tombe tout le temps sur une page "not found" ??!!

Si j'utilise des url sans variable ceci fonctionne bien, je pense donc que le mode rwrinting est ok sur le serveur.

Quelqu'un aurait-il une solution a ceci ?

Merci a + smile

Kikou,

Pour que cela fonctionne avec des pages avec et sans variables dans les urls, il faut bien faire cohabiter les 2 systemes que j'ai utilisés, et si on veut rajouter le multilangue, il faut bdouiller le fichier de languages.php.

Faut faire les choses par etapes, et y aller petit à petit.

On implémente les urls/liens avec les paramètres, on verifie bien que tout fonctionne, que notre htaccess est bon, et que le fichier seo.class.php est bon, avec les bon 'case'.

++


_____________________
osCSS 1.0.1 + Full Rewriting + contribs...

Hors ligne

 

#22 29-01-2007 09:58:59

Mali
Modérateur
Date d'inscription: 29-03-2006
Messages: 257
Réputation :   
Site web

Re: Url rewriting

Souci avec la version 2.d

je m'en suis apercu il ya peu de temps, j'ai essayé de résoudre... que dal !

Si quelque un peut m'aider (les modifs effectuées sont celles décrites ci-dessus) :

-le rewriting fonctionne bien,
-le changement de langue aussi
-de meme que le "currencie"
-aucun souci de rajout dans panier, pour se logger ou payer par CB

exemple (classement par famille de produit) :

http://www.kellidenn.com/alcool-eaudevie-c-28_104.html




par contre 2 soucis :
1 -
quand je fais apparaitre tous les produits du meme fabricant :

http://www.kellidenn.com/alexis-maman-m-117.html

les liens ne sont pas rewrittés !

http://www.kellidenn.com/product_info.p … ucts_id=55

ET pire que ca, ne sont pas fonctionnels !!!

pourtant j'ai bien la ligne

Code:

$url = preg_replace('/&amp;/','&',$url)

dans le fichier seo.class.php

2 -
deuxième souci, moins grave :

http://www.kellidenn.com/alcool-eaudevie-c-28_104.html

le bouton à droite, acheter maintenant n'est pas fonctionnel, quand on clique dessus, on est directement diriger vers le shopping_cart mais VIDE !

Celui qui m'ennuie vraiement c'est le premier point !!!! si quelqu'un peut m'aider. ca serait sympa.

Merci

Mali

Hors ligne

 

#23 06-02-2007 10:06:34

Mali
Modérateur
Date d'inscription: 29-03-2006
Messages: 257
Réputation :   
Site web

Re: Url rewriting

euh.... là ca devient problématique... plusieurs personne tombe sur des pages blanches car le lien est incorrect !!!! please.

Si vous n'en avez aucune idée de comment débugger ca, mais que chez vous ca fonctionne (meme avec la page manufacturer), vous pouvez à la limite me communiquer vos pages seo.class, general, html.output...

Siouplait !

Merci

Mali

Hors ligne

 

#24 06-02-2007 11:41:46

scottfx2
Membre actif
Date d'inscription: 27-11-2006
Messages: 13
Réputation :   

Re: Url rewriting

Mali a écrit:

Bon, j'ai avancé... ca a l'air d'être OK...

j'ai remis valide le code dans general.php :

Code:

// return str_replace('&', '&amp;', $get_url);

mais en inversant deux valeurs comme ici :

Code:

return str_replace('&amp;', '&', $get_url);

Ne comprenant pas grand chose... est ce que cela peut porter atteinte au fonctionnement de la boutique ? car j'ai été sur le site faire plusieurs essais, et ca a l'air de fonctionner en pratique.

Mali

J'ai eu le même problème que toi.
Dans ton liens ce qui géne c'est le AMP. Il ne doit y être.
Et en faisant juste la modification cité j'ai resolu ce problème.

Hors ligne

 

#25 06-02-2007 11:43:16

scottfx2
Membre actif
Date d'inscription: 27-11-2006
Messages: 13
Réputation :   

Re: Url rewriting

Le probléme 1 résout le problème 2

Hors ligne

 

Pied de page des forums

Powered by PunBB and MyBestBB