Goz'Log


Quand on n'a pas de tête, on a un blog !

Drupal

Ajouter un formulaire à une entité existante

Problématique

Dans notre Drupal, nous avons une entité composée de plusieurs champs mais ne souhaitons pas qu'ils soient tous renseignés via le même formulaire ? 2 solutions s'offrent à nous :

La première est de créer notre controller, créer notre formulaire et gérer le chargement et l'enregistrement des données.
La seconde est d'altérer la définition de l'entité pour rajouter notre formulaire.

Importer du contenu à l'installation dans un Drupal 8

Lorsque vous travaillez à plusieurs et souhaitez disposer chacun du même contenu, ou avoir du contenu créé automatiquement sur vos différents environnements, il existe peu de modules pour cela.

Solution la plus utilisée: Default content.

Ce module permet d'exporter un contenu en fichier json qui sera placé dans un module.

**Avantages:**

Importe du contenu à l'installation du module
Gère les références à d'autres contenus

**Inconvénients:**

Installer un Drupal multilingue depuis la configuration

Depuis que nous n'avons plus besoin de features pour gérer la configuration et depuis que nous pouvons gérer cette configuration via les fichiers yaml dans un répertoire de configuration, il est beaucoup plus facile de maintenir une configuration entre différents environnements. Depuis quelques temps, il est possible d'installer sans module supplémentaire un Drupal en se basant sur une configuration existante.

Drupal Commerce 2.x - Adjustments: L'ajustement de prix

Avec Drupal Commerce 2.x arrive une nouvelle notion: les Adjustments.

Qu'est ce que l'adjustment ?

L'adjustment, ou ajustement en français, permet de modifier le montant d'une ligne de commande ou d'une commande, que ce soit en le diminuant ou en l'augmentant.

Deux exemples d'ajustements tarifaire intégrés au fonctionnement du core:

* La taxe (TVA): La taxe augmentera le montant de la ligne de commande suivant le taux de TVA applicable au produit.
* Une promotion: Le montant de la ligne de commande ou de la commande diminuera de la promotion souhaitée.

Drupal Commerce 2.x - Rendre un prix dynamique ou calculé via un service tiers

Dans le cas d'un commerce BtoB ou métier, les règles de prix sont souvent plus compliquées qu'un simple prix par produit. Dans ce cas, deux choix possibles:

* Le métier est dans un outil (CRM ou autre) externe.
* Le métier et donc la règle de calcul doit être gérée par le site.

Dans les 2 cas, Drupal Commerce 2.x offre les mécanismes pour facilement intégrer ces règles métier pour définir le prix unitaire de notre produit.

Récupérer le nom de la table d'un champ

Avec Drupal 8, non seulement nous avons de nouveau un champ propre à chaque type d'entité, mais en plus dans le cas où le nom du champ dépasse un certain nombre de caractères, son nom de table est composé d'un hash.

Dans le cas où l'on aurait besoin d'accéder directement à cette table, voici un morceau de code qui permet de retrouver dynamiquement le nom de la table.

$field_storage = $this->entityTypeManager->getStorage('my_entity');
$table_name = $field_storage->getTableMapping()->getFieldTableName('field_to_find');

Search API Solr sort by a field depending of value

With Drupal 7 and Search API + Search API Solr, i need to return content in top of results depending of another value.

Content indexed has 2 multiple fields list (or taxonomies like in example, whatever) with the same list: 'field_job' and 'field_best_job'. This is my example, but this can be converted by many other uses case.
First, my search is filtered by a facet on a field 'field_job' with value 'developer' and i want to put on top of results every contents which also have 'developer' value in the field 'field_best_job'.

Index localized taxonomy term with Search API and Solr

In Drupal 7 with Search API and Solr, i need to index taxonomy terms label which are localized, so terms can be searched in full text or thanks to facets in each localized translation.

I use modules search_api, search_api_solr, search_api_et, search_api_et_solr and i18n_taxonomy.

I see many issues and patch to make this fixing or altering facets, but it's not the way here. I have an item by language and want to index the text for this language.