drupal 7

Comment faire ...

Bonjour,

Est-il possible de faire la chose suivante sous Drupal 7 :

Mon site doit permettre la création de 3 contenus différents :

  • contenu A
  • contenu B
  • contenu C

Certains utilisateurs pourront les créer, modifier et supprimer. D'autres ne pourront que les consulter.

Je voudrais que sur ma page d'accueil, apparaissent 3 onglets ( donc Contenu A, Contenu B et Contenu C ).

Par Artusamak
Julien Dubois

Keynote de Dries – Drupalcon Austin 2014

La keynote que Dries a tenu pour le lancement de la nouvelle édition américaine de la Drupalcon 2014 à Austin se résume à se demander ce que sera le web de demain et comment Drupal pourrait jouer un rôle dans cet écosystème.

Drupalcon Austin 2014C’est une question intéressante à se poser lorsque l’on constate que de plus en plus d’acteurs venus à Drupal commencent à faire marche arrière faute de libertés suffisantes avec Drupal 7 et d’une arrivée très tardive de Drupal 8. S’interroger sur ce à quoi ressemblera le web dans quelques années est une chose, mais s’inquiéter de savoir si Drupal fera partie de ce tableau en est une autre. La réponse est probablement non.

Mais il est intéressant de constater que l’évolution à laquelle on assiste auprès des acteurs du web est que les géants deviennent de plus en plus géants et qu’ils écrasent complètement les nouveaux venus. Il va falloir que les gens acceptent de se rebeller contre ça pour que l’équilibre d’internet ne soit pas en danger.

Il est presque déjà trop tard, Google décide actuellement de ne plus montrer certains sites, qu’en sera-t-il demain lorsqu’il aura aspiré toutes les données de vos sites et les montrera directement dans sa page de recherche sans vous renvoyer le moindre trafic ?

Dries pose cette question et se dit que Drupal pourrait avoir un rôle à jouer en vous permettant d’avoir entre les mains un outil permettant de créer un genre de plateforme riche à partir de laquelle le contenu pourrait être disséminé facilement selon le format dans lequel vous le consommeriez (article sur un PC, billet sur votre téléphone, etc).

Je trouve que cette keynote a le mérite de mettre en lumière ce problème pour lequel nous n’avons pas forcément conscience mais je reste sceptique sur le rôle que Drupal pourra jouer. Le pouvoir réside principalement sur le trafic plus que sur les moyens technologiques à disposition pour formater le contenu et adapter le message au visiteur. Drupal n’a pas d’emprise sur l’acquisition du trafic et l’on peut légitimement se demander comment s’affranchir d’un Google pour faire venir les visiteurs. C’est un acte citoyen de s’interroger sur ce point et sur nos habitudes de consommation, la réponse n’est pas simple mais il faudra accepter de soutenir des petits acteurs prometteurs faute de tous les voir disparaitre les uns après les autres.

La keynote complète :

Problème ajout d'image dans un contenu

Bonjour

Je me présente, je suis nouveau sur Drupal et je dois m'occuper depuis peu d'un site sous Drupal 7 d'une asso. ce n'est pas moi qui ai réalisé le site.

Cependant depuis hier, j'ai un problème très gênant, dans mon wysiwyg (ckEditor), je ne peux plus ajouter d'image dans mes contenus lorsque je créé une page j'explique :

Ajout span et titre aux élements de main menu

Bonjour,
Je suis un intégrateur/ développeur/ référenceur et j'ai commencé de créer un site avec drupal 7.26.
Je suis bloqué, je veux savoir comment ajouter les spans aux éléments de menu principale ainsi que les titres en utilisant une fonction dans le fichier template.php.

Merci.

Problème formulaire ajax drupal 7

Bonjour,

Voici mon problème, j'ai une classe php et dans cette classe j'aimerais crée une fonction view qui vas afficher la formulaire créer dans la fonction formulaire

Exemple :

class blabla extends blibli {

