PluXml.org

Blog ou CMS à l'Xml

Vous n'êtes pas identifié(e).

#1 10/01/2019 12:01:10

je-evrard
Membre
Lieu : pau
Inscription : 08/05/2012
Messages : 1 217
Site Web

Archive total : proposition modification

Bonjour,

Le lien sur l'archive total propose d'aller directement à la racine du site (blog).

Or il se trouve que quand une page statique est défini comme page d'accueil ça devrait aller sur la page de blog.

On a aujourd'hui :

[== PHP ==]
if(strpos($format, '#archives_nbart') !== false) {
				$motifs = array(
					'#archives_id'		=> 'arch-total',
					'#archives_name'	=> L_TOTAL.' ',
					'#archives_year'	=> str_repeat('–', 4),
					'#archives_month'	=> L_TOTAL,
					'#archives_url'		=> $this->plxMotor->urlRewrite(),
					'#archives_nbart'	=> $total,
					'#archives_status'	=> ($active) ? 'active' : 'noactive',
					'#archives_selected'=> ($active) ? 'selected' : ''
				);
				echo str_replace(array_keys($motifs), array_values($motifs), $format);
			}

Proposition de modification :

[== Indéfini ==]
# Total des articles
            if($this->plxMotor->aStats[$this->plxMotor->aConf['homestatic']]['active']) {
                $total_url = $this->plxMotor->urlRewrite('?blog');
            } else {
                $total_url = $this->plxMotor->urlRewrite();
            }
			
			
			if(strpos($format, '#archives_nbart') !== false) {
				$motifs = array(
					'#archives_id'		=> 'arch-total',
					'#archives_name'	=> L_TOTAL.' ',
					'#archives_year'	=> str_repeat('–', 4),
					'#archives_month'	=> L_TOTAL,
					'#archives_url'		=> $total_url,
					'#archives_nbart'	=> $total,
					'#archives_status'	=> ($active) ? 'active' : 'noactive',
					'#archives_selected'=> ($active) ? 'selected' : ''
				);
				echo str_replace(array_keys($motifs), array_values($motifs), $format);
			}

Bonne journée,

Cordialement,

jérôme

Dernière modification par je-evrard (10/01/2019 12:05:44)


Petit à petit l'oiseau fait son nid.
- Sites : Création web - Création artistique
- pluxml : Plugins - Visual Wizard - facebook vw

Hors ligne

#2 10/01/2019 12:24:34

bazooka07
Membre
Lieu : Quelque part en Rhône-Alpes
Inscription : 06/02/2014
Messages : 1 238
Site Web

Re : Archive total : proposition modification

Dans ce cas de figure, l'usage de str_replace est à proscrire !
Voir remarque "attention" ici : http://php.net/manual/fr/function.str-replace.php

[== php ==]
php > $a = 'mon username est personne';
php > $r1 =array('user' => 'utilisateur ', 'username' => 'nom usage');
php > echo str_replace(array_keys($r1), array_values($r1), $a);
mon utilisateur name est personne
php > $r2 =array('username' => 'nom usage', 'user' => 'utilisateur ');
php > echo str_replace(array_keys($r2), array_values($r2), $a);
mon nom usage est personne

Il faut utiliser strtr qui remplace en commençant par les chaînes les plus longues. En prime, il est plus simple d'utilsation

[== php ==]
php > echo strtr($a, $r1);
mon nom usage est personne

Certes, PluXml est truffé de str_replace mal employés. Mais bon ...
On en a déjà parlé sur Github.

Hors ligne

#3 10/01/2019 18:13:49

kamea
Membre
Lieu : Bergerac
Inscription : 24/04/2012
Messages : 70
Site Web

Re : Archive total : proposition modification

Haaaa génial !!! Merci Jérôme, mes sites fonctionnent mieux à présent le lien est bon. J'imagine effectivement que toutes celles et ceux qui utilisent une page statique par défaut vont être heureux smile

Par contre, je n'ai aucune utilité du "total des archives", on a déjà les années ça suffit amplement. Y'a t'il un moyen de supprimer le total et de garder mois et années facilement ? je crois que la fonction affiche tout sad

Merci.

Dernière modification par kamea (10/01/2019 18:15:59)


