Submitted by gfontaniere on
Bonjour,
Je débute sur Drupal et j'ai cherché pendant de nombreuses heures à masquer les ids qui apparaissent après les termes affichés dans les champs d'autocompletion.
J'ai utilisé les 2 sites suivants pour arriver à mes fins :
- https://www.drupal.org/docs/theming-drupal/adding-stylesheets-css-and-ja...
- http://borutpiletic.com/article/hide-entity-id-autocomplete-field-widget...
J'ai du modifier/créer les fichiers suivants du thème que j'utilise (Bartik) :
drupal/core/themes/bartik/
├── bartik.info.yml
├── bartik.libraries.yml
drupal/core/themes/bartik/js/
├── autocompletion-hideid.js
Contenu des fichiers
bartik.info.yml
Ajout de la ligne - bartik/global-scripts
dans la section libraries :
# This theme is marked as @internal. It is intended to evolve and change over
libraries:
- bartik/classy.base
- bartik/classy.messages
- core/normalize
- bartik/global-styling
######## AJOUT ############
- bartik/global-scripts
######## AJOUT ############
............
bartik.libraries.yml
Ajout en fin de fichier :
global-scripts:
version: 1.0
js:
js/autocompletion-hideid.js: {}
dependencies:
- core/jquery
autocompletion-hideid.js
/
* @file
* autocompletion_hideid behaviors.
*/
(function ($, Drupal) {
'use strict';
/
* Remove entity reference ID from "entity_autocomplete" field.
*
* @type {{attach: Drupal.behaviors.autocompleteReferenceEntityId.attach}}
*/
Drupal.behaviors.autocompleteReferenceEntityId = {
attach: function (context) {
// Remove reference IDs for autocomplete elements on init.
$('.form-autocomplete', context).once('replaceReferenceIdOnInit').each(function () {
let splitValues = (this.value && this.value !== 'false') ?
Drupal.autocomplete.splitValues(this.value) : [];
if (splitValues.length > 0) {
let labelValues = [];
for (let i in splitValues) {
let value = splitValues[i].trim();
let entityIdMatch = value.match(/\s*((.*?))$/);
if (entityIdMatch) {
labelValues[i] = value.replace(entityIdMatch[0], '');
}
}
if (labelValues.length > 0) {
$(this).data('real-value', splitValues.join(', '));
this.value = labelValues.join(', ');
}
}
});
}
};
let autocomplete = Drupal.autocomplete.options;
autocomplete.originalValues = [];
autocomplete.labelValues = [];
/**
* Add custom select handler.
*/
autocomplete.select = function (event, ui) {
autocomplete.labelValues = Drupal.autocomplete.splitValues(event.target.value);
autocomplete.labelValues.pop();
autocomplete.labelValues.push(ui.item.label);
autocomplete.originalValues.push(ui.item.value);
$(event.target).data('real-value', autocomplete.originalValues.join(', '));
event.target.value = autocomplete.labelValues.join(', ');
return false;
}
})(jQuery, Drupal);
Dans un terminal, faire drush cr
et le tour est joué.
Si ça peut faire gagner du temps à certains :)