oading-contentful-api-cms-headless

Contentful e PHP, iniziamo a consumare API!

Come invocare le API Contentful con PHP

In questa breve guida mostrerò come iniziare a utilizzare PHP per consumare contenuti provenienti da API Contentful.
L’API “Contentful Content Delivery” (CDA) è un’applicazione esposta in sola lettura che consente di recuperare contenuti da Contentful.
Tutti i contenuti, sia JSON che binari, vengono recuperati dal server più vicino alla posizione di un utente utilizzando il CDN globale.
Contenful pubblica SDK per varie lingue, in modo tale da rendere più facile sviluppare nuove applicazioni.

home-page-contentful

Pre-requisiti

Se non conosci ancora i “data model” Contentful, forse è meglio dare una lettura a questo articolo: https://www.contentful.com/developers/docs/concepts/data-model/

Autenticazione

Ad ogni richiesta i client devono fornire un API key (unico per space) ed utilizzato per delimitare le applicazioni e le classi di contenuto.
È possibile creare un token di accesso utilizzando la Web app o il Content Management API.

intro-contentful

Installazione

Il modo più semplice per installare il PHP SDK specifico è quello di utilizzare Composer e eseguire il seguente comando:

php composer.phar install contentful/contentful

Quindi aggiungere l’autoloader di Composer nell’Head del progetto:

require_once 'vendor/autoload.php';

Settare il client Contentful

Installato l’SDK, va inizializzato il client. Serviranno: Api Key e Space ID

$client = new \Contentful\Delivery\Client('<access_token>', '<space_id>');

Consumiamo i contenuti

Contentful separa fisicamente i contenuti inseriti all’interno delle voci create dai file (come immagini e PDF) aggiunti, relazionandoli fra loro. Per maggiori info si rimanda ancora alla guida sui concetti del modello di dati.

Contenuti

Creato il client adesso è possibile iniziare a consumare dati dall’API. Il codice riportato di seguito recupera tutte le voci nel tuo spazio dall’API ma non stampare ancora l’output. Infatti i dati che qui recuperiamo sono molti e vanno ancora filtrati per una corretta visualizzazione:

$entries = $client->getEntries();

Mentre questo codice recupera i dati riferiti ad un singolo ID:
$entryId = '<entry_id>';

$entry = $client->getEntry($entryId);
echo $entry->getproductName();

“Playsam Streamliner Classic Car, Espresso”

Per query più complesse è possibile utilizzare il costruttore di query. L’esempio riportato di seguito fornisce i risultati di un tipo di contenuto specifico (il prodotto) e li elabora per prezzo:

$query = new \Contentful\Delivery\Query;
$query->setContentType('<product_content_type_id>')
->orderBy('fields.price');
$productEntriesByPrice = $client->getEntries($query);

Una volta individuati i dati da pubblicare, vi si può accedere attraverso metodi get:

foreach ($productEntriesByPrice as $product) {
echo $product->getproductName(), PHP_EOL;
}

Whisk Beater
Playsam Streamliner Classic Car, Espresso
Hudson Wall Cup
SoSo Wall Clock

Se una voce contiene un collegamento ad un’attività o un’altra voce, l’SDK lo caricherà automaticamente. L’esempio riportato di seguito mostra il nome del marchio collegato al prodotto:

foreach ($productEntriesByPrice as $product) {
echo $product->getproductName(), ', Brand: ', $product->getBrand()->getcompanyName(), PHP_EOL;
}

Assets

La modalità di ricerca degli assets è molto simile a quella dei dati. Si può infatti ricercare i contenuti in uno specifico space così:

$assets = $client->getAssets();

Per un asset specifico:

$assetId = '<asset_id>';
$asset = $client->getAsset($assetId);

Allo stesso modo, si possono fare query molto complesse:

$query = new \Contentful\Delivery\Query;
$query->orderBy('sys.createdAt');
$assets = $client->getAssets($query);
<p/re>
Una volta individuato il file, si può accedere ai suoi metadata ed alla URL così:
echo $asset->getTitle(), PHP_EOL;
echo $asset->getFile()->getUrl();

//images.contentful.com/71rop70dkqaj/wtrHxeu3zEoEce2MokCSi/e86a375b7ad18c25e4ff55de1eac42fe/quwowooybuqbl6ntboz3.jpg

Utilizzando API IMAGES di Contentful è possibile definire la modalità in cui Contentful stesso servirà l’immagine, ad esempio convertendola in JPEG o ridimensionandola.

$options = new \Contentful\Delivery\ImageOptions;
$options->setFormat('jpg')
->setHeight(100);

echo $asset->getFile()->getUrl($options);

//images.contentful.com/71rop70dkqaj/wtrHxeu3zEoEce2MokCSi/e86a375b7ad18c25e4ff55de1eac42fe

Conclusioni

Oltre ad essere uno strumento potentissimo e potenzialmente gratuito, Contentful.com è un CMS Headless semplicissimo da utilizzare e le cui API sono facili da consumare.

Leggi l’articolo completo in inglese.

0 comments on “Contentful e PHP, iniziamo a consumare API!Add yours →

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *