Ajouter des liens externes comme des pages statiques

StéphaneStéphane Member, Former PluXml Project Manager
EDIT 12/10/2010 modification rajoutée: voir code plus bas

Bonjour ami(e)s de PluXml

Suite à une discussion ici, je vous propose après quelques modifications dans votre PluXml la possibilité d'ajouter des liens externes dans la liste de vos pages statiques.

L'idée est de pouvoir saisir une adresse http:// dans la colonne url, sur la page de gestions des pages statiques

statiques.jpg


- Si vous ne saisissez rien dans le champ url lors de la création d'une nouvelle page statique, l'url sera définie automatiquement par PluXml et sera considéré comme une page statique.
- Si vous saisissez une url de type http://, PluXml considerera que ce n'est plus une page statique mais un lien externe.

De cette façon, il est désormais possible d'insérer des liens, autres que des pages statiques dans la barre des menus générée par la fonction $plxShow->staticList() (voir fichier header.php du thème par défaut)

L'autre idée par la publication du code sur le forum est d'avoir votre ressenti sur l'utilité et l'utilisation de cette fonctionnalité afin de l'ajouter en natif dans la prochaine version de PluXml.

Merci donc d'avance à ceux qui testeront et qui laisseront leur impression à la suite de ce post.

--

Voici donc les "quelques modifications".


Remplacer dans le fichier core.plx.admin.php (fonction editStatiques)

ligne 378:
$stat_url = (isset($content[$static_id.'_url'])?trim($content[$static_id.'_url']):'');
					$stat_url = ($stat_url!=''?plxUtils::title2url($stat_url):plxUtils::title2url($stat_name));
par
$url = (isset($content[$static_id.'_url'])?trim($content[$static_id.'_url']):'');
					$stat_url = ($url!=''?plxUtils::title2url($url):plxUtils::title2url($stat_name));
et

ligne 390:
'url' => $stat_url,
par
'url' => plxUtils::checkSite($url)?$url:$stat_url,
EDIT 12/10/2010: modification rajoutée

remplacer la ligne 394:
'template' => $content[$static_id.'_template']
par
'template' => (isset($content[$static_id.'_template'])?$content[$static_id.'_template']:'')
fin EDIT 12/10/2010


Remplacer dans le fichier core/lib/class.plx.show.php (fonction staticList)

ligne 973:
$stat = str_replace('#static_url',$this->plxMotor->urlRewrite('?static'.intval($k).'/'.$v['url']),$stat);
par
if(plxUtils::checkSite($v['url']))
						$stat = str_replace('#static_url',$v['url'],$stat);
					else
						$stat = str_replace('#static_url',$this->plxMotor->urlRewrite('?static'.intval($k).'/'.$v['url']),$stat);
Remplacer dans le fichier core/admin/statiques.php

ligne 71:
echo '</td><td class="tc6">';
			echo '<a href="statique.php?p='.$k.'" title="Editer le code source de cette page">Éditer</a> - ';
			echo '<a href="'.PLX_ROOT.'?static'.intval($k).'/'.$v['url'].'" title="Visualiser la page '.plxUtils::strCheck($v['name']).' sur le site">Voir</a> - ';
			echo '<a id="link_'.$k.'" href="#" onclick="toggleTR(\'link_'.$k.'\', \'tr_'.$k.'\')">Options</a>';
			echo '</td></tr>';
			echo '<tr class="options" id="tr_'.$k.'"><td colspan="3" class="options-head">Template :</td><td colspan="6">  themes/'.$plxAdmin->aConf['style'].'/';
			plxUtils::printSelect($k.'_template', $aTemplates, $v['template']);
			echo '</td></tr>';
par
if(!plxUtils::checkSite($v['url'])) {
				echo '</td><td class="tc6">';
				echo '<a href="statique.php?p='.$k.'" title="Editer le code source de cette page">Éditer</a> - ';
				echo '<a href="'.PLX_ROOT.'?static'.intval($k).'/'.$v['url'].'" title="Visualiser la page '.plxUtils::strCheck($v['name']).' sur le site">Voir</a> - ';
				echo '<a id="link_'.$k.'" href="#" onclick="toggleTR(\'link_'.$k.'\', \'tr_'.$k.'\')">Options</a>';
				echo '</td></tr>';
				echo '<tr class="options" id="tr_'.$k.'"><td colspan="3" class="options-head">Template :</td><td colspan="6">  themes/'.$plxAdmin->aConf['style'].'/';
				plxUtils::printSelect($k.'_template', $aTemplates, $v['template']);
				echo '</td></tr>';
			}
			else
				echo '</td><td class="tc6"> </td></tr>';
