Dotclear

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

Annonce

#1 2019-10-23 17:36:29

gilbertdelyon
Membre
Inscription : 2019-10-23

Solution pour des billets customisés?

Je teste Dotclear pour un site un peu plus évolué qu'un simple blog.
En natif Dotclear ne permet de saisir que des pages ou des billets et je souhaiterais pouvoir étoffer avec plusieurs types de billets, chaque type ayant un jeu de champs spécifiques et une mise en page spécifique (sous-theme).

Par exemple pour un site cuisine (rien à voir avec le sujet de mon blog mais cet exemple me semble parlant) on pourrait avoir, en plus des billets natifs, un billet de type recette de cuisine avec un champ ingrédients, un champ cuisson, un champ préparation, un champ difficulté, etc...
En y association un sous-theme spécifique cela permet d'avoir une mise en page standard et facilement modifiable

Pour ceux qui connaissent Drupal ce serait un peu comme la fonctionnalité Custom Content Type qui est disponible en natif.
Je sais que c'est aussi possible dans Wordpress via des plugins et un peu de code

Merci d'avance de vos lumières

Hors ligne

#2 2019-10-23 18:49:39

Mathieu M.
Membre
Lieu : Rhône-Alpes
Inscription : 2009-09-14
Site Web

Re : Solution pour des billets customisés?

Bonsoir,

Alors, je pense qu'en bricolant un peu, tu peux trouver ton bonheur via ces 1 plugin + 1 modification du fichier _public.php de ton thème :

1/ https://forum.dotclear.org/viewtopic.ph … 19#p336019
En ajoutant ce code, il te sera possible de servir un gabarit de post différent par catégorie.

2/ http://plugins.dotaddict.org/dc2/details/mymeta
Le plugin My Meta te permettra d'ajouter les champs nécessaires lors de la saisie de post

N'hésites pas à nous faire tes retours.

Hors ligne

#3 2019-10-23 18:57:26

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Solution pour des billets customisés?

Bonjour

On peut créer des post types personnalisés. L'expliquer en entier prendrait beaucoup de temps, tout n'est pas documenté, mais voici deux pistes :

1) il y a une doc pour la création de plugins ici : https://fr.dotclear.org/documentation/2 … es/plugins
2) dans la table dc_posts, on peut enregistrer un post_type particulier (les billets et pages ont ce seul paramètre pour les différencier). J'ai déjà réalisé un plugin qui crée un nouveau type de post (map), il est ici : http://plugins.dotaddict.org/dc2/details/myGmaps. Il n'ajoute cependant pas de champs à la table dc_posts... Tu peux sans doute y trouver des idées pour construire le tien ?

Hors ligne

#4 2019-10-23 19:01:39

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Solution pour des billets customisés?

Effectivement, j'oubliais MyMeta ;)

Hors ligne

#5 2019-10-23 19:29:39

gilbertdelyon
Membre
Inscription : 2019-10-23

Re : Solution pour des billets customisés?

Merci pour votre réactivité et pour ces pistes prometteuses. Reste plus qu'à mettre les mains dans la graisse!

Les plugins Dotclear ont des noms bizarres, ça ne facilite pas les recherches. MyMeta, quelle idée?! Pour créer des champs spécifiques dans Drupal ça s'appelle simplement "Custom Fields" et on comprend tout de suite.

Plugin myGmaps, merci, ça m’intéresse doublement. J'ai déjà bricolé plusieurs scripts Jquerry pour afficher des cartes google, IGN et OSM sur la base de l'API google map. Peut-être vais-je pouvoir adapter.(itinéraires de randonnée)

Dernière modification par gilbertdelyon (2019-10-23 19:29:53)

Hors ligne

#6 2019-10-23 20:17:06

gilbertdelyon
Membre
Inscription : 2019-10-23

Re : Solution pour des billets customisés?

Pour des champs simples je pensais à une solution simpliste et rustique:
Les envelopper dans une balise html spécifique à la saisie et rajouter un peu de css dans le thème.
Par exemple une balise
  <div id="mon_champ_specifique">
         mon texte ici
  </div> .