       public function view(){

           $form = self::formulaire();

          return render($form));

        }

     private function formulaire(){

Par Artusamak
Julien Dubois

Drupal Dev Days Szeged 2014 – Episode 3

Toutes les bonnes choses ont une fin, les Dev Days n’y font pas exception. Après vous avoir raconté ce à quoi j’ai participé au cours de la première journée et de la deuxième journée de la conférence à Szeged, voilà ce que j’ai retenu de ma dernière journée.

Marvin assis devant un micro

Marvin se prépare à donner sa session (c) Mr.TeeCee

The future of media management in Drupal 8

Démarrage de la journée par cette présentation, je suis un peu curieux de savoir ce qu’il se trame pour D8 sachant que je sors d’un projet où nous avons dû gérer des médias. La session est présentée par Janez Urevc, ses slides sont disponibles sur son site. Sauf qu’en fait le chantier n’est pas hyper avancé, des discussions ont lieu depuis Prague mais sont un peu bloquées faute d’accord sur la direction dans laquelle aller. Du coup si des bonnes volontés veulent aider, rejoignez les issues, la conversation doit avancer.

Develop for D8 on D6 and D7

Ensuite direction la présentation de FGM qui a donné son point de vue sur la bascule vers Drupal 8. Il s’appuie sur des expériences passées pour décrire les situations à préférer pour faire du D8 ou non. Tout n’était pas hyper clair pour moi, j’attends ses slides pour résumer sa pensée et donner mon avis. (Il était trop tôt pour moi :)).

Graph databases for D8

Cette session a été la session de la conférence pour moi. J’avais découvert ce qu’étaient les graph databases lors des Human Talks de Paris (rendez-vous tous les deuxième mardi du mois pour venir nous voir) et Peter Arato nous a fait une présentation de Neo4j, une solution en Java, pendant 40 minutes en expliquant les usages que l’on pouvait en tirer. Comme tweeté en sortant de la salle :

Le constat est simple, lorsque vous cherchez à afficher les résultats de requêtes complexes telles que « liste les amis, des amis de mes amis » les bases de données relationnelles ne sont pas compétitives, par design elles ne sont pas faites pour ça. L’idée est donc de stocker les données différemment. Et c’est là que les graph databases apportent leur solution, au lieu de normaliser les entrées en ajoutant des clés pour faire des jointures vous décrivez les relations entre les éléments. Exemple : John / cuisine pour / Lisa, John / habite / Londres, Lisa / habite / San Franciso, John / aime / Lisa. En multipliant les relations entre les objets vous obtenez un réseau de connexions. Le principe suivant est que lorsque vous allez requêter votre base de données vous allez définir un point de départ, décrire les conditions de relations que vous voulez poser, leur profondeur et potentiellement le type de connexions attendues. Exemple : « Trouve moi une fête où il y aura au moins 20 de mes amis proches qui ne connaissent pas mon ex ». C’est très « naturel » comme langage, si vous regardez la syntaxe des requêtes vous verrez que c’est très lisible.
Quel intérêt à utiliser ce genre de base de données ? Non, elles ne remplaceront pas totalement un MySQL pour le moment, l’idée est plutôt de s’appuyer sur ce type de bases pour faire les calculs complexes et laisser MySQL servir la page de détails d’un résultat de recherche par exemple. Les tendances du web sont à la recommandation et à la personnalisation, c’est tout à fait approprié d’avoir un index à côté du site principal à partir duquel on extraira les résultats de ces calculs avancé (à la Solr).
Le niveau d’intégration avec Drupal est très basique, il y a la possibilité d’indexer des données, quelques types de champs sont supportés et il est faisable de requêter depuis une fenêtre le serveur Neo4j sans aller plus loin pour l’instant.
Les slides de Peter sont en ligne, allez y jeter un oeil et intéressez-vous au sujet, vous en entendrez de plus en plus parler, tout comme les bases de données document.

Configuring D8

L’un des nouveaux morceaux très attendus de Drupal 8 est l’intégration dans le core d’un outil pour l’industrialisation, un remplaçant de Features. Un système permettant d’exporter et d’importer de la configuration d’un environnement à un autre. Gabor s’est dévoué pour remplacer Alex Pott souffrant pour la présentation. En gros le meilleur moyen que vous plongiez dans le système est de le manipuler. La page de documentation de l’API de configuration est une lecture obligatoire pour plonger dans ce nouveau morceau. Il a été pensé pour permettre d’éviter les problèmes connus de Features et permettre de facilement générer des diffs, facilement s’interfacer avec le multilinguisme et facilement être déployable.
Il faudra juger à l’usage, mes premiers tests pour le portage de Views Megarow m’ont paru satisfaisants. Sachez que la configuration est stockée sous forme de Yaml maintenant et que le bon vieil adage Don’t hack core est devenu Don’t hack your active config car cela peut faire exploser votre site assez facilement si vous le bidouillez.
Pas de slides à disposition, lisez la page de documentation, vous découvrirez entre autres qu’il y a plusieurs niveaux de configuration, la configuration « simple », que vous stockiez avant via un variable get / set et les configurations « complexes » qui introduisent le concept de config entities.

