Image d'article, afficher une vignette

Bonjour,

J'ai fais une petite modification dans le fichier class.plx.show.php. Cette modification permet d'afficher la vignette d'une image d'article au lieu de la version en grande taille redimensionner par css.
[== PHP ==]
	public function artThumbnail($format='<img class="art_thumbnail" src="#img_url" alt="#img_alt" title="#img_title" />', $echo=true) {

		$imgUrl = $this->plxMotor->plxRecord_arts->f('thumbnail');
		if($imgUrl) {
			$row = str_replace('#img_url', $this->plxMotor->urlRewrite($imgUrl), $format);
			$row = str_replace('#img_title', plxUtils::strCheck($this->plxMotor->plxRecord_arts->f('thumbnail_title')), $row);
			$row = str_replace('#img_alt', $this->plxMotor->plxRecord_arts->f('thumbnail_alt'), $row);
			if($echo)
				echo $row;
			else
				return $row;
		} else {
			if(!$echo) return false;
		}

	}

Par
[== PHP ==]
	public function artThumbnail($format='<img class="art_thumbnail" src="#img_url" alt="#img_alt" title="#img_title" />', $echo=true, $thumb=true) {

		$imgUrl = $this->plxMotor->plxRecord_arts->f('thumbnail');
		if($imgUrl) {
			if($thumb) {
				$filename = parse_url($imgUrl);
				$filename = basename($filename['path']);
				$thumbfile = plxUtils::thumbName($filename);
				$imgUrl = str_replace($filename, $thumbfile, $imgUrl);
				$row = str_replace('#img_url', $this->plxMotor->urlRewrite($imgUrl), $format);
			} 
			$row = str_replace('#img_url', $this->plxMotor->urlRewrite($imgUrl), $format);
			$row = str_replace('#img_title', plxUtils::strCheck($this->plxMotor->plxRecord_arts->f('thumbnail_title')), $row);
			$row = str_replace('#img_alt', $this->plxMotor->plxRecord_arts->f('thumbnail_alt'), $row);
			if($echo)
				echo $row;
			else
				return $row;
		} else {
			if(!$echo) return false;
		}

	}

J'ai un string de l'array

Réponses

  • bazooka07bazooka07 Membres
    juin 2018 modifié
    Bonjour,

    Je pense que rajouter une option dans $format serait plus souple. En particulier, cela permettrait de zoomer la vignette de l'image.
    Je suggère de modifler la fonction plxShow:::artThumbnail(..) comme suit :
    [== PHP ==]
    public function artThumbnail($format='<a href="#img_url"><img class="art_thumbnail" src="#img_thumb_url" alt="#img_alt" title="#img_title" /></a>', $echo=true) {
    
        $filename = trim($this->plxMotor->plxRecord_arts->f('thumbnail'));
        if(!empty($filename)) {
            $img_url = $this->plxMotor->urlRewrite($filename);
            $img_thumb = plxUtils::thumbName($filename);
            $replaces = array(
                '#img_url'      => $img_url,
                '#img_thumb_url'=> (file_exists(PLX_ROOT.$img_thumb)) ? $this->plxMotor->urlRewrite($img_thumb) : $img_url,
                '#img_title'    => plxUtils::strCheck($this->plxMotor->plxRecord_arts->f('thumbnail_title')),
                '#img_alt'      => $this->plxMotor->plxRecord_arts->f('thumbnail_alt')
            );
            if($echo)
                echo str_replace(array_keys($replaces), array_values($replaces), $format);
            else
                return str_replace(array_keys($replaces), array_values($replaces), $format);
        } elseif(!$echo)  {
                return false;
        }
    
    }
    

    On pourra également corriger la fonction plxUtils::thumbName(...) comme suit où l'expression régulière manque de précision :
    [== PHP ==]
    public static function thumbName($filename) {
        if(preg_match('/^(.*\.)(jpe?g|png|gif)$/iD', $filename, $matches)) {
            return $matches[1].'tb.'.$matches[2];
        } else {
            return $filename;
        }
    }
    

    Sur Github, pour éviter du travail supplémentaire à Stéphane, il vaut mieux faire un pull request au lieu d'ouvrir un nouvel issue
  • Sur Github, pour éviter du travail supplémentaire à Stéphane, il vaut mieux faire un pull request au lieu d'ouvrir un nouvel issue
    Je suis d'accord mais je ne suis pas encore assez organisé et je maitrise pas assez bien github pour aller jusqu'au pull request ;)

    J'ai un string de l'array

  • On a fait le pull request et il a été validé.

    Si tu as déjà utilisé git, pour récupérer la mise à jour de la version en développement de PluXml :
    [== bash ==]
    git pull origin master
    
    Sinon pour la 1ère fois
    [== bash ==]
    git clone https://github.com/pluxml/PluXml.git
    
  • ou tu peux aller sur https://github.com/pluxml/PluXml
    et utiliser le bouton vert "Clone or download" pour télécharger un .zip des sources de la version en cours de developpement de PluXml

    @bazooka07: merci pour le pull request

    Consultant PluXml

    Ancien responsable du projet

Connectez-vous ou Inscrivez-vous pour répondre.