Demande de plugins

1234689

Réponses

  • Non, c'est un soft indépendant (et qui demande une BDD).


    à plus,

    Gzyg
  • @Lunatic : si j'ai bien compris, tu voudrais un bookmarklet qui te prérempli les champs de pluxml pour publier un article, c'est ça ? Parce que ce que tu décris et comme tu l'as parfaitement dit, shaarli le fait déjà...
  • LunaticLunatic Member
    janvier 2014 modifié
    C'est tout à fait ça.

    Shaarli le fait, mais pluxml a pas mal de fonctionnalités que shaarli n'a pas (les commentaires, le classement par catégories… je ne vais pas faire toute la liste ;))
  • Je l'ai déjà fait là-bas, mais merci encore ici ;)
  • Jerry Wham : l'homme qui code plus vite que son ombre ! :) :cool:


    à plus,

    Gzyg
  • Bonjour à tous,

    Je trouve qu'il manque un lien "source" lors de la rédaction des articles et j'aimerais par conséquent pouvoir le rajouter via un plugin (dans la sidebar à la suite de "description", etc).

    Je connais déjà le plugin champArt que j'utilisais jusqu'alors, mais c'est une usine juste pour un seul champ, de plus, quelques bugs ont fait leur apparition au fur et à mesure des évolutions de PluXML (normal, hein ! =]).

    Quelqu'un de charitable serait-il capable de développer ce genre de plugin ou tout du moins m'aider à le créer. Je dois avouer que j'y comprends pas grand chose, même en me basant sur vignette et champArt.

    Merci d'avance et bon courage à tous !
  • une autre petite demande ( ça existe pour WP )
    un plugin permettant de trouver tous les liens morts, liens brisés, à la fois dans les articles ET dans les commentaires
    ( voire, mieux, d'y arriver ensuite dans l'admin pour les corriger ou les supprimer directement )

    quasiment à l'heure actuelle une chose indispensable quand on sait que beaucoup trop de sites finissent toujours par disparaître un jour et que pour un blog ayant déjà pas mal d'articles, de liens sortants via les posts ou les commentaires, c'est quasiment mission impossible manuellement ( même avec des logs comme Xenu d'ailleurs ...), indispensables également pour ne pas trop 'énerver' les bots des moteurs lorsqu'ils passent visiter le site....

    je ne sais pas si cela est faisable, je ne sais pas si ça demandera beaucoup de ressources, mais ce serait un vrai " plus "
    :)
  • Test sur les liens mort
    [== PHP ==]
    $a = @get_headers($url); 
    if ($a) { 
    //*** On a retour : on test le header HTTP 
    if (strstr($a[0],'404')) 
    return FALSE; // Erreur 404 
    else 
    return TRUE; // OK 
    } 
    else 
    return FALSE; // Erreur accès au site 
    }
    
  • je-evrard a écrit:
    Test sur les liens mort
    [== PHP ==]
    $a = @get_headers($url); 
    if ($a) { 
    //*** On a retour : on test le header HTTP 
    if (strstr($a[0],'404')) 
    return FALSE; // Erreur 404 
    else 
    return TRUE; // OK 
    } 
    else 
    return FALSE; // Erreur accès au site 
    }
    
    merci ;)
    mais on en fait quoi de ce code ???
    toi tu as de la chance, tu te comprends ;)
  • Oui désolé. En fait c'est faisable bien sur. Mais question de temps. Moi en ce moment pas trop.
  • bg62bg62 Member
    je-evrard a écrit:
    Oui désolé. En fait c'est faisable bien sur. Mais question de temps. Moi en ce moment pas trop.
    bon, attendons donc alors, si quelqu'un peut s'en occuper ...
    Une autre chose également qui existe aussi pour Wordpress :
    http://sourceforge.net/projects/wordpress-seo-stats/files/
    je cite la description trouvée :
    iLuc a écrit:
    Directement sous la page d'édition des articles, il vous permet d'obtenir des infos, sans avoir à changer de page, n'y a allez sur d'autres sites. Vous avez maintenant tous sous la main.

    Ce petit plugin donc vous permet:

    - De connaitre le nombre de liens dans un texte
    - Le pays des liens dans vos textes
    - Le nombre de mots et la densité % des mots de vos textes

    Puis aussi obtenir un ensemble d'infos:

    - Nombre de pages indéxés
    - PageRank
    - Alexarank
    - Réseaux sociaux
    - Pays du serveur
    - Ip du serveur
    ..
    plus que pas mal du tout et fort utile, si l'on pouvait l'avoir sous PluXml ce serait un vrai " + "
    :)
  • SuricatSuricat Member
    Autre demande : L'équivalent du Plugin "Subscribe to Comments" de WordPress.

    https://wordpress.org/plugins/subscribe-to-comments/

    Cet article du Journal Du Net en parle :
    http://www.journaldunet.com/solutions/saas-logiciel/plugin-wordpress/subscribe-to-comments.shtml
    Subscribe To Comments : un moyen astucieux de fidéliser ses visiteurs

    Subscribe To Comments est une petite extension qui donne aux visiteurs la possibilité de s'abonner par e-mail aux commentaires de vos articles. Elle peut être plus utile qu'elle n'en a l'air...


    Le commentaire de Daniel Roch :
    "cela peut paraître basique mais ce plugin permet de réellement fidéliser les internautes et de faciliter le débat en informant les autres participants qu'un nouveau commentaire a été publié, et qu'ils peuvent ainsi y répondre. De manière générale, l'impact est vraiment positif pour les blogs et les sites communautaires."
  • Stéphane a écrit:
    - Système de cache pour améliorer les performances et limiter les accès disques
    - Afficher les flux rss d'autres sites

    Salut,
    pour mon site, j'ai créé un système de cache qui fonctionne très bien. Je n'en ai toutefois pas fait un plugin pour le moment, mais je peux y songer...
    Si quelqu'un souhaite s'y mettre avant, je peux donner mon code sans problème ^^
    J'avais écrit un billet sur ma façon de procéder: http://www.warriordudimanche.net/?article56/cache-cache-en-php
    J'ai regroupé les fonctions de cache en un zip http://www.warriordudimanche.net/vrac/easy_cache.zip

    J'ai fait de même pour les flux Rss : à l'époque j'utilisais une lib appelée Rsslib... J'ai depuis fait quelques scripts permettant de récupérer et créer simplement des flux rss... ça peut servir de base à un plug in... si ça intéresse quelqu'un, je peux m'y coller ;-)
  • ym_trainzym_trainz Member
    juillet 2014 modifié
    Bonjour,

    Je ne sais pas si c'est le bon endroit pour poster mais je partage mon code que j'ai intégré sur pluXml.

    Avant une version plugin, voici ci-dessous une "bidouille" php pour extraire les données exif de photos et les afficher.
    Un lien sur la carte google map est également généré si des données GPS sont présentes dans les exif

    1 - le lien html dans l'article de votre blog :
    [== HTML ==]
    <a href="ymsimg.php?f=nom_du_fichier.jpg"><img src="data/images/nom_du_fichier.tb.jpg" alt="description" /></a>
    

    2 - les données exif à afficher et la configuration d'affichage sont inscrites dans la racine du blog dans le fichier exif.dat (voir plus bas)

    3 - une page php qui fait office de viewver : ymsimg.php (voir plus bas)

    4 - 2 fichiers image curseur (zoomin.cur et zoomout.cur à placer aussi dans la racine)

    Si cela peut être utile ;-)
    ym_trainz
    lien utile : http://www.gpscoordinates.eu/convert-gps-coordinates.php
    code du fichier exif.dat
    [== Indéfini ==]
    IFD0.ImageDescription,,
    COMPUTED.Height,H ,Pix
    COMPUTED.Width,W ,Pix
    FILE.FileSize,,ko
    EXIF.DateTimeOriginal,Date ,
    * COMPUTED.ApertureFNumber
    * COMPUTED.Copyright
    IFD0.Make,Appareil ,
    IFD0.Model,,
    * IFD0.Orientation
    * IFD0.XResolution
    * IFD0.YResolution
    * IFD0.ResolutionUnit
    IFD0.Artist,Photographe ,
    IFD0.Copyright,(c) ,
    * IFD0.ExposureMode
    EXIF.ExposureTime,Expo ,s
    EXIF.FNumber,Ouverture ,
    * EXIF.ExifVersion
    EXIF.ISOSpeedRatings,Iso , ASA
    * EXIF.DateTimeDigitized
    * EXIF.ShutterSpeedValue
    * EXIF.ApertureValue
    * EXIF.ExposureBiasValue,Correction d\'exposition,
    EXIF.Flash,Flash ,
    IFD0.FocalLengthIn35mmFilm,Focale(film35mm) ,mm
    EXIF.FocalLength,Focale ,mm
    GPS.GPSLatitudeRef,,
    GPS.GPSLatitude,Latitude ,
    GPS.GPSLongitudeRef,,
    GPS.GPSLongitude,Longitude ,
    * GPS.GPSAltitudeRef,,
    GPS.GPSAltitude,Altitude , m
    
    EndOfDatas
    --------------------
    notes :
    --------------------
    format :
    Clés exif,nom simplifié (pour l'affichage),unité
    * pour ignorer
    
    EndOfDatas : pour stopper la lecture donc ignorer la suite du fichier (notes)
    
    à classer dans l'ordre de préférence d'affichage
    
    Le premier champ (ligne 1) sera affiché en gras (commentaire par exemple).
    C'est ce champ (s'il existe) qui est utilisé pour initialiser le champ commentaire des images. Il ne sera alors pas affiché en double, dans les infos EXIF.
    --------------------
    exemple de fichier avec exemple de données trouvées
    COMPUTED.Height: 768
    COMPUTED.Width: 1024
    IFD0.ImageDescription: Barbecue Manu : ''Allez, assieds-toi donc...''
    IFD0.Make: Panasonic
    IFD0.Model: DMC-TZ6
    IFD0.Artist: Moi ;-)
    IFD0.Copyright: ym_trainz - 2010
    * IFD0.ExposureMode: 0
    EXIF.ExposureTime: 1/1600
    EXIF.FNumber: 63/10 (ouverture)
    EXIF.ISOSpeedRatings: 500
    EXIF.DateTimeOriginal: 2010:07:04 12:48:36
    EXIF.ExposureBiasValue: -33/100
    EXIF.Flash: 16
    IFD0.FocalLengthIn35mmFilm: 25
    EXIF.FocalLength: 41/10
    GPS.GPSLatitudeRef: N
    GPS.GPSLatitude: 43/1,0/1,0/1, (array séparé par des , )
    GPS.GPSLongitudeRef: W
    GPS.GPSLongitude: 3/1,56/1,18999/500,
    GPS.GPSAltitudeRef: ?
    GPS.GPSAltitude: 0/1
    ------------------------
    

    code du fichier ymsimg.php
    [== PHP ==]
    <?php
    	// page pour afficher une image fullscreen et les données EXIF des jpeg
    	// ym_trainz 07/2014 - rév 12/07/2014
    	// addons pour pluXml à placer dans la racine du blog
    	// copier également dans la racine les fichiers zoomin.cur, zoomout.cur et exif.dat
    	// --------------------------------------------------
    	// PARAMETRES à modifier
    	$Largeur = 700; // largeur d'affichage au départ avant de zoomer (800 pixels par défaut)
    	$Hauteur = 500;
    	$ExifData = true; // afficher les valeur exif de la photo
    	// --------------------------------------------------
    	// FONCTIONS
    	function extens_jpg($p) { // argument filename
    		// renvoie vrai si extension image jpg jpeg (pour extraire exif)
    		$ext = strtolower(substr($p, my_strrpos($p, '.') + 1)); // en minuscules
    		if (($ext=="jpg") || ($ext=="jpeg")) return true; else return false;
    	}
    	// ----------------------------------------------------------------------------
    	function formater_exif($val,$key) { // formate les valeurs exif
    		switch ($key) {
    			case "EXIF.FocalLength": // 41/10
    				$val=rat_dec($val,1);
    				break;
    			case "EXIF.FNumber": // 63/10 (ouverture)"
    				$val=rat_dec($val,1); // retour en 6,3
    				break;
    			case "GPS.GPSLatitude":
    				$val=formatgps($val); //  3/1,56/1,18999/500,
    				break;
    			case "GPS.GPSLongitude";
    				$val=formatgps($val); //  3/1,56/1,18999/500,
    				break;
    			case "EXIF.Flash";
    				$val="00000000".decbin(intval($val)); // conversion en binaire
    				/* MSB       LSB
    				7 6 5 4 3 2 1 0
    				              0 Flash fired
    				          2 1  Flash return
    				        3 Flash mode
    				    5 Flash function
    				  6 Red-eye mode
    				*/
    				if (substr($val,-1)=="0") return ""; // pas de flash
    				$r="On";
    				if (substr($val,-7,1)=="1") $r .=" Red-eye";
    				return $r;
    				break;
    			case "FILE.FileSize";
    				return strval(round(intval($val)/1024));
    				break;
    			case "EXIF.DateTimeOriginal";
    				// format original 2010:07:04 13:49:16 yyyy:mm:jj hh:mm:ss
    				// renvoyer mm/jj/yyyy hh:mm
    				if (strlen($val)!=19) return $val; else return substr($val,8,2)."/".substr($val,5,2)."/".substr($val,0,4)." ".substr($val,11,5);
    				break;
    			default:
    				return $val;
    		}
    		return $val;
    	}
    	// ----------------------------------------------------------------------------
    	function rat_dec($v,$nd) { // convertit 63/10 en 6.3 $nd, nombre de décimales
    		$id=strpos($v,"/"); //strpos("a/cde","/") retourne 1
    		if ($id===false) return $v; // pas de / trouvé
    		else {
    			$x=intval(substr($v,0,$id))/intval(substr($v,$id+1));
    			return strval(round($x,$nd)); // formater nombre de décimale et retour en string
    		}
    	}
    	// ----------------------------------------------------------------------------
    	function formatgps($v) { // prendre "42/1,0/1,2469/125," et le formater
    		/*  voir http://www.gpscoordinates.eu/convert-gps-coordinates.php
    		------------------------------------------------
    		EXIF Format :
    		The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively.
    		If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1.
    		When degrees and minutes are used and, for example,
    		fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1.
    		---------------- ex 1 : ROSES Espagne ---------------
    		données exif : Latitude=42/1,0/1,2469/125, | Longitude=3/1,0/1,7833/500,
    		afficher : Latitude: N 42°16'8" | Longitude: E 3°9'9"
    		lien : http://maps.google.com/?ie=UTF8&z=12&t=m&q=N42.26889,E3.1525   (N-S / W-E / coordonnées décimales °.ddddd)
    		-------------------------------
    		decimal =int + minutes/60 + sec/3600
    		-------------------------------
    		*/
    		$ex=explode(",",substr($v,0,-1)); // enlever le dernier caractère et convertir en tableau (3 données),
    		$dd=rat_dec($ex[0],0);
    		$mm=rat_dec($ex[1],0);
    		$ss=rat_dec($ex[2],0);
    		$x=strval(intval($dd)+(intval($mm)/60)+(intval($ss)/3600));
    
    		return $dd."&deg;".$mm."'".$ss."'' [".round($x,6)."]";
    	}
    	// ----------------------------------------------------------------------------
    	function read_exif($file, &$exif_p)
    	{
    		// retourne les données exif (choisies) dans le tableau $exif_data
    		// si pas d'exif, retourne 'false'
    		//
    
    		$exif_r= array();
    		$exif = exif_read_data($file, 0, true);
    		if($exif===false) return "NoExif";
    		else
    		{
    			// ---------------------------
    			/* données EXIF choisies (:exemples) - version default : 2.1 - voir ./res/exif.dat
    			mise en tableau dans variables
    			// --------------------------- */
    			foreach ($exif as $key => $section) {
    				foreach ($section as $name => $val) {
    					$ik=$key.".".$name; // parcours des clés
    					//-------------------
    					if (isset($exif_p[$ik][1])) {// cette clé exif est prise en compte (fichier de préférence res/exif.dat)
    						if (($name=="GPSLatitude") || ($name=="GPSLongitude")) { // c'est un tableau et non une donnée simple
    							$gps=true;
    							$valgps="";
    							foreach ($val as $val2 => $gps) $valgps .= $gps.",";
    							$exif_r[$ik]=formater_exif($valgps,$ik); // formater le résultat
    							if ($name=="GPSLongitude") { //dernier champs GPS, creer le lien cartel : http://maps.google.com/?ie=UTF8&z=12&t=m&q=N42.26889,E3.1525
    								// extrait de exif_f[] N | Latitude:42°0'20'' [42.005556] | :E | Longitude:3°0'16'' [3.004444]
    								// <a href="http://">lien</a>
    								$link=" <a href='http://maps.google.com/?ie=UTF8&z=7&t=m&q="; // z= c'est le zoom
    								$link .= $exif_r["GPS.GPSLatitudeRef"].convdeci($exif_r["GPS.GPSLatitude"]).",".$exif_r["GPS.GPSLongitudeRef"].convdeci($exif_r["GPS.GPSLongitude"])."' target='_blank'>Lien Carte</a> ";
    								$exif_r["GPS.GPSLongitude"] .= " ".$link." ";
    							}
    						}
    						else {
    							$exif_r[$ik]=formater_exif($val,$ik); // formater le résultat
    						}
    					}
    				}
    			}
    			return $exif_r;
    		}
    	}
    	// --------------------------------------------------
    	function my_strrpos($s_text,$s_search,$offset=null)  {// $offset négatif est optionnel
    		// http://www.php.net/manual/fr/function.strrpos.php
    		// ne fonctionne pas correctement si $offset est >0 (dans ce cas, faire un simple strpos)
    		if($s_text=="") return "false";
    		else {
    		
    			if (!isset($offset)) $offset=strlen($s_text)-1; else $offset=strlen($s_text)+$offset-1; // on cherche à l'envers à partir du nouvel offset ainsi calculé				
    			// rechercher façon "maison" ym 03/2013
    			if($s_search=="" or $s_text=="") return "false";
    			
    			for($i = $offset; $i > -1 ; $i--) {
    			// echo $i."<br>";
    				if($s_text[$i]==$s_search[0]) {				
    					if(substr($s_text,$i,strlen($s_search))==$s_search) { 
    						// echo "trouvé !";
    						return $i;
    						// exit;
    					}
    				}
    			}
    			
    			return "false";
    		}
    	}
    	// ----------------------------------------------------------------------------
    	function convdeci($val) {
    		// retrouve le champ[ ] dans "Latitude:42°0'20'' [42.005556] |"
    		$pos=strpos($val,"[");
    		$pos2=strpos($val,"]");
    		return substr($val,$pos+1,$pos2-$pos-1);
    	}
    	// ----------------------------------------------------------------------------
    	function line_input($file) 	{
    		// lit une ligne dans le fichier forcément terminée par CrLf
    		// longueur ligne "infinie" - enlève les Cr ou Lf (clean)
    		if(feof($file)===false) {
    			$line=fgets($file,4096);
    
    			$in=array(chr(13).chr(10));
    			$out=array("");
    			$line=rtrim(str_replace($in,$out,$line));	// rtrim obligatoire pour comptatibilité
    
    			return $line;
    		}
    		else return "EndOfDatas";
    	}
    	// ----------------------------------------------------------------------------
    	// DEBUT PHP
    	// **************************************************
    	if (empty($_GET["f"])) echo "pas d'image à afficher";
    	else {
    		$fileImg = "data/images/".$_GET["f"];
    		list($width, $height) = getimagesize($fileImg);
    		if($width < 10) $width = 10;
    		$heightS = $height * $Largeur / $width; // affichage reduit à $Largeur pixels
    		$widthS = $Largeur;
    		if($heightS > $Hauteur) { // pour images verticales
    			$widthS = $width *$Hauteur / $height;
    			$heightS = $Hauteur;
    		}
    		//
    		$Infos = ""; // infos exif éventuelles
    		if($ExifData && extens_jpg($fileImg)) {			
    			// ---------------------------
    			// lecture des préférences exif
    			// ---------------------------
    			if(file_exists("exif.dat")===false) die ("le fichier de préférences des données exif n'existe plus !<br><br><strong>exif.dat</strong> manquant");
    			$exif_p=array(); // declarer le tableau
    			$fich=fopen($curdir."exif.dat","r");
    			$skip=False;
    
    			while (!$skip) {
    				$buf=line_input($fich);
    				if (($buf=="") || $buf=="EndOfDatas") $skip=True;
    				else {
    					// mettre dans un tableau les données exif;
    					// [key][0] label ; [key][1] unité
    					// exemple : [EXIF.FocalLength][0]=Focale ; [EXIF.FocalLength][0]=mm
    
    					if (($buf[0]!="*") && ($buf!="")) { // ignorer cette ligne  php->  $buf[0] ou substr($buf,0,1)
    						$temp=explode(",",$buf); // séparer les items de la ligne lue (séparateur ,)
    						if (isset($temp[0])) { // une clé existe sur cette ligne
    							$ik=$temp[0];
    							$exif_p[$ik][0]=$ik; // pour retrouver aussi la clé dans [0]
    							for ($j=1;$j<3;$j++) { // parcourir les valeurs pour cette clé
    								if (isset($temp[$j])) $exif_p[$ik][$j]=$temp[$j]; else $exif_p[$ik][$j]="";
    							}
    						}
    						// ligne suivante
    					}
    				}
    			}
    			fclose($fich);
    			// ---------------------------	
    			$exifv = read_exif($fileImg, &$exif_p); // lire les données EXIF de la photos
    			// parcourir $exifv[key][i]
    			// [key][0] key ; [key][1] label ; [key][2] unité
    			// exemple : [EXIF.FocalLength][0]='EXIF.FocalLength' ;[EXIF.FocalLength][1]=Focale ; [EXIF.FocalLength][1]=mm
    			$first=true;
    			foreach($exif_p as $key1) {	// parcourir le tableau des préférences exif (dans exif.dat)
    				if($first){ // chercher le premier champ pour remplir le commentaire avec
    					$first=false;
    					if(trim($Infos) == "") {
    						// chercher le commentaire dans le premier champ EXIF (voir exif.dat), s'il n'existe pas, remplir avec filename
    						if(trim($exifv[$key1[0]])!="") $Infos = $exifv[$key1[0]]; // commentaire EXIF par exemple
    						else $Infos = $fileImg; // filename
    					}					
    				}
    				else {
    					// si la clé existe dans le fichier image
    					if($exifv[$key1[0]]!="") { 
    						$Infos = $Infos." | ".$exif_p[$key1[0]][1].$exifv[$key1[0]].$exif_p[$key1[0]][2]; // label valeur unité
    					}
    				}
    			}
    			
    		}		
    		// ---------------------------------
    		echo "
    		<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
    		<html xmlns='http://www.w3.org/1999/xhtml' lang='fr' xml:lang='fr'>
    		<head>
    			<title>ymViewver</title><meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
    			<style type='text/css'>			
    			.large { cursor:url(zoomout.cur), pointer; }
    			.small { cursor:url(zoomin.cur), pointer; }
    			</style>
    			<script>
    				ZoomIn = true;
    				function goBack() {
    					window.history.back();
    				}				
    				function myZoom() {
    					ZoomIn = !ZoomIn;
    					if(ZoomIn) {
    						document.getElementById('SpanImg').innerHTML = \"<img class='large' src = '".$fileImg."' width=".$width." height=".$height." onClick='javascript:myZoom();' alt='' title='cliquer pour reduire !'>\";
    					}
    					else {
    						document.getElementById('SpanImg').innerHTML = \"<img class='small' src = '".$fileImg."' width=".$widthS." height=".$heightS." onClick='javascript:myZoom();' alt='' title='cliquer pour agrandir!'>\";
    					}
    				}
    			</script>
    		</head>
    		<body bgcolor=\"#777777\" onload='javascript:myZoom()'>
    			<div align=\"center\" style='font-family:Arial, Geneva, Verdana, Tahoma, sans-serif;color:#FFFFFF;font-size:12px;'>
    				<table>
    					<tr>
    						<td align=\"center\">
    							<button onclick='goBack()'> Retour </button> ym viewver 2014</br>
    							<span id='SpanImg'>Faites [F5] si l'image ne s'affiche pas</span>
    						</td>
    					</tr>
    				</table>
    				<table width='".$Largeur."' border='1' style='border-collapse:collapse;' bordercolor='#AAAAAA'>
    					<tr>
    						<td align=\"center\">
    							".$Infos."
    						</td>
    					</tr>
    				</table>				
    			</div>
    		</body>";
    	};
    ?>
    
  • Bonjour,

    Je recherche un plugin pour ajouter une date d'expiration pour les articles, existe t-il déjà ?
    Sinon ça serai peut être un option intéressante à ajouter pour la suite ?

    Pour le moment je vais chercher dans l'administration pour ajouter ça en brut.
  • HarukaHaruka PluXml Project Manager
    Bonjour,

    A ma connaissance ça n'existe pas ni en plugin, ni dans l'admin de PluXml. Je note l'idée dans le premier post.
  • GzygGzyg Member
    février 2015 modifié
    Bonjour,

    Est-ce qu'il serait possible de créer une synchro StackEdit -> PluXml ?

    (StackEdit est un éditeur markdown en ligne)


    Merci, à plus,

    Gzg
  • Ça doit pouvoir se faire...
  • Moi je suggèrerai, si quelqu'un est motivé, de faire un plugin qui indiquerait aux utilisateurs que le site utilise des cookies (avec un bouton valider).
  • Il existe déjà un système pour "accepter les cookies" ! ;)

    Je me permets de donner le lien du site, d'où j'ai pris le code : http://refok.fr/index.php?article48/cookies-js

    Tout y est très bien expliqué, et très simple à installer ... :)
  • Une petite question en passant : pluXml utilise des cookies ? Ou bien ce n'est que dans le cas où on installerait un plugin spécifique utilisant des cookies ?
  • noogaty a écrit:
    Il existe déjà un système pour "accepter les cookies" ! ;)

    Je me permets de donner le lien du site, d'où j'ai pris le code : http://refok.fr/index.php?article48/cookies-js

    Tout y est très bien expliqué, et très simple à installer ... :)

    Oui mais se serait bien d'avoir un plugin tout fait pour les néophytes.
  • mr-tocmr-toc Member
    Bonjour,

    Je recherche un plugin capable de générer dynamiquement une table des matières à partir des balises <h?>.
    Je sais pas si ça a son importance, mais j'utilise plxToolbar pour l'édition.
    En règle général, pour ces articles assez long, j'utilise article-full-width.php mais j'imagine que certains préféreront intégrer la table des matières dans <aside>.

    Je ne sais pas si c'est quelque chose qui intéresse d'autres personnes que moi.
  • Si carrément. Mais il faut écrire la regex qui va bien...
  • GariGari Member
    Un exemple de regex :
    < *(h[1-6]).*?>(.*?)< *\/\1 *>
    

    Dans le texte ci-dessous, il matche "Titre 1" et "Titre 2".
    <h1 class="test">Titre 1</h1>
    <p>Bonjour</p>
    <h2>Titre 2</h2>
    

    Il est à noter que, dans le tableau de résultat (preg_match_all($regex,$string,&$array)), on aura le nom de la balise en premier argument et le titre en second argument. Cela permet de construire aisément une TOC avec des indentations.

    Sans pouvoir tester le code, je vois bien un truc de ce genre :
    $string="le texte à parser";
    $regex='< *(h[1-6]).*?>(.*?)< *\/\1 *>';
    if(preg_match_all('/'.$regex.'/i',$string,$res) != false)
    {
       echo '<ul class="toc">';
       foreach($res as $line)
          echo '<li class="'.$line[1].'">'.$line[2].'</li>';
       echo "</ul>";
    }
    
    Y'a plus qu'à jouer en css sur les ul.toc li.h1, ul.toc li.h2, etc. pour définir des styles différents d'affichage en fonction de la profondeur du titre.

    Le seul problème que je vois sur ma regex, c'est si un ">" apparaît dans l'un des paramètre de la balise h?. Par exemple ce texte sera mal matché :
    <h1 class="tes>t">Titre 1</h1>
    <p>Bonjour</p>
    <h2>Titre 2</h2>
    

    Mais bon, je ne vois pas bien pourquoi un ">" se retrouverait là-dedans...
  • Je viens d'écrire un plugin basé sur le lien précédemment donné.
    Il faut l'activer et donner à la balise article du fichier article.php du thème utilisé, la class "article-content".
  • mr-tocmr-toc Member
    Merci.

    Je viens d'installer. Tout semble fonctionner.

    Mes remarques:
    - la balise h1 me semble inutile car c'est le titre de l'article. (elle n'est même pas proposé par plxToolbar)
    - seul les balises h1 et h2 semblent être prises en compte.

    Je ne fait pas de remarque concernant le CSS.
    Je vais réfléchir et voir comment je pourrait l'intégrer. A mon avis, il est préférable de le positionner en haut de l'article.

    En tout cas, bravo pour le travail.
  • Oui, seules les balises h1 et h2 de l'article sont concernées. La balise h1 est utile si on veut revenir au tout début de l'article.
    Si tu veux en ajouter ou en supprimer, il te suffit d'éditer le fichier Sommaire.js et d'ajouter (ou supprimer) un sélecteur dans la parenthèse
    $(".article-content h1, .article-content h2")...
    

    Pour adapter le css, il suffit de se rendre dans le panneau de gestion des plugins et d'éditer le css du plugin.
  • mr-tocmr-toc Member
    merci, je vais modifier ça.

    je vais essayer de modifier le CSS mais c'est pas gagné.
Connectez-vous ou Inscrivez-vous pour répondre.