D8 for real

Dernière présentation de la dernière journée et dernier speaker que j’aime beaucoup, Florian. Il nous partage son point de vue sur l’état de Drupal 8 et ce que l’on peut faire avec dès maintenant. Il dresse un constat de ce qui va évoluer dans nos façons de faire les projets avec un ratio d’utilisation des modules contrib qui devrait baisser comparé à Drupal 7 compte tenu du fait que chaque nouvelle version majeure rend le produit de plus en plus utilisable out of the box.
Mais Florian ne s’arrête pas là, il pointe du doigt le fait qu’avec tous les changements apportés au coeur les modules les plus populaires devraient être réécrits pour profiter de la nouvelle façon dont Drupal fonctionne. Et quitte à réécrire un module, peut être qu’il faut complètement ré-envisager la façon dont on s’en sert. Il s’appuie pour cela sur l’exemple de Panels, avec toutes les technos qui sont apparues ces dernières années, peut être qu’il sera possible de faire un outil répondant à nos besoins d’une façon complètement nouvelle. Ou peut être que l’on n’aura pas besoin de Panels du tout maintenant !
L’important c’est que les gens commencent à se servir de Drupal 8 pour qu’il monte en puissance très vite. Si vous souhaitez être un acteur significatif de l’éco-système il est crucial que vous vous y intéressiez plus tôt que tard. En construisant de vrais projets, en utilisant Drupal 8 pour de vrai, vous identifierez des besoins et proposerez des solutions qui seront peut être les Panels de demain.

Par Artusamak
Julien Dubois

Drupal Dev Days Szeged 2014 – Episode 2

Les Drupal Dev Days ce sont trois jours de conférence, si vous voulez savoir ce qu’il s’est dit précédemment, n’hésitez pas à lire mon compte-rendu de la première journée des Drupal Dev Days Szeged. Voilà ce que j’ai retenu de la deuxième journée.

Drupal Developer Days - J2

Keynote

Pour continuer sur leur lancée, les organisateurs ont proposé une Keynote avec un intervenant de qualité, en l’occurence une intervenante car il s’agissait de Cathy Theys (@YesCT sur drupal.org). Le sujet de sa présentation était à propos de l’organisation de sprints. Cathy est l’une des figures incontournables lorsque l’on parle de sprints, elle a aidé à se former des sprints allant de 10 personnes à plus de 600.

Les messages qu’elle a envoyé lors de son intervention sont assez simples, pour réussir vos sprints les nouveaux arrivants sont la clé. Il y a un cercle vertueux à les mentorer efficacement. Un débutant est impressionné par toute la mécanique du développement du coeur alors prenez le par la main en l’aiguillant vers des issues qui sont à sa portée pour le mettre en confiance. Prenez également le temps de faire du suivi avec ces nouveaux venus pour qu’ils ne soient pas lâchés dans la nature.
La principale difficulté consiste à réussir à « fidéliser » les contributeurs, trop souvent ils viennent aider pendant 1 ou 2 jours puis repartent dans la nature. Si vos sprints sont bien gérés, vos mentors vont prendre soins de ces nouveaux arrivants et pourront petit à petit les aider à devenir eux même mentors.
Être mentor n’est pas une mission réservée à une élite, si vous avez appris à faire une chose vous pouvez la réapprendre tout de suite à quelqu’un d’autre (et vous devenez alors son mentor). Les mentors peuvent ne pas savoir et vont vous transmettre leur approche pour trouver des réponses « voilà comment je m’y prendrais pour chercher », « j’irais parler à cette personne pour lui demander son avis », etc.
C’est grâce à l’envie de partager que la communauté fonctionne et que les sprints prennent chaque année un peu plus d’ampleur. Ne soyez donc pas effrayés et tentez de proposer un coup de main autour de vous en organisant vos sprints. Même si les gens ne viennent pas en masse la première fois, martelez vos messages, continuez de laisser une porte ouverte pour permettre aux plus timides de sauter le pas et la sauce prendra autour des sprints.
Par ici pour lire ses slides.

Building really fast websites with D8

