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

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

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

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

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

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

Scroll

Կոմպոզիտոր Drupal 8-ում: Ցուցադրվում են Twitter-ի վերջին թվիթները:

13/05/2025, by Ivan

Մոդուլներ և գրադարաններ տեղադրելու համար լավագույնը Composer-ի օգտագործումն է: Composer-ը գրադարանների կառավարիչ է, որը թույլ է տալիս ղեկավարվել գրադարանների և մոդուլների միջև գոյացող կախվածություններով: Եթե մոդուլը կախվածություն ունի որևէ գրադարանից, ապա Composer-ը մոդուլի տեղադրման ժամանակ ավտոմատիկ կվերբեռնի այդ գրադարանը: Մի կողմից Composer-ը բարդացնում է մոդուլների տեղադրումը, բայց մյուս կողմից՝ մենք պարզացնում ենք գրադարանների տեղադրման գործընթացը, քանի որ դրանք հիմա ինքնուրույն կբեռնվեն և կկցվեն:

Composer ներբեռնելու և տեղադրելու համար անցեք պաշտոնական կայք՝

https://getcomposer.org/download/

Ի դեպ, Drush-ն теперь тоже ставится через Composer, եթե դուք արդեն տեղադրել եք Drush, ապա Composer-ն արդեն Ձեզ մոտ առկա է: Ստուգելու համար, որ Composer-ն տեղադրված է, օգտագործեք հետևյալ հրամանը:

composer --version

Արդյունքում պետք է प्रदर्शվի Composer-ի տարբերակը՝

drupal composer

Այժմ մուտք գործեք Ձեր կայքի թղթապանակը կոնսոլի միջոցով և կարող եք աշխատել Composer-ի հետ:

Twitter-ի վերջին տվիթների ցուցադրում Drupal 8-ում

Սկզբում պետք է ստեղծել Twitter application և ստանալ մի շարք տոկեններ, որոնք կօգտագործվեն հետագայում: Դուք կարող եք ստեղծել application հետևյալ հասցեով՝

https://apps.twitter.com/

Twitter API-ի 1.0 տարբերակը շուտով կանցնի անգործության և ոչ հաստատված հարցումները կորդեգենվեն մերժման: Ուրեմն օգտվեք API-ի 1.1 կամ ավելի նոր տարբերակից:

1. Ստեղծեք դևելոպերային հաշիվ (developer account). Նախ կարգավորեք Ձեր դևելոպերային հաշիվը Twitter-ում:

Լրացրեք գրանցման ձևը. սա անվճար և անհրաժեշտ քայլ է Twitter API 1.1 հարցումներ կատարելու համար: Այնուհետև այցելեք My Apps էջը՝ https://apps.twitter.com/ և սեղմեք «Create New App»:

twitter app block

2. Ստեղծեք Twitter application. Լրացրեք application-ի ստեղծման ձևաթուղթը՝ նշելով Ձեր կայքի դոմեյնը:

drupal

Եթե Ձեզ ուղղորդեցին application-ի էջ, նշանակում է application-ն հաջողությամբ ստեղծվել է: Հարկավոր տվյալներն են՝

  • Consumer key
  • Consumer secret
  • Access token
  • Access token secret

Twitter API-ի փաստաթղթերում կա նկարագրություն՝ ինչի համար են տոկենները և ինչպես օգտագործել դրանք՝ https://dev.twitter.com/oauth/overview/single-user.

3. Ստեղծեք Access token. OAuth-ը պահանջում է մի քանի տոկեն. այսինքն անհրաժեշտ է դրանք գեներացնել:

Drupal

Այսպիսով կստացվի Access Token և Access Token Secret, որոնք օգտագործելու ենք հետագայում:

Այժմ կարող ենք ստանալ մեր տվիթները Twitter API-ի միջոցով: Նախ կարելի է ուղղակի օգտագործել Twitter API-ն և Drupal-ի drupal_http_request ֆունկցիան՝ պատասխաններ ստանալու համար: Բայց ավելի լավ և հեշտ է օգտվել Twitter-ով աշխատելու գրադարանից: Եթե Twitter API-ն փոխվի, մեզ չի ստիպի ուսումնասիրել նոր v1.2 API-ի նրբությունները. մենք պարզապես կթարմացնենք գրադարանում, իսկ համատեղակցականության ապահովման խնդիրները հանձինք կթվարկեն գրադարանի հեղինակներին:

Այս հոդվածում մենք օգտագործելու ենք հետևյալ գրադարանը՝

https://packagist.org/packages/j7mbo/twitter-api-php

Այս գրադարանը Drupal-ում տեղադրելու համար բավական է Composer-ում գրել հետևյալ հրամանը՝

composer require j7mbo/twitter-api-php

Composer-ը ինքնուրույն կգտնի գրադարանը և ուրվագծային կախվածությունները: Եվ մենք անմիջապես կկարողանանք օգտագործել այն մեր կոդում:

Ստորև ներկայացված է մոդուլի կոդը՝ վերջին տվիթը բլոկի մեջ ցուցադրելու համար: Կոճերի և տոկենների կարգավորումները ես հանել եմ առանձին կոնֆիգուրացիոն ձևի մեջ՝

/admin/structure/twitter-block/settings

Մոդուլի կոդը կարող եք բեռնել հոդվածին կցված ֆայլերից կամ Github-ռեպոյից՝

https://github.com/Drupalbook/bootstrap

Մոդուլի ֆայլերը՝

/modules/twitter_block/twitter_block.info.yml - Մոդուլի հիմնական ֆայլը

name: Twitter Block
description: Display Last tweets.
type: module
core: 8.x
package: Custom

/modules/twitter_block/src/Plugin/Block/TwitterBlock.php - Բլոկի պլագին

<?php

namespace Drupal\twitter_block\Plugin\Block;

use Drupal\Core\Block\BlockBase;

/**
 * Provides a Last tweet block.
 *
 * @Block(
 *   id = "twitter_block",
 *   admin_label = @Translation("Twitter block"),
 * )
 */
class TwitterBlock extends BlockBase {

  /**
   * {@inheritdoc}
   */
  public function build() {
    $content = '';
    $config = \Drupal::config('twitter_block.settings');
    $settings = array(
      'consumer_key' => $config->get('consumer_key'),
      'consumer_secret' => $config->get('consumer_secret'),
      'oauth_access_token' => $config->get('access_token'),
      'oauth_access_token_secret' => $config->get('access_token_secret'),
    );

    // Սահմանեք Twitter հաշիվը՝ վերջին твիթները ստանալու համար
    $screen_name = 'netglooweb';

    // Ստացեք ժամանակացույցը՝ TwitterAPIExchange-ի միջոցով
    $url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
    $getfield = "?count=1";
    $requestMethod = 'GET';

    $twitter = new \TwitterAPIExchange($settings);
    $user_timeline = $twitter
      ->setGetfield($getfield)
      ->buildOauth($url, $requestMethod)
      ->performRequest();

    $messages = json_decode($user_timeline);
    if (!empty($messages)) {
      foreach ($messages as $message) {
        $content .= '';
      }
    }
    return array(
      '#markup' => $content,
    );
  }

}

/modules/twitter_block/src/Form/TwitterBlockSettingsForm.php - Կոնֆիգուրացիոն ձև

<?php

namespace Drupal\twitter_block\Form;

use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;

/**
 * Configure example settings for this site.
 */
class TwitterBlockSettingsForm extends ConfigFormBase {
  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'twitter_block_admin_settings';
  }

  /**
   * {@inheritdoc}
   */
  protected function getEditableConfigNames() {
    return [
      'twitter_block.settings',
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    $config = $this->config('twitter_block.settings');

    $form['consumer_key'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Consumer key'),
      '#default_value' => $config->get('consumer_key'),
    ];

    $form['consumer_secret'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Consumer secret'),
      '#default_value' => $config->get('consumer_secret'),
    ];

    $form['access_token'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Access token'),
      '#default_value' => $config->get('access_token'),
    ];

    $form['access_token_secret'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Access token secret'),
      '#default_value' => $config->get('access_token_secret'),
    ];

    return parent::buildForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    $this->config('twitter_block.settings')
      ->set('consumer_key', $form_state->getValue('consumer_key'))
      ->set('consumer_secret', $form_state->getValue('consumer_secret'))
      ->set('access_token', $form_state->getValue('access_token'))
      ->set('access_token_secret', $form_state->getValue('access_token_secret'))
      ->save();

    parent::submitForm($form, $form_state);
  }
}

/modules/twitter_block/twitter_block.routing.yml - Կառուցում ենք երթուղի մեր կոնֆիգուրացիոն ձևի համար՝

twitter_block.settings:
  path: '/admin/structure/twitter-block/settings'
  defaults:
    _form: '\Drupal\twitter_block\Form\TwitterBlockSettingsForm'
    _title: 'Twitter API Settings'
  requirements:
    _permission: 'administer site configuration'

/modules/twitter_block/composer.json - ֆայլ, որտեղ գրանցված է մեր մոդուլի կախվածությունը j7mbo/twitter-api-php գրադարանից

{
  "name": "drupal/twitter_block",
  "type": "drupal-module",
  "description": "Displays Last tweets.",
  "homepage": "https://drupalbook.org/ru/drupal/composer-v-drupal-8-vyvod-poslednih-tvitov-iz-twitter",
  "license": "GPL-2.0+",
  "require": {
    "j7mbo/twitter-api-php": "dev-master"
  },
  "minimum-stability": "dev"
}

Մոդուլի կոդը GitHub-ում՝

https://github.com/levmyshkin/twitter_block