[RÉSOLU] Générer lien RSS

NaBiSsNaBiSs Member
juillet 2018 modifié dans Entraide
Bonjour à tous,

Pour mon thème perso, je souhaite me passer de la fonction $plxShow->comFeed() ou encore $plxShow->artFeed().

L'intérêt pour moi, c'est de récupérer uniquement le lien généré affin de l'afficher sous forme d'icone et non de texte (exemple : "Fil RSS des commentaires de cet article" ou encore "Fil RSS des articles de cette catégorie").

Sachant que sur le wiki, je n'ai pas trouvé de possibilité de ressortir uniquement le lien généré à partir de $plxShow.

Quelqu'un aurait une astuce ?

Réponses

  • Bonjour NaBiSs,

    pour être sûr de bien comprendre ta demande, tu souhaites conserver la gestion interne des flux RSS mais remplacer les liens textuels par des icônes ?
  • NaBiSsNaBiSs Member
    juillet 2018 modifié
    Bonjour kowalsky,

    Exactement, $plxShow génère le texte + le lien, et je n'ai pas trouvé de possibilité de le modifier.

    Ce que je souhaite faire, c'est simplement utiliser le texte que je souhaite. Donc dans l'idée, récupérer uniquement le lien généré automatiquement par cette fonction.
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    juillet 2018 modifié
    Il faut modifier le code de PluXml dans le fichier core/lib/class.plx.show.php pour les 2 fonctions suivantes :
    [== PHP ==]
        public function artFeed($type='rss', $categorie='') {
            # Hook Plugins
            if(eval($this->plxMotor->plxPlugins->callHook('plxShowArtFeed'))) return;
    
            $href = '';
            
            if(!empty($categorie) AND is_numeric($categorie)) {
                # Fil Rss des articles d'une catégorie
                $id=str_pad($categorie,3,'0',STR_PAD_LEFT);
                if(isset($this->plxMotor->aCats[$id])) {
                    $href = $this->plxMotor->urlRewrite('feed.php?rss/categorie'.$categorie.'/'.$this->plxMotor->aCats[$id]['url']);
                    $caption = L_ARTFEED_RSS_CATEGORY;
                }
            } else {
                # Fil Rss des articles
                $href = $this->plxMotor->urlRewrite('feed.php?rss');
                $caption = L_ARTFEED_RSS;
                echo '<a href="'.$href.'" title="'.L_ARTFEED_RSS.'">'.L_ARTFEED_RSS.'</a>';
            }
            if($type != 'link') {
                echo '<a href="'.$ref.'" title="'.$caption.'">'.$caption.'</a>';
            } else {
                return $href;
            }
        }
    

    Pour avoir uniquement les URLS des flux RSS, faire $plxShow->artFeed('link', $catId);
    $catId est optionnel.

    Même chose pour les tags :
    [== PHP ==]
       public function tagFeed($type='rss', $tag='') {
    
            # Hook Plugins
            if(eval($this->plxMotor->plxPlugins->callHook('plxShowTagFeed'))) return;
    
            $href = '';
            
            if(empty($tag) AND $this->plxMotor->mode == 'tags')
                $tag = $this->plxMotor->cible;
            
            $href = $this->plxMotor->urlRewrite('feed.php?rss/tag/'.plxUtils::strCheck($tag));
            if($type != 'link') {
                echo '<a href="'.$href.'" title="'.L_ARTFEED_RSS_TAG.'">'.L_ARTFEED_RSS_TAG.'</a>';
            } else {
                return $href;
            }
    
        }
    

    Comme cela, on peut mettre les liens des flux RSS dans le head de la page HTML
  • NaBiSsNaBiSs Member
    juillet 2018 modifié
    Bonjour bazooka, merci pour ton retour.

    Cependant j'ai une autre question : n'y a t'il pas un moyen de générer ces liens sans passer par la modification du core ?

    Car je souhaite partager mon thème par la suite, et pour les débutants mais aussi pour la maintenance, c'est plus simple de faire les évolutions dans le dossier thème que dans le core, surtout pour ce que cela apporte (ce n'est que du style).

    EDIT : à mon sens, il serait intéressant d'intégrer la modification proposée par bazooka dans le core pour permettre aux créateurs de thèmes d'avoir plus de flexibilité. Je ne suis pas un bon développeur, mais PluXml a cette faculté de rester accessible et compréhensible pour les bidouilleurs en intégration web comme moi. Et le système de fonction avec des paramètres est assez facile de prise en main et offre cette flexibilité recherchée.
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Bonjour,

    Il te suffit d'adapter ces 2 fonctions et les déclarer dans le fichier header.php de ton thème. On peut alors les simplifier.
    [== PHP ==]
    function artFeedLink($categorie='') {
        global $plxShow;
        
        $href = '';
        
        if(!empty($categorie) AND is_numeric($categorie)) {
            # Fil Rss des articles d'une catégorie
            $id=str_pad($categorie,3,'0',STR_PAD_LEFT);
            if(isset($plxShow->plxMotor->aCats[$id])) {
                $href = $show->plxMotor->urlRewrite('feed.php?rss/categorie'.$categorie.'/'.$show->plxMotor->aCats[$id]['url']);
            }
        } else {
            # Fil Rss des articles
            $href = $show->plxMotor->urlRewrite('feed.php?rss');
        }
        return $href;
    }
    
    public function tagFeedLink($tag='') {
        global $plxShow;
    
        if(empty($tag) AND $plxShow->plxMotor->mode == 'tags')
            $tag = $plxShow->plxMotor->cible;
        
        return $plxShow->plxMotor->urlRewrite('feed.php?rss/tag/'.plxUtils::strCheck($tag));
    }
    

    Rien ne prouve que tout le monde va adopter ton thème.

    L'idée est d'améliorer PluXml et d'avoir la même fonctionnalité que la fonction pxShow::artTitle($type='').
  • Si je peux mettre ce code dans mon header, alors c'est parfait !

    Par contre ma demande n'est pas que tout le monde adopte mon thème, c'est surtout que j'obtienne les outils nécessaires pour afficher les données sous la forme que je souhaite, sans pour autant avoir des talents de programmeurs.

    Merci beaucoup pour ton aide, je testerai tout cela ce soir.
  • Je n'ai pas réussi a utiliser les fonctions, mais en m'inspirant du code j'ai pu regénérer le lien tel que je voulais :
    <?php //lien RSS CATEGORIES
    	$id= str_pad($plxShow->catId(), 3, '0', STR_PAD_LEFT);
    	$url= $plxMotor->urlRewrite('feed.php?rss/categorie'.intval($id).'/'.$plxMotor->aCats[$id]['url']);
    ?>
    

    Ensuite dans la page
    <a href="<?php echo $url ?>">BLA BLA </a>
    
    
Connectez-vous ou Inscrivez-vous pour répondre.