Módulo flag en Drupal

Flag en drupal
Solucionex
28
Ago 24

El módulo flag permite que podamos crear un sistema de flagging en nuestro portal de Drupal. es completamente personalizable y se puede usar para cualquier tipo de nodo, usuarios, etc. 

Instalación

La instalación del módulo se hará con el siguiente comando de composer:

composer require 'drupal/flag:^4.0@beta'

Y luego activamos el módulo flag con drush:

drush en flag

Configuración

Para configurar el módulo tenemos que acceder al menú de administración > Estructura (Structure) > Flags. (/admin/structure/flags)

flag

Aquí se listarán todas las flags configuradas hasta el momento. Para añadir una nueva se clicará en el botón superior derecho. Ahora es el momento de elegir a que entidad se le va añadir la flag, hay que tener en cuenta que una vez que elegida el tipo de entidad, ya no se podrá volver a cambiar

Que datos se pueden configurar

  • Label: el label que se mostrará en el listado.
  • Scope: Si se marca la opción personal se creará un item individual por cada usuario. Al contrario, si se marca la opción global será el mismo flag para todos. Esto quiere decir que el usuario que lo marque y lo desmarque, lo hará para todos los usuarios.
  • Messages: En esta ventana se podrán configurar todos los mensajes, como el título, la descripción (se mostrará al hacer hover), etc.
  • Flag access: Define quien puede acceder a cada flag y, si por ejemplo se ha seleccionado el tipo "Contenidos", se podrá elegir elegir el tipo de contenido.
  • Display link as field: Si se marca esta opción, el flag saldrá en el display del tipo de contenido seleccionado.
  • Display checkbox on entity edit form: Si se marca se mostrará una checkbox en el formulario de editar la entidad. 
  • Link type: El tipo de acción que se ejecutará al clicar la flag. 
    • Field Entry Form: Redirige al usuario al formulario de la entidad.
    • AJAX link: Se realizará una request Ajax y no se recargará la página.
    • Confirm form: Redirigirá al usuario a un formulario de confirmación.
    • Normal Link: Un link normal y corriente, recargará la página.

Maquetando la flag

A los flags se le puede cambiar la plantilla. Se tendrá que crear una plantilla con el nombre "flag--[NOMBRE_MAQUINA_FLAG].html.twig. 

{#
/**
 * @file
 * Default theme implementation for flag links.
 *
 * Available functions:
 * - flagcount(flag, flaggable) gets the number of flaggings for the given flag and flaggable.
 *
 * Available variables:
 * - attributes: HTML attributes for the link element.
 * - title: The flag link title.
 * - action: 'flag' or 'unflag'
 * - flag: The flag object.
 * - flaggable: The flaggable entity.
 */
#}
{% apply spaceless %}
{# Attach the flag CSS library.#}
{{ attach_library('flag/flag.link') }}
{# Depending on the flag action, set the appropriate action class. #}
{% if action == 'unflag' %}
	{% set action_class = 'action-unflag' %}
{% else %}
	{% set action_class = 'action-flag' %}
{% endif %}
{% set icon = action == 'unflag' ? 'heart-solid' : 'heart' %}
{# Set the remaining Flag CSS classes. #}
{%
  set classes = [
    'flag',
    'flag-' ~ flag.id()|clean_class,
    'js-flag-' ~ flag.id()|clean_class ~ '-' ~ flaggable.id(),
    action_class,
  ]
%}
{# Set nofollow to prevent search bots from crawling anonymous flag links #}
{% set attributes = attributes.setAttribute('rel', 'nofollow') %}
<div class="{{classes|join(' ')}}">
	<a{{attributes}}>
		<svg{{ attributes.setAttribute('aria-hidden', 'true').addClass(classes) }}>
  			<use xlink:href="/assets/spritemap.svg#sprite-{{ icon }}"></use>
		</svg>
	</a>
</div>
{% endapply %}

Y con poco más queda el módulo flag configurado. 

Drupal