Avoir un aperçu en conditions réelles

La prévisu de base est bien mais pas top. Je voulais voir ce que donnait la mise en page de mon billet avec le template du site, pas seulement savoir si telle ligne était en gras ou pas.

Ce que j'ai fait : j'ai ajouté un lien sur la page d'édition de l'article, en dessous de la gestion des commentaires, pour ouvrir l'article dans une nouvelle fenêtre (et intégré au site).
Par défaut, les billets en mode brouillon (draft dans le code) ne sont pas accessibles quand on tape leur adresse. J'ai tâtonné et trouvé où ça se passait pour ça, et, ô joie, il n'y a qu'une seule toute petite modif à faire.

Mettez vos gants, on va mettre les mains dans le cambouis.

!!! Attention, les modifs vont toucher à des fichiers sensibles du système, gare à vous si vous cassez tout ! je vous conseille de sauvegarder vos fichiers avant toute manip !!!

Fichier core/admin/article.php (on va ajouter le lien pour ouvrir une nouvelle fenêtre) :
cherchez ça
<li> <a href="commentaire_new.php?a=<?php echo $artId ?>" title="Rédiger un commentaire sur cet article">Rédiger un commentaire</a></li>
et ajoutez ça
<li> <a href="<?php echo PLX_ROOT; ?>?article<?php echo intval($_GET); ?>/<?php echo $url; ?>" target="_blank" title="Aperçu">Aperçu</a></li>
dans core/lib/class.plx.motor.php (on va dire que si si, on a le droit d'afficher un brouillon, non mais !)
cherchez ça
elseif($this->get AND preg_match('/^article([0-9]+)\//',$this->get,$capture)) {
$this->mode = 'article'; # Mode article
$this->cible = str_pad($capture[1],4,'0',STR_PAD_LEFT); # On complete sur 4 caracteres
$this->motif = '/^'.$this->cible.'.([0-9]{3}|home).[0-9]{12}.[a-z0-9-]+.xml$/'; # Motif de recherche
$this->bypage = NULL; # Pas de pagination pour ce mode bien sur
if($this->aConf == 1) # On cree notre objet capcha si besoin est
$this->plxCapcha = new plxCapcha();
}
et remplacez là-dedans, la ligne du motif par :
$this->motif = '/^'.$this->cible.'.([0-9]{3}|home|draft).[0-9]{12}.[a-z0-9-]+.xml$/'; # Motif de recherche
Logiquement, ça marche.

Pratique pour voir votre billet pas encore finalisé dans les conditions du direct !

Réponses

  • Bonsoir,

    je procede depuis longtemps d'une autre façon qui me satisfait en me basant sur une popup et js , sans même avoir besoin de sauvegarder l'article au préalable.

    Au debut , j'ajoutais un 'mode' dans le fonctionement de Pluxml , depuis la 4 , je vais moins dans le cambouis :)

    (ma premiere methode , http://forum.pluxml.org/viewtopic.php?id=432 , obsolete pour le plux d'aujourd'hui :) )

    Pour ajouter un preview en Live dans le theme en cours , voici comment je procede:

    1) fichier index.php a la racine :

    je remplace les lignes :
    # Insertion du template
    	include(PLX_ROOT.'themes/'.$plxMotor->style.'/'.$plxMotor->mode.'.php');
    
    par :
    # Insertion du template	
    	if($_GET['preview']) {
    			include(PLX_ROOT.'themes/'.$plxMotor->style.'/preview.php');
    			}
    			else {
    			include(PLX_ROOT.'themes/'.$plxMotor->style.'/'.$plxMotor->mode.'.php');
    			}
    
    Attention aux accolades et a l'imbrication de ce if/else supplémentaire au niveau inferieur de la condition en cours

    2) dans le fichier article.php dans le repertoire admin :
    Insertion du lien pour ouvrir la popup de prévisualisation .
    rechercher aux alentour de la ligne 102 (juste devant le formulaire d'edition) :
    <p style="clear:both;"></p>
    
    et remplacer en y inserant le lien :
    <p style="clear:both;"><a href="../../index.php?preview=ok" id="link_prev" title="Previsualiser l'article" 
    onclick="openPopup('../../index.php?preview=ok','500','1000');return false;">Preview dans le theme en cours</a></p>
    
    3 ) en fin , il vous faut ajouter le fichier 'preview.php' dans chacun de vos theme .
    Ce fichier est une copie du fichier : article.php dans lequel on remplace les fonction d'affichage d'un article en ligne par les fonctions javascript reinjectant les contenus du formulaire.

    Par exemple , pour le theme par defaut voici le fichier preview.php .
    <?php include(dirname(__FILE__).'/header.php'); # On insere le header ?>
    <div id="page">
    	<div id="content">
    		<h2 class="title">
    			<script type="text/javascript" >
    			<!--
    			titre = opener.document.getElementsByName('titre')['0'];
    			article=titre.value;
    			document.write(article);
    			-->
    			</script>
    		</h2>
    		<p class="cat">Classé dans : En edition | <span>0 commentaire</span></p>
    		<p class="date"><?php  echo '<span>'.date(d).'</span><br />'.date(m).' | '.date(y);  ?></p>
    		<div class="post">
    			<script type="text/javascript" >
    			<!--
    			chapo = opener.document.getElementsByName('chapo')['0'];
    			intro=chapo.value;
    			document.write(intro);
    			contenu = opener.document.getElementsByName('content')['0'];
    			textes=contenu.value;
    			document.write(textes);
    			-->
    			</script>
    		</div>
    		<?php # Pas de commentaires , ok ! ?>
    	</div>
    	<?php include(dirname(__FILE__).'/sidebar.php'); # On insere la sidebar ?>
    </div>
    <?php include(dirname(__FILE__).'/footer.php'); # On insere le footer ?>
    
    Pas besoin donc d'enregistrer le fichier au préalable pour avoir un aperçu , et pour rafraichir l'aperçu , un reclick sur le lien suffit a ce que le javascript recharge les contenus de chapo et content sans en passer par une sauvegarde et rechargement de la page d'admin d'edition .
    Le lien aperçu est dispo en mode edition que ce soit en nouvel Article ou simple edition.

    Attention , l'aperçu ne sauvegarde pas votre article ! ne pas oublier de le sauvegarder avant de quitter.

    Voila pour ma methode :) perso .

    Cordialement

    GC


    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

  • merci pour ta technique.
  • Sympa !
    Il serait intéressant que cette fonctionnalité apparaisse dans une prochaine maj parce que les autres moteurs de blog ne fonctionnent pas avec un aperçu dans le template admin mais bien celui du blog (ce qui est logique)... Non ?
  • oui entirement d'accord
    la premiere fois que j'avais proposé ce type d'aperçu , Skyline n'avait pas jugé celui-ci pertinent et avait integrer le type d'aperçu actuel . Aperçu que je trouve toujours sans intérêt a mon gout , rien de transcendant a voir son html interpréter sans le style et le contexte dans lequel il sera publier .

    Si vous faites usage de l'un ou l'autre de ses aperçu presenter ici , faites le savoir ... sondage ! :)

    ++


    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

  • GzygGzyg Member
    La fonctionnalité de prévisualisation "dans les conditions du direct" est bien sûr un plus.

    La méthode de gcyrillus-nomade me plait bien parce qu'elle se rapproche de ce que je connais déjà avec le forum miniBB : un preview en javascript.
    C'est léger, c'est rapide et c'est très fonctionnel.

    Faut que je teste ça sur PluXML... :)


    à plus,

    Gzyg
  • Je l'ai enfin mis en place mais je n'ai pas l'affichage du titre de l'article...
    Voici ce que j'ai mis...
    <h2 class="title"><script type="text/javascript" >
                <!--
                titre = opener.document.getElementsByName('titre')['0'];
                article=titre.value;
                document.write(article);
                -->
                </script></h2>
    
    Un petit coup de main gcyrillus ? :p
  • les attributs 'name' des champs de ton formulaire correspondent bien a ce que le js appelle ?
    (<input type="text" name="titre" />)
    je crois qu'il y a une petite coquille , ce serait certainement : title et pas titre que je ne serai pas surpris :)

    ++


    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

  • Nickel ;)
    C'était Title et non titre :p
Connectez-vous ou Inscrivez-vous pour répondre.