Salutations cybernétiques.

William K.

Site Blablaoo : https://www.blablaoo.com

Hors ligne

#4 10/01/2019 18:44:43

bazooka07
Membre
Lieu : Quelque part en Rhône-Alpes
Inscription : 06/02/2014
Messages : 1 238
Site Web

Re : Archive total : proposition modification

C'est vrai que le cumul général n'est pas vraiment d'une grande utilité.
En plus la modif est assez simple à faire. Dans core/lib/class.plx.show.php, vers la ligne 1815, rajouter un paramètre par défaut à la fonction archList() comme suit :

[== PHP ==]
public function archList($format='<li id="#archives_id"><a class="#archives_status" href="#archives_url" title="#archives_name">#archives_name</a></li>', $total_general=true)

Et quelques lignes plus loin après "# Total des articles" modifier le test if comme suit :

[== PHP ==]
if($total_general and strpos($format, '#archives_nbart') !== false)

Il faut bien  sûr conserver le caractère "{" à la fin de chaque ligne.
Et dans ton thème, tu rajoutes la valeur false quand tu appelles la fonction comme suit :

[== PHP ==]
$plxShow->archList('<li id="#archives_id"><a class="#archives_status" href="#archives_url" title="#archives_name">#archives_name</a></li>', false);

Dommage que PluXml n'utilise pas les constantes de class. Cela éviterait de ré-écrire la chaine $format.

Dernière modification par bazooka07 (10/01/2019 18:46:12)

Hors ligne

#5 10/01/2019 18:56:56

bazooka07
Membre
Lieu : Quelque part en Rhône-Alpes
Inscription : 06/02/2014
Messages : 1 238
Site Web

Re : Archive total : proposition modification

[== PHP ==]
    public function archList($format='<li id="#archives_id"><a class="#archives_status" href="#archives_url" title="#archives_name">#archives_name</a></li>') {
            # ......

            # Total des articles
            if(!empty($total_general) and strpos($format, '#archives_nbart') !== false) {
                $url = ($this->plxMotor->aStats[$this->plxMotor->aConf['homestatic']]['active']) ? '?blog' : '' ;
                echo strtr($format, array(
                    '#archives_id'      => 'arch-total',
                    '#archives_name'    => L_TOTAL.' ',
                    '#archives_year'    => str_repeat('–', 4),
                    '#archives_month'   => L_TOTAL,
                    '#archives_url'     => $this->plxMotor->urlRewrite($url),
                    '#archives_nbart'   => $total,
                    '#archives_status'  => ($active) ? 'active' : 'noactive',
                    '#archives_selected'=> ($active) ? 'selected' : ''
                ));
            }
      }

Elle n'est pas bien la fonction PHP Strtr ?

Hors ligne

#6 13/01/2019 18:19:35

P3ter
Responsable de PluXml
Lieu : Ile De France
Inscription : 17/10/2011
Messages : 313
Site Web

Re : Archive total : proposition modification

Bonjour,

J'ai créé une issue pour intégrer cette modification à la prochaine version de PluXml : https://github.com/pluxml/PluXml/issues/312


Responsable de PluXml
PluXml sur Twitter : @pluxml
Mon Twitter : @p3terfr - Mon blog : p3ter.fr

Hors ligne

#7 14/01/2019 00:27:48

bazooka07
Membre
Lieu : Quelque part en Rhône-Alpes
Inscription : 06/02/2014
Messages : 1 238
Site Web

Re : Archive total : proposition modification

Il y beaucoup d'endroits où on pourrait remplacer str_replace par strtr. Dans un terminal à la racine du site, faire :

[== bash ==]
grep -n str_replace core/{admin,lib}/*.php

Hors ligne

#8 14/01/2019 12:11:00

je-evrard
Membre
Lieu : pau
Inscription : 08/05/2012
Messages : 1 217
Site Web

Re : Archive total : proposition modification

Merci @P3ter


Petit à petit l'oiseau fait son nid.
- Sites : Création web - Création artistique
- pluxml : Plugins - Visual Wizard - facebook vw

Hors ligne

Pied de page des forums

A propos Nous soutenir Contact Twitter Google+
Copyright © 2006-2019 PluXml.org, tous droits réservés