SEF dans un composant écrit par un autre

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • SEF dans un composant écrit par un autre

    Bonjour,

    Suite à une demande de mon client, je dois rajouter l'url Rewriting dans un composant développé par un autre développeur et je dois donc reprendre son code -_-''

    Il s'agit d'un composant pour gérer une liste de cours. les cours sont classés dans des catégories.

    Je suis bloqué au niveau du router.php...

    Mon url est actuellement sur le format suivant : http://www.monsite.ch/component/cours/?id=7
    J'aimerai l'avoir comme ceci : http://www.monsite.ch/component/cours/mindmapping

    il n'y a donc plus que l'id à remplacer par l'alias. (pas besoin d'afficher la catégorie)

    mon fichier routeur.php
    Code PHP:
    function CoursBuildRoute($query)
    {
        
    $segments = array();

        if (isset(
    $query['task'])) {
            
    $segments[] = $query['task'];
            unset(
    $query['task']);
        }
        if (isset(
    $query['id'])) {
            
    $segments[] = $query['id'];
            unset(
    $query['id']);
        }

        return 
    $segments;
    }

    /**
     * CoursParseRoute
     *
     * @param    array    A named array
     * @param    array
     */
    function CoursParseRoute($segments)
    {
        
    $vars = array();

        
    // view is always the first element of the array
        
    $count count($segments);

        if (
    $count)
        {
            
    $count--;
            
    $segment array_shift($segments);
            if (
    is_numeric($segment)) {
                
    $vars['id'] = $segment;
            } else {
                
    $vars['task'] = $segment;
            }
        }

        if (
    $count)
        {
            
    $count--;
            
    $segment array_shift($segments) ;
            if (
    is_numeric($segment)) {
                
    $vars['id'] = $segment;
            }
        }

        return 
    $vars;


    Merci pour votre aide, n'hésitez pas à me demander s'il manque quelque chose.



    Ambroise

  • #2
    Re : SEF dans un composant écrit par un autre

    Toujours pas d'idée ?

    Commentaire


    • #3
      Re : SEF dans un composant écrit par un autre

      Slt,

      Sans vouloir vous frustrer, vous n'auriez pas dû commencer par " Suite à une demande de mon client, je dois... ".
      Soit vous êtes pro ou vous ne l'êtes pas !

      Retentez votre chance différemment

      Commentaire


      • #4
        Re : SEF dans un composant écrit par un autre

        suite a la demande de a.fauchére
        Il faut récupere l'alias dans ta table mysql
        Voici un code "générique"
        Code PHP:
            // get ID by alias
            
        function getId($alias) {
                
        $pos strpos($alias,':');
                if (
        $pos !== false) {
                    
        $alias substr_replace($alias,'-',$pos,1);
                }

                
        $query 'SELECT id FROM #__matable WHERE alias='.$this->_db->quote$this->_db->getEscaped$alias ) );
                
        $db->setQuery($query);
                
        $id $db->loadResult();
                return 
        $id;
            }
            
        // set alias by ID
            
        function getAlias($id) {
                
        $db JFactory::getDBO();
                
        $query 'SELECT alias FROM #__matable WHERE id='.(int)$id ;
                
        $db->setQuery($query);
                
        $alias $db->loadResult();
                return 
        $alias $alias $id;
            } 
        getAlias doit être appelé pour trouver ton alias et le rajouter au routeur
        Code PHP:
            if (isset($query['id'])) {
                
        $segments[] = maclass::getAlias($query['id']);
                unset(
        $query['id']);
            } 
        getId et pour retrouver ton id

        Code PHP:
              if ($count==2)
            {
                
        $count--;
                
        $alias array_shift($segments); 
                
        $vars['id'] = maclass::getId($alias );
            }
        if (
        $count==1) {
        $vars['task'] = array_shift($segments) ;
        }
        .... 
        Attention cela dépend de la compléxité de ton composant !!! a complété ou modifier surtout maclass
        http://www.st42.fr : Astuce et téléchargement d’extension Joomla! et virtuemart
        http://shop.st42.fr Catalogue extentions gratuit et Pro pour Virtuemart et Joomla

        Commentaire

        Annonce

        Réduire
        Aucune annonce pour le moment.

        Partenaire de l'association

        Réduire

        Hébergeur Web PlanetHoster
        Travaille ...
        X