Կոմպոզիտոր Drupal 8-ում: Ցուցադրվում են Twitter-ի վերջին թվիթները:
Մոդուլներ և գրադարաններ տեղադրելու համար լավագույնը Composer-ի օգտագործումն է: Composer-ը գրադարանների կառավարիչ է, որը թույլ է տալիս ղեկավարվել գրադարանների և մոդուլների միջև գոյացող կախվածություններով: Եթե մոդուլը կախվածություն ունի որևէ գրադարանից, ապա Composer-ը մոդուլի տեղադրման ժամանակ ավտոմատիկ կվերբեռնի այդ գրադարանը: Մի կողմից Composer-ը բարդացնում է մոդուլների տեղադրումը, բայց մյուս կողմից՝ մենք պարզացնում ենք գրադարանների տեղադրման գործընթացը, քանի որ դրանք հիմա ինքնուրույն կբեռնվեն և կկցվեն:
Composer ներբեռնելու և տեղադրելու համար անցեք պաշտոնական կայք՝
https://getcomposer.org/download/
Ի դեպ, Drush-ն теперь тоже ставится через Composer, եթե դուք արդեն տեղադրել եք Drush, ապա Composer-ն արդեն Ձեզ մոտ առկա է: Ստուգելու համար, որ Composer-ն տեղադրված է, օգտագործեք հետևյալ հրամանը:
composer --version
Արդյունքում պետք է प्रदर्शվի Composer-ի տարբերակը՝
Այժմ մուտք գործեք Ձեր կայքի թղթապանակը կոնսոլի միջոցով և կարող եք աշխատել Composer-ի հետ:
Twitter-ի վերջին տվիթների ցուցադրում Drupal 8-ում
Սկզբում պետք է ստեղծել Twitter application և ստանալ մի շարք տոկեններ, որոնք կօգտագործվեն հետագայում: Դուք կարող եք ստեղծել application հետևյալ հասցեով՝
Twitter API-ի 1.0 տարբերակը շուտով կանցնի անգործության և ոչ հաստատված հարցումները կորդեգենվեն մերժման: Ուրեմն օգտվեք API-ի 1.1 կամ ավելի նոր տարբերակից:
1. Ստեղծեք դևելոպերային հաշիվ (developer account). Նախ կարգավորեք Ձեր դևելոպերային հաշիվը Twitter-ում:
Լրացրեք գրանցման ձևը. սա անվճար և անհրաժեշտ քայլ է Twitter API 1.1 հարցումներ կատարելու համար: Այնուհետև այցելեք My Apps էջը՝ https://apps.twitter.com/ և սեղմեք «Create New App»:
2. Ստեղծեք Twitter application. Լրացրեք application-ի ստեղծման ձևաթուղթը՝ նշելով Ձեր կայքի դոմեյնը:
Եթե Ձեզ ուղղորդեցին 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-ը պահանջում է մի քանի տոկեն. այսինքն անհրաժեշտ է դրանք գեներացնել:
Այսպիսով կստացվի 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-ում՝