Limitar creación de contenidos

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
Lato's picture

Hola

Estoy iniciando en el mundo de Drupal y escogí la versión 8, aunque des afortunadamente veo que no hay tantos módulos como en la versión 7.

El proyecto que estoy desarrollando consta de dos roles: Anunciante y Consumidor, el Anunciante puede publicar un tipo de contenido llamado Anuncio, sin embargo necesito que solo pueda publicar un anuncio

¿Cómo se le puede hacer para limitar la creación de contenido a solo uno?

Un saludo y de antemano gracias.

Comments

No estoy seguro si programas...

spideep's picture

Esta porción de código valida (antes del submit del formulario) que el usuario actual no sea author de un "article" ya existente.

<?php

function check_authority()
{
 
$userid = \Drupal::currentUser()->id();
 
$nids = \Drupal::entityQuery('node')
    ->
condition('type', 'article')
    ->
execute();
  foreach (
$nids as $nid) {
   
$authorid = Node::load($nid)->getOwnerId();
    if (
$authorid === $userid) {
      return
TRUE;
    }
  }
  return
FALSE;
}

function
node_creation_restriction_form_node_form_alter(&$form, FormStateInterface $form_state)
{
 
$form['#validate'][] = 'node_creation_resriction_node_form_validate';
}

function
node_creation_resriction_node_form_validate($form, FormStateInterface $form_state)
{
 
$node = $form_state->getFormObject()->getEntity();
  if (
$node->getType() == 'article') {
    if (
check_authority()) {
     
$form_state->setErrorByName('Restricted node creation', t('This user is already author of an article.'));
    }
  }
}
?>

Alexis Rengifo

Si programo gracias

Lato's picture

Muchas gracias por el código, aunque tiene rato que no agarro php no creo tener mayor problema.

Sólo me queda una duda. ¿Dónde inyectó el código?
¿Hay alguna forma de ver el código fuente ?

De nuevo gracias.

Lo puse en github

spideep's picture

Este es el repositorio.


Alexis Rengifo

Gracias

Lato's picture

Ya voy entendiendo un poco mas como funciona Drupal.

Probe el código y funciona, muchas gracias.

Spanish

Group organizers

Group events

Add to calendar

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: