Vous n'êtes pas identifié(e).
13 février 2024 Sortie de Dotclear 2.29
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
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
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
Effectivement, j'oubliais MyMeta ;)
Hors ligne
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
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
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 (?)
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
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 ⇩</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
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
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
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
Un équivalent à Muppet ? Aucun à ma connaissance, osku développait de sacrés plugins, dommage qu'il ne soit plus là :(
Hors ligne
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
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
@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
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
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
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).