Pas très flexible pour le positionnement relatif des champs mais peut-être suffisant.
Un petit souci. Il me semble que certains éditeurs  font le ménage dans l'html pour ne garder que les balises autorisées.

Hors ligne

#7 2019-10-24 10:05:25

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Solution pour des billets customisés?

gilbertdelyon a écrit :

Plugin myGmaps, merci, ça m’intéresse doublement. J'ai déjà bricolé plusieurs scripts Jquerry pour afficher des cartes google, IGN et OSM sur la base de l'API google map. Peut-être vais-je pouvoir adapter.(itinéraires de randonnée)

Le plugin est bien basé sur l'API Google Maps, mais peut afficher des cartes OSM plutôt que celles de Google.

Pour des randonnées, le plugin peut afficher des fichiers kml ou kmz.

En revanche, pour afficher des traces GPX, il faudrait le coder, mais je crois qu'on peut convertir les GPX en kml (?)

gilbertdelyon a écrit :

Un petit souci. Il me semble que certains éditeurs  font le ménage dans l'html pour ne garder que les balises autorisées.

dcCKEditor, de mémoire, ne vire que les balises html vides ;)

Hors ligne

#8 2019-10-24 13:22:52

gilbertdelyon
Membre
Inscription : 2019-10-23

Re : Solution pour des billets customisés?

A toute fin utile,
1/ On peut aussi afficher des cartes IGN dans l'API GoogleMap, c'est très simple à faire, à condition bien sûr d'avoir la "clef".
2/ Fonction de ma fabrication pour afficher un GPX dans l'API google map: (Jquery)

/****************************************************************
*              Function Ajout trace à partir d'une url GPX     	*
*****************************************************************
 * Le fichier urlgpx est appelé en AJAX
 * Extraction de tous les way points
 * Transformation en polyline
 * Ajustement des limites de la carte
 * Icone départ au premier waypoint et infowindow si la carte est pour un topo field
 * Les parametres de la carte ne sont transmis que si la carte est de type topoGPX
 */
 function ajouterTraceGPX(map,typecarte, urlGPX, paramIcone){
       //alert(' passage dans function ajoutTraceGPX'+JSON.stringify(paramIcone));//debug
	var latLonStart =[]; // ne pas enlever (portée de la variable dans toute la fonction
        $.ajax({
	     type: "GET",
	     url: urlGPX,
	     //async: false, // Ne plus utiliser: "deprecated"
	     dataType: "xml",
	     success: function(xml) {
	       //alert('success'); //debug success
	       // EXTRACTION DES WAYPOINTS 
	       var WayPoints = $(xml).find("trkpt","rpt","wpt","rtept");

	       // POLYLINE DE LA TRACE
	       var points = [];
	       var bounds = new google.maps.LatLngBounds ();
	       WayPoints.each(function() {
		 var lat = $(this).attr("lat");
		 var lon = $(this).attr("lon");
		 var p = new google.maps.LatLng(lat, lon);
		 points.push(p);
		 bounds.extend(p); // extension  aux points limites
	       });

	       // Calcul Polyline de la trace
		var poly = new google.maps.Polyline({
		 // use your own style here
		 path: points,
		 strokeColor: "#0000FF",
		 strokeOpacity: .7,
		 strokeWeight: 4
	       });
               // Ajout de la trace sur la carte  
	       poly.setMap(map);
	       
		// RECENTRAGE et ZOOM CARTE  en fonction des points limites de la trace
		map.fitBounds(bounds);               
			
		// POSITION du  marker POINT DE DEPART
		var depart = WayPoints.first();
		var latStart = depart.attr("lat");
		var lonStart = depart.attr("lon");
        latLonStart = [latStart,lonStart];
   		//alert("latLonStart  depuis la fonction ajouter la trace="+ JSON.stringify(latLonStart)); //debug 

		// AJOUT MARKER DEPART si la carte est dans un node topo  (si carte de type bloctopos le marker est déjà affiché avant d'ajouter la trace)
	        if(typecarte == 'topogpx'){   
			    // Marker icone point de départ
			    var url_icone = drupalSettings.path.baseUrl+'modules/custom/map/images/iconcarte2randonneurs.png';
			    //alert(url_icone);//debug
                            
                            //Ajout marker
			    var marker = new google.maps.Marker({
					   icon: url_icone,
					   position: new google.maps.LatLng(latLonStart[0] , latLonStart[1]),
					   map: map, // s'applique à la carte map
					   title: 'Depart ici',	          
					 //draggable:true // déplace l'icone et l'infowindow voir si utile pour voir la trace
					 });
                            
			    //Infowindow "DEPART ICI"
			    var nodeTitle = paramIcone["nodeTitle"];
			    var nameGPX = paramIcone["nameGPX"];
                  
			    var html_bulle  = '<div id="infow_content" >';
				html_bulle +=    '<h1>'+ nodeTitle+'</h1>';
				html_bulle +=    'Faites glisser le "Pegman" Streetview pour voir si la "GoogleCar" est passée par là';
				html_bulle +=    '<div id="clics" >' ;	
				html_bulle +=        '<div id="telech_gpx">';
				html_bulle +=		'<a href = "'+urlGPX+'" download="'+nameGPX+'" title="Télécharger le fichier GPX">GPX &#x21E9;</a>';
				html_bulle +=	     '</div>';
				html_bulle +=    '</div>';
                                html_bulle +=     '<div class="depart_ici"><b>Départ ici</b></div>'; 
				html_bulle += '</div>' ;

			   //Ajout infowindow
			    var infowindow = new google.maps.InfoWindow(); //Déclaration infowindow	
			    google.maps.event.addListener(marker, 'click', (function() { 
					//alert((infowindow));  //DEBUG
					infowindow.setContent(html_bulle);			
					infowindow.open(map, marker);	     			
				}));// fin addListener
			    
			    //CLOSE  INFOWINDOW SUR CLICK n'importe ou dans la carte map 	
			    google.maps.event.addListener(map, 'click', function() {
				infowindow.close();
				});
		}// fin type carte == topogpx
																									      
              // Epaississement de la TRACE AU PASSAGE DE LA SOURIS
		google.maps.event.addListener(poly, 'mouseover', (function() {		
				//alert('hello');	// debug
				poly.setOptions({strokeWeight: '20'});
				}));
		google.maps.event.addListener(poly, 'mouseout', (function() {		
				//alert('hello');	// debug
				poly.setOptions({strokeWeight: '5'});
				}));
               //return latLonStart;
	     },//fin success
	   });	//fin AJAX
}//fin function traceGPX(url)

Dernière modification par gilbertdelyon (2019-10-24 13:24:50)

Hors ligne

#9 2019-10-24 14:02:20

gilbertdelyon
Membre
Inscription : 2019-10-23

Re : Solution pour des billets customisés?

Billets spéciaux et champs spécifiques. Résultat de mes investigations:

La voie semble libre avec les plugins myMeta et Muppet (encore un nom bizarre, j'aurais préféré "custom post", mais bon...)
Dans Muppet on peut définir des billets spécifiques.
Dans MyMeta on peut définir des champs spécifiques et les associer à des billets spécifiques.
Donc même esprit que "Custom nodes" et "Custom fields" de Drupal, en beaucoup moins sophistiqué mais probablement suffisant pour ce que j'envisage.
Seul problème: Pour saisir les champs "myMeta" il faut d'abord enregistrer le "billetMuppet" et c'est seulement ensuite que les champs de saisie apparaissent. ça sent le truc pas fini, mais bon...il suffit de le savoir!

Etape Suivante: Les billets Muppet n'apparaissent pas en page d'accueil (pourtant bien publiés) et les champs MyMeta n'apparaissent pas dans les billets (pourtant ils sont bien enregistrés puisqu'ils reviennent dans l'éditeur.
Je présume qu'il doit falloir ajouter des lignes  dans un template quelconque.
Une piste?

Hors ligne

#10 2019-10-24 15:26:59

Mathieu M.
Membre
Lieu : Rhône-Alpes
Inscription : 2009-09-14
Site Web

Re : Solution pour des billets customisés?

Muppet est effectivement un plugin qui date, je ne suis pas certain qu'osku, son créateur, en assure encore le support.

Pour afficher les billets Muppet en page d'accueil (et sur d'autres contextes comme les catégories), il faut modifier le gabarit .html concerné. Recherche la ligne <tpl:Entries> et remplace la par <tpl:Entries type="post,monNouveauTypeMuppet1,monNouveauTypeMuppet2, etc...">