Ma première session de la journée a été celle de Wim Leers, il y a parlé des performances de notre cher Drupal et de comment l’on pouvait les améliorer. La session était principalement orientée autour des problématiques de cache et bien entendu des problèmes d’invalidation de cache (l’un des deux sujets les plus compliqués en informatique avec le nommage des choses). L’un des principaux problèmes du cache généré par D7 est que le markup de certains éléments comme les liens contextuels, ou l’affichage d’un drapeau « nouveau contenu » change d’un utilisateur à l’autre, obligeant à générer autant de variantes d’un même cache. Changer de technique pour cacher ces données est donc une piste qui a été suivie, l’idée consiste à générer la même base de markup pour tous et d’injecter des placeholders qui sont remplacés à la volée pour chaque utilisateur. Cela coûte quelques requêtes supplémentaire par page mais cela est beaucoup plus bénéfique dans son ensemble. S’appuyer sur des techniques comme le localStorage / sessionStorage (stockage de données côté client plutôt dans une base de données) fait aussi parti des nouvelles façons de faire qui permettent de rendre la gestion du cache plus maligne.
Dans Drupal 7, il était impossible de savoir quels caches invalider lorsqu’un contenu était mis à jour, il y avait le cache du rendu direct de l’entité mais peut être aussi des rules ou des pages de listing à invalider. Difficile donc de savoir qu’est ce qui était utilisé où.
Il a donc été décidé d’ajouter des tags aux bins de cache, permettant ainsi de tagger un élément avec un node id, un user id ou un type de contenu (mais pas que), de cette façon lorsque vous allez invalider un cache, vous allez invalider un tag « je veux vider tous les caches qui sont liés au node 2254″. Imbattable comme technique pour améliorer la finesse des invalidations !
La présentation était vraiment intéressante, vous pouvez consulter les slides de Wim sur son site.

D8 plugin system

Un des gros morceaux de Drupal 8 a été présenté par Aspilicious. Le système de plugin de Drupal 8 pourrait être présenté de plein de façons différentes et avec des degrés de profondeur plus ou moins importants. Je vais me contenter de vous en faire la description qui me parait la plus pertinante.
Le système de plugin se base sur le principe des annotations introduit par un composant de Symfony. Les annotations sont des commentaires autour des classes qui suivent une structure bien définie et qui permettent au système d’étendre les composants de votre application. C’est ni plus ni moins que l’équivalent de vos hook_info_*() dans Drupal 7.
Le système de plugins en lui même est la possibilité qu’il vous est donnée de créer vos propres composants, vos propres hook_info(). Jetez un oeil aux slides, Aspilicious a pris le temps d’introduire tous les concepts de la plugin API par une suite d’exemples de plus en plus complexes.

Themer VS Coder

Moment de légèreté de la journée, Campbell et Adam, développeur pour l’un et thémeur pour l’autre, sont partis d’une base de wireframe de site et se sont donné comme mission de s’approcher de la mise en page demandée au plus près en partant d’un site Drupal avec des contenus déjà saisis et un peu de configuration faite.
Après 15 minutes chacun, on se rend compte que certaines choses sont faciles à faire pour l’un des deux mais plus compliquées pour l’autre (et inversement).
La conclusion de leur démo (où ils arrivent presque tous les deux au résultat demandé) est que tous les corps de métier doivent collaborer car leurs compétences sont complémentaires.

Get ready for fully translated sites with Entity Translation

Schnitzel impliqué dans l’équipe multilingue qui travaille sur Drupal 8 a présenté l’état de l’art des traductions pour Drupal 7. Il n’est pas toujours simple de choisir sa stratégie de traduction de contenu mais ça l’est un peu si vous lisez les slides de la présentation. Michael a montré comment utiliser Entity Translation et comment basculer vers ce module si précédemment vous utilisiez content translation ou field translation. Ce module est une référence et a été utilisé dans la nouvelle version majeure de Drupal. Ses slides sont en ligne (attention aux allergiques, beaucoup de chatons dans les slides !)

Care for your backoffice

Cette dernière présentation de la journée est celle que Guillaume et moi avons donné, les slides sont ci-dessous. Pendant cette présentation nous avons listé les conseils et modules que vous pouvez utiliser pour améliorer vos backoffice. Des utilisateurs passent des heures à se servir de ces interfaces, optimisez les, profitez de modules disponibles côté contrib pour rendre vos backoffices plus utilisables et si vous avez de bonnes idées, contribuez les !

Lire le compte-rendu de la troisième journée.

Pages