logo

Լրացուցիչ Բլոկների Տեսակներ (EBT) - Դասավորության Կառուցողի նոր փորձառություն❗

Լրացուցիչ Բլոկների Տեսակներ (EBT) - ձևավորված, կարգավորելի բլոկների տեսակներ՝ սլայդշոուներ, ներդիրներ, քարտեր, բացվող ցանկեր և շատ ուրիշներ։ Ներառված կարգավորումներ՝ ֆոնի, DOM տուփի, JavaScript փլագինների համար։ Փորձեք դասավորությունների կառուցման ապագան արդեն այսօր։

EBT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EBT մոդուլները

❗Լրացուցիչ Պարբերությունների Տեսակներ (EPT) - Պարբերությունների նոր փորձառություն

Լրացուցիչ պարբերության տեսակներ (EPT) - անալոգիական պարբերության վրա հիմնված մոդուլների հավաքակազմ։

EPT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EPT մոդուլները

Scroll

Ռեսուրսների անհատականացում

18/05/2025, by Ivan

JSON Drop API Documentation

Որոշ կայքեր կարող են չցանկանալ բացահայտել որոշակի JSON:API ռեսուրսների տիպեր կամ դաշտեր, կամ կարող են ցանկանալ վերանվանել դաշտերը՝ ավելի մաքուր ինտերֆեյս ապահովելու համար։

Այս փոփոխությունները թույլ տալու համար, JSON:API-ն օգտագործում է ResourceTypeBuildEvent իրադարձության օբյեկտը՝ ResourceTypeBuildEvents::BUILD իրադարձության անունով։ Տե՛ս իրադարձությունների բաժանորդագրվելու և ուղարկելու մասին՝ իմանալու ինչպես օգտագործել այս իրադարձությունները։

Բաժանորդագրվող մոդուլները կարող են կանչել հետևյալ մեթոդները՝

  • ResourceTypeBuildEvent::disableResourceType()՝ ռեսուրսի տիպը ցանկացած եղանակով JSON:API-ով հասանելի դարձնելուց արգելափակելու համար։
  • ResourceTypeBuildEvent::disableField()՝ դաշտը ցանկացած եղանակով JSON:API-ով հասանելի դարձնելուց արգելափակելու համար։
  • ResourceTypeBuildEvent::setPublicFieldName()՝ դաշտի համար ալիաս սահմանելու համար, որպեսզի JSON:API-ն չբացահայտի ներքին Drupal դաշտի անունը։
  • ResourceTypeBuildEvent::setResourceTypeName()՝ ռեսուրսի տիպի անունը փոխելու համար, որպեսզի JSON:API-ն չբացահայտի ներքին ռեսուրսի անունը։

Ցանկացած մոդուլ՝ թե custom, թե contrib, կարող է իրադարձության բաժանորդագրման իր իրականացմանը ավելացնել այս մեթոդները։ Սա նշանակում է, որ կոնկրետ կայքի համար ստեղծված մոդուլը կարող է անջատել ռեսուրսի տիպեր, ինչպես նաև, որ իր սեփական էկզեմպլարները ստեղծող մոդուլները կարող են անջատել իրենց սեփական JSON:API ներկայացումները։

Օրինակ

Ստորև ներկայացված է EventSubscriber-ի օրինակ, որտեղ ցուցադրված են բոլոր հնարավոր գործողությունները․

<?php

namespace Drupal\modules\custom\resource_types\EventSubscriber;

use Drupal\jsonapi\ResourceType\ResourceTypeBuildEvents;
use Drupal\jsonapi\ResourceType\ResourceTypeBuildEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
 * Event subscriber՝ որոշ ռեսուրսների տիպերը փոխելու համար։
 */
class ResourceTypeBuildEventSubscriber implements EventSubscriberInterface {

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {
    return [
      ResourceTypeBuildEvents::BUILD => [
        ['disableResourceType'],
        ['aliasResourceTypeFields'],
        ['disableResourceTypeFields'],
        ['renameResourceType'],
      ],
    ];
  }

  /**
   * Անջատում է node/page ռեսուրսի տիպը։
   *
   * @param \Drupal\jsonapi\ResourceType\ResourceTypeBuildEvent $event
   *   Build event-ը։
   */
  public function disableResourceType(ResourceTypeBuildEvent $event) {
    if ($event->getResourceTypeName() === 'node--page') {
      $event->disableResourceType();
    }
  }

  /**
   * body դաշտի անունը փոխում է content-ի։
   *
   * @param \Drupal\jsonapi\ResourceType\ResourceTypeBuildEvent $event
   *   Build event-ը։
   */
  public function aliasResourceTypeFields(ResourceTypeBuildEvent $event) {
    if ($event->getResourceTypeName() === 'node--article') {
      foreach ($event->getFields() as $field) {
        if ($field->getInternalName() === 'body') {
          $event->setPublicFieldName($field, 'content');
        }
      }
    }
  }

  /**
   * Անջատում է sticky դաշտը node--article-ի համար։
   *
   * @param \Drupal\jsonapi\ResourceType\ResourceTypeBuildEvent $event
   *   Build event-ը։
   */
  public function disableResourceTypeFields(ResourceTypeBuildEvent $event) {
    if ($event->getResourceTypeName() === 'node--article') {
      foreach ($event->getFields() as $field) {
        if ($field->getInternalName() === 'sticky') {
          $event->disableField($field);
        }
      }
    }
  }

  /**
   * Վերանվանում է node--article-ը article-ի՝ JSON:API-ում այն ներկայացնելով որպես /jsonapi/article
   *
   * @param \Drupal\jsonapi\ResourceType\ResourceTypeBuildEvent $event
   *   Build event-ը։
   */
  public function renameResourceType(ResourceTypeBuildEvent $event) {
    if ($event->getResourceTypeName() === 'node--article') {
      $event->setResourceTypeName('article');
    }
  }

}

JSON:API Extras

Այս ֆունկցիոնալության մի մասը ապահովված է նաև JSON:API Extras մոդուլում։ Այս մոդուլը փորձում է օգտվել հիմնական ֆունկցիոնալությունից, որտեղ հնարավոր է, բայց տրամադրում է նաև ինտերֆեյս և որոշ լրացուցիչ հնարավորություններ, ինչպիսիք են՝

  1. API-ի հիմնական basepath-ը փոփոխելը։
  2. Դաշտերին enhancer-ներ ավելացնելը։
  3. Ռեսուրսները լռելյայն անջատելը։

Մոդուլը միացնելուց հետո կարող եք այցելել /admin/config/services/jsonapi՝ տեսնելու բոլոր կոնֆիգուրացիաներն ու բովանդակությունը, որ բացված է JSON:API-ով։

Հոդվածը՝ Drupal Documentation։