logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri

Composer in Drupal 8. Visualizzazione degli ultimi tweet da Twitter.

16/10/2025, by Ivan

Per installare moduli e librerie in Drupal, è preferibile utilizzare Composer. Composer è un gestore di pacchetti per PHP che consente di gestire le dipendenze tra librerie e moduli. Se un modulo richiede una libreria, Composer scaricherà automaticamente tale libreria durante l’installazione del modulo. Da un lato, Composer può rendere l’installazione leggermente più complessa, ma dall’altro semplifica la gestione delle librerie, poiché queste verranno scaricate e collegate automaticamente.

Per scaricare e installare Composer, visita il sito ufficiale:

https://getcomposer.org/download/

Tra l’altro, Drush ora si installa anch’esso tramite Composer. Se hai già installato Drush, probabilmente Composer è già presente nel tuo sistema. Per verificare se Composer è installato, esegui il comando:

composer --version

Il comando restituirà la versione di Composer installata:

drupal composer

Ora entra nella cartella del tuo sito tramite la console e potrai lavorare con Composer.

Visualizzare gli ultimi tweet di Twitter in Drupal 8

Per prima cosa, devi creare un’applicazione su Twitter e ottenere le chiavi di accesso (token) necessarie. Puoi creare un’applicazione qui:

https://apps.twitter.com/

La versione 1.0 dell’API presto verrà disattivata e le richieste non autenticate saranno rifiutate. Pertanto, utilizza l’API Twitter 1.1 o versioni successive.

1. Creazione dell’account sviluppatore. Imposta il tuo account sviluppatore su Twitter.

Compila il modulo di registrazione — è gratuito e necessario per effettuare richieste all’API Twitter 1.1. Poi accedi alla pagina My Apps: https://apps.twitter.com/ e clicca su “Create New App”.

twitter app block

2. Creazione dell’app Twitter. Compila il modulo indicando il dominio del tuo sito.

drupal

Se vieni reindirizzato alla pagina dell’applicazione, significa che la creazione è avvenuta con successo. Ora ti serviranno i seguenti dati:

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

La documentazione ufficiale dell’API Twitter spiega l’uso dei token: https://dev.twitter.com/oauth/overview/single-user.

3. Creazione dell’Access Token. OAuth richiede più token di accesso. Quindi, generali dal pannello della tua app.

Drupal

Questo genererà l’Access Token e l’Access Token Secret, che utilizzeremo più avanti.

Ora possiamo ottenere i nostri tweet tramite l’API di Twitter. Potremmo usare direttamente l’API via drupal_http_request, ma è più comodo e sicuro usare una libreria dedicata. Se l’API di Twitter cambia, ci basterà aggiornare la libreria senza modificare il nostro codice.

In questa guida useremo la libreria seguente:

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

Per installarla in Drupal, basta eseguire il comando Composer:

composer require j7mbo/twitter-api-php

Composer scaricherà automaticamente la libreria e le relative dipendenze. Potremo così utilizzarla nel nostro codice.

Ecco il codice del modulo che visualizza l’ultimo tweet in un blocco. Le chiavi e i token sono configurabili tramite un modulo di impostazioni dedicato:

/admin/structure/twitter-block/settings

Il codice completo del modulo può essere scaricato dai file allegati all’articolo o dal repository GitHub del sito didattico di DrupalBook basato su Bootstrap:

https://github.com/Drupalbook/bootstrap

File del modulo:

/modules/twitter_block/twitter_block.info.yml – file principale del modulo

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

/modules/twitter_block/src/Plugin/Block/TwitterBlock.php – plugin del blocco

<?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 {
  public function build() {
    $content = '';
    $config = \Drupal::config('twitter_block.settings');
    $settings = [
      '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'),
    ];

    $screen_name = 'netglooweb';
    $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 .= '<div class="twitter-message">' . $message->text . '</div>';
      }
    }
    return ['#markup' => $content];
  }
}

/modules/twitter_block/src/Form/TwitterBlockSettingsForm.php – form di configurazione

<?php
namespace Drupal\twitter_block\Form;

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

class TwitterBlockSettingsForm extends ConfigFormBase {
  public function getFormId() {
    return 'twitter_block_admin_settings';
  }

  protected function getEditableConfigNames() {
    return ['twitter_block.settings'];
  }

  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);
  }

  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 – definizione del percorso per la pagina di configurazione:

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 – file che specifica la dipendenza del modulo dalla libreria 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"
}

Codice del modulo su GitHub:

https://github.com/levmyshkin/twitter_block