Կոմպոզիտոր 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-ում՝