Pour My Meta, même chose, voir sur le forum pour comprendre le mécanisme, par exemple : https://forum.dotclear.org/viewtopic.ph … 91#p307191

Hors ligne

#11 2019-10-24 15:53:24

gilbertdelyon
Membre
Inscription : 2019-10-23

Re : Solution pour des billets customisés?

Muppett répond à mon besoin. Si plus maintenu quel serait le substitut?
Malgré tout en changeant de theme (ductile) ça affiche maintenant les posts

myMeta. Merci pour ce lien prometteur. Je teste

Hors ligne

#12 2019-10-24 17:00:28

Mathieu M.
Membre
Lieu : Rhône-Alpes
Inscription : 2009-09-14
Site Web

Re : Solution pour des billets customisés?

Un équivalent à Muppet ? Aucun à ma connaissance, osku développait de sacrés plugins, dommage qu'il ne soit plus là :(

Hors ligne

#13 2019-10-24 21:13:34

gilbertdelyon
Membre
Inscription : 2019-10-23

Re : Solution pour des billets customisés?

Grace à Mathieu, J'arrive maintenant à afficher les champs Mymeta dans le billet via quelques lignes ajoutées dans le template qui va bien. Encore faut-il le trouver!.
Où peut-on trouver la hiérarchie des templates standards?

En effet, Muppet plus mis à jour depuis 2015, c'est pas rassurant!

Hors ligne

#14 2019-10-25 07:06:50

nikrou
Membre
Inscription : 2007-10-02
Site Web

Re : Solution pour des billets customisés?

Il y a quelques temps j'avais bien avancé sur un plugin qui était dans le même esprit que Mymeta mais en bien plus spécifique : https://github.com/nikrou/rslt
Je ne sais pas si ça peut t'aider mais je viens de tester et ça fonctionne toujours avec les dernières versions de dotclear même si le dernier commit laisse penser que ce n'est plus maintenu.


Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !

Présentez vos photos simplement avec Phyxo !

Hors ligne

#15 2019-10-25 07:13:27

Mathieu M.
Membre
Lieu : Rhône-Alpes
Inscription : 2009-09-14
Site Web

Re : Solution pour des billets customisés?

@nikrou : Tu peux me donner plus d'infos sur ton plugin ?

Je n'ai pas tout compris, mais à la première lecture ça pourrait répondre à certains de mes besoins spécifiques.


Merci.

Hors ligne

#16 2019-10-25 07:27:27

nikrou
Membre
Inscription : 2007-10-02
Site Web

Re : Solution pour des billets customisés?

C'était pour répondre à ce besoin là :
http://forum.dotclear.org/viewtopic.php?id=46145


Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !

Présentez vos photos simplement avec Phyxo !

Hors ligne

#17 2019-10-25 07:31:17

nikrou
Membre
Inscription : 2007-10-02
Site Web

Re : Solution pour des billets customisés?

L'idée de Jean-Michel était d'utiliser dotclear parce qu'il connaissait bien et qu'il aimait bien.

J'ai créé plusieurs nouveaux types de documents : chansons, albums, news, auteurs. Ils sont reliés entre eux par des tags mais pas uniquement. Les chansons sont dans des albums. Les chansons ont des auteurs et pleins d'autres métadonnées.

J'ai mis le lien vers le dépôt pour montrer ce qu'on peut faire mais ça manque un peu de concret je suis d'accord.


Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !

Présentez vos photos simplement avec Phyxo !

Hors ligne

#18 2019-10-25 10:37:34

Mathieu M.
Membre
Lieu : Rhône-Alpes
Inscription : 2009-09-14
Site Web

Re : Solution pour des billets customisés?

Merci nikrou pour ces précisions ! ;)

Il y a tant de super plugins sous Dotclear qui mériteraient d'être mis en avant, ce serait un énorme plus pour Dotclear.

Hors ligne

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

Pied de page des forums

Sites map