Remplacer dans le fichier core/lib/class.plx.motor.php

ligne 260:
if(!isset($this->aStats[ $this->cible ]) OR intval($this->aStats[ $this->cible ]['active']) != 1) {
par
if(!isset($this->aStats[ $this->cible ]) OR plxUtils::checkSite($this->aStats[ $this->cible ]['url']) OR intval($this->aStats[ $this->cible ]['active']) != 1) {

Consultant PluXml

Ancien responsable et développeur de PluXml (2010 à 2018)

«1

Réponses

  • super_g2super_g2 Member
    octobre 2010 modifié
    Re,
    Cela marche du tonnerre !!

    Perso, j'adhère totalement :) Très pratique, même si ce n'est pas pour beaucoup de liens, c'est toujours pratique.

    Bravo Stéphane pour une telle réactivité !

    et il faudra ajouter d'autres protocoles (comme skype://, etc...) donc faudrait retoucher la reconnaissance d'url en cherchant plutôt le schéma ":" (ben vi, mailto: par exemple) dans la regex, non?


    EDIT : l'ajout d'url trop compliquée (comme ça : http://www.google.fr/search?hl=fr&source=hp&q=sr+pulz) fait que la "page-lien" n'est pas créée. De plus, le champ url est trop court en nombre de caractères.
    mais bon, l'important est que ça marche !!
    Encore bravo ;)
  • super_g2super_g2 Member
    octobre 2010 modifié
    Re,

    j'ai un souci sous la page admin, je ne peux plus choisir les url des pages statiques... il me remplis toutes les url par "aide-memoire" comme le montre l'image ci-dessous.

    bug.url.png

    une idée ?
    bien sûr, j'ai essayé de les renommer, mais rien.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Peux-tu m'envoyer par email ton fichier data/configuration/statiques.xml stp ?
    Merci.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • super_g2super_g2 Member
    octobre 2010 modifié
    c'est envoyé par MP :)
    ps : j'avais viré mes url externes avant mon envoi. le screenshot est après la suppression de ces url externes. depuis, j'ai le souci su-cité.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour super_g2

    J'ai bien trouvé un bug. Je ne sais pas si ça va résoudre ton problème.

    Dans le fichier core/lib/class.plx.admin.php, remplace dans la fonction editStatiques la ligne (~394)
    'template' => $content[$static_id.'_template']
    
    par
    'template' => (isset($content[$static_id.'_template'])?$content[$static_id.'_template']:'')
    
    La modif est à faire dans tous les cas. Je mets à jour le 1er post.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • super_g2super_g2 Member
    octobre 2010 modifié
    je vais corriger ça et te faire un retour en edit de ce post.

    edit : aucune amélioration. problème toujours existant.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Tu es en local ou sur ton hébergeur ?

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • sur mon serveur dédié. (désolé, j'ai du déco hier soir, monde à la maison, tout ça :))
  • StéphaneStéphane Member, Former PluXml Project Manager
    Je n'arrive pas à reproduire ton problème. Es-tu sur de n'avoir rien oublié dans les modifs du fichier core/lib/class.plx.admin.php ?

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • super_g2super_g2 Member
    octobre 2010 modifié
    je te l'envoie par mail comme hier :)

    edit : envoyé
  • StéphaneStéphane Member, Former PluXml Project Manager
    super_g2 j'ai trouvé ton problème (mauvais copier/coller). consulte ta messagerie.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • super_g2super_g2 Member
    octobre 2010 modifié
    ca marche :) je check ça et édit mon post actuel.

    edit : oui, c'est bon. j'avais fait une erreur de frappe semble-t-il (je dis ça pour les autres utilisateurs ^^)
  • Bonjour,
    Je suis un nouveau et heureux utilisateur de PluXml. Je cherchais justement à mettre en place cette fonction sur mon site et j'ai trouvé avec bonheur ce post très récent expliquant justement la marche à suivre.
    Cela marche parfaitement ! Merci beaucoup.
    Néanmoins, serait possible de régler le "target" de ce lien externe afin d'obtenir l'ouverture d'une nouvelle fenêtre (target_blank il me semble) plutôt que le chargement de cette nouvelle adresse dans la même fenêtre. Cela est faisable via Jquery par exemple mais cela sera-t-il pris en compte par défaut par PluXml ?
    Quoiqu'il en soit merci encore pour votre travail.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour Charlie

    PluXml ne prendra pas en compte le target="_blank" car cela invaliderait la page niveau xhtml. Or PluXml se veut respecter les standards du web, ce qui ne sera plus le cas avec ce paramètre. A savoir que tu peux ouvrir un lien dans un nouvel onglet de ton navigateur si tu cliques sur le lien avec la roulette de la souris. Cela fonctionne avec Firefox, Chrome. IE je ne sais pas. <mode troll>IE, bouuu, pas bien, c'est mal</mode troll> :)

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • bonsoir , ce qui serait pas mal ce serait de pouvoir gerer les attributs title et rel par exemple,
    voir un attribut X, dans le cas d'un template codé en html5 ... (oups pas taper ! )

    :)


    Cordialement,
    gcyrillus , simple membre du forum et utilisateur de pluxml

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • oui, ta dernière remarque gc est très pertinente, même dans le cas de pages statiques pures et dures.
    un champ supplémentaire, dans les options de chaque page statique? :)
  • StéphaneStéphane Member, Former PluXml Project Manager
    bonsoir , ce qui serait pas mal ce serait de pouvoir gerer les attributs title et rel par exemple,
    voir un attribut X, dans le cas d'un template codé en html5 ... (oups pas taper ! )

    :)
    J'en prends note

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Bonjour,
    Oui il me semblait bien que ce target blank n'était pas valide. J'avoue que cela continue de me tracasser car je trouve ça très pratique mais les standards sont les standards et c'est très bien comme ça. De plus, le Cmd-click marche aussi très bien pour ouvrir la page dans un nouvel onglet. Merci en tout cas de cette réponse rapide.
  • le souci du target _blank est surtout que dans un souci de navigation et d'accessibilité, on ne peut se permettre de faire ouvrir un onglet/nouvelle page à un utilisateur sans son consentement... Prends l'exemple d'une personne déficiente visuelle, l'ouverture d'une nouvelle page ne va pas forcément lui être très pratique..
    Voila :)
  • StéphaneStéphane Member, Former PluXml Project Manager
    Je pense que ça dépend apres des preferences de chacun. Personnellement je peste à chaque fois qu'un site m'ouvre un lien dans un nouvelle fenetre/onglet. J'ai pris l'habitude de les ouvrir avec la roulette de la souris. En plus, le nouvel onglet s'ouvre en arriere plan: pendant que ça charge, je continue ma navigation sur ma page initiale. Chacun sa façon de travailler.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Bonsoir à tous,

    J'ai essayé de mettre en œuvre cette modification mais l'url que je rentre http://www.google.fr est transformée en http-www-google-fr !!

    J'ai suivi le post en faisant des copier/coller sur les différents fichiers et en mettant en commentaires les anciennes lignes.

    Je tourne en localhost.

    Avez-vous une idée à me proposer ?

    Merci
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour Isakev

    Vérifie les copier coller. Tu as du en oublier un.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Bonsoir Stéphane,

    Je viens de refaire les copier/coller sur les 4 fichiers. Il me semble que tout est OK mais j'ai toujours mon problème :-(

    Je regarde de plus près demain

    Merci
    A+
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour ISAKEV
    Si tu ne trouves pas l'origine du problème, tu peux eventuellement me mailer un zip de ton site. Je regarderais de quoi ça peut venir. C'est peut etre lié à autre chose.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Je me suis décidé à faire la modif, juste une petite erreur de frappe je croit :

    ce n'est pas "core.plx.admin.php" mais "class.plx.admin.php"

    Merci encore Stéphane.
  • GesimoGesimo Member
    Je me permet de remonter ce poste car j'ai un petit problème qui a déjà été évoqué ici. Je suis en version 5.1 et je n'ai pas assez de caractères dans pour ajouter la totalité de mon lien externe. Serait-il possible d'augmenter les caractères ?

    Merci.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour gesimo

    c'est pris en compte dans la prochaine version;
    en attendant tu peux editer le fichier core/admin/statiques.php et modifier en conséquence la ligne suivante
    plxUtils::printInput($k.'_url', $v['url'], 'text', '12-255');
    
    c'est la valeur 255 qu'il faut mettre

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • GesimoGesimo Member
    Super. Merci. Je me doutais que ce n'était pas bien compliqué mais je n'avais pas trouvé la valeur à modifier.

    Merci.
  • RicoRico Member
    Bonjour,

    je souhaiterais faire la même chose pour les catégories, c'est possible?

    d'avance merci
  • StéphaneStéphane Member, Former PluXml Project Manager
    Non

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

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