Tutorial - Aggiungere contenuto dinamico in una pagina Web statica generata con Cecil

Vedi come Markdown

Come aggiungere una chiamata verso un'API esterna dalla tua pagina Web statica

Obiettivo

Questa guida ti mostra come utilizzare il generatore del sito Cecil per visualizzare il contenuto di una pagina dinamica. Il tutto chiamando un'API per recuperare e visualizzare le informazioni su una pagina generata via Cecil.

Questa guida ti mostra come aggiungere una chiamata verso un'API esterna dalla tua pagina Web statica.

Informazioni sull’amministrazione dei servizi OVHcloud e su come trovare l’assistenza appropriata

Durante l’utilizzo delle guide OVHcloud, tieni presente le seguenti condizioni:

  • Le istruzioni mirano a fornire il maggior numero possibile di dettagli, ma non possono coprire tutti i casi d’uso individuali. Potrebbe essere necessario adattare le azioni descritte alle tue esigenze.
  • L’ecosistema OVHcloud è progettato per garantire flessibilità e libertà di scelta. I clienti sono quindi responsabili della configurazione corretta e sicura dei propri servizi. Per evitare la perdita di dati, ti consigliamo vivamente di applicare strategie di backup a tutti i tuoi dati importanti.
  • Le nostre guide e i nostri tutorial possono fare riferimento a software o servizi di terze parti in combinazione con le soluzioni OVHcloud. Il supporto tecnico fornito da OVHcloud non include la configurazione di sistemi o prodotti al di fuori della nostra responsabilità. Questo include, a titolo esemplificativo:
    • Sistemi operativi e interfacce utente (Windows, Debian, Plesk, ecc.).
    • Qualsiasi altro software di terze parti (client FTP, software di posta elettronica, ecc.).
    • Servizi offerti da altri provider (DNS, API, interfacce utente, ecc.).

Per ricevere l’assistenza appropriata in caso di problemi, segui queste indicazioni:

  • Cerchi una consulenza personalizzata o vuoi discutere di un argomento non trattato in dettaglio nella nostra documentazione?
    Unisciti alla Community OVHcloud per cercare il tuo argomento e confrontarti con altri utenti.
  • Devi segnalare un incidente relativo al tuo servizio OVHcloud o riscontri difficoltà nello Spazio Cliente OVHcloud?
    Crea una richiesta di supporto nel nostro centro assistenza.
  • Hai bisogno di assistenza professionale per il tuo progetto o di aiuto per attività al di fuori del nostro perimetro di supporto?
    Visita il nostro portale dei partner per trovare esperti che conoscono le soluzioni OVHcloud.
  • Cerchi informazioni più dettagliate sui nostri livelli di supporto e sui Professional Services?
    Visita le nostre pagine web sui livelli di supporto OVHcloud e sugli OVHcloud Professional Services.

Puoi partecipare al miglioramento della nostra documentazione:

  • Vuoi condividere un feedback per migliorare una guida o segnalare informazioni insufficienti su una pagina specifica?
    Utilizza i pulsanti "Questa pagina ti è stata utile?" in fondo alla pagina per farcelo sapere.
  • Vuoi proporre un aggiornamento concreto della documentazione?
    Utilizza la funzione "Modifica questa pagina", disponibile in fondo alla pagina e nella barra laterale.

Prerequisiti

Procedura

L'esempio scelto è l'utilizzo di una delle API di un servizio che fornisce dati meteorologici. Questo in base a una città presa dall'utente.

Gli step sono i seguenti:

  • creare una nuova pagina su Cecil e aggiungere questa pagina al menu del sito web
  • creare un account e recuperare la chiave per effettuare richieste sull'API meteo
  • modificare il file.md creato aggiungendo il codice HTML
  • aggiungere assets (JavaScript e CSS)
  • generare e testare la soluzione.

Crea una nuova pagina

Prepara il tuo ambiente di sviluppo accedendo in SSH sul tuo hosting Web e consulta la guida Installare e configurare Cecil per installare la tua applicazione Cecil in una directory dedicata.

Crea una directory e inserisci:

mkdir myWebSite
cd myWebSite

Utilizzo dell'API OpenWeather

In questa guida utilizzeremo un'API fornita dal sito OpenWeather. In questo modo è possibile conoscere le informazioni meteorologiche in base al nome di una città.

Crea un account su https://home.openweathermap.org/users/sign_up
Una volta confermato l'account (tramite email di conferma), accedi al menu "My API keys". Una chiave è stata generata di default, recuperala e conservala per il seguito di questa guida.

Open Weather API key

Aggiunta del codice HTML

Crea una nuova pagina con il seguente comando:

php cecil.phar new:page weather.md

Modifica la pagina generata:

nano pages/weather.md

Modifica l'intestazione del file per far apparire la pagina nel menu:

---
title: "Weather"
data: 2022-11-28
published: true
menu: mano
---

Dopo l'intestazione, aggiungi il codice HTML per visualizzare la città che hai scelto, le temperature reindirizzate dall'API e un pulsante per cambiare parametro:

---
title: "Weather"
date: 2022-11-28
published: true
menu: main
---
<h1>Weather</h1>
<div>
    <span id="city">Roubaix</span>
    <div id="temperature"><span id="temperatureValue"></span> °C</div>
    <div id="modify">Change city</div>
</div>

Genera la pagina HTML con il seguente comando:

php cecil.phar build

Verifica il risultato nel browser e clicca sul link "Weather" che è stato aggiunto nel menu principale:

Test new page

Aggiungi il codice JavaScript

Non è possibile aggiungere un tag <script> in un file Markdown. Dovrai modificare il template fornito di default.

Modifica il template

I template sono disponibili nella directory layout. Per visualizzarli, esegui questo comando:

ls -la layout

Il file contiene una directory blog e un file index.html.twig:

layouts directory

Apri il file index.html.twig:

Cecil layouts index file

Il file si riferisce a un template che non è presente nella directory. Questo file (e altri) sono in realtà nel file cecil.phar. Le estensioni.phar designano archivi di file PHP che possono essere manipolati senza decomprimerli. Elimina i file di questo archivio per renderli visibili:

php cecil.phar util:extract

Mostra nuovamente il contenuto della directory layout:

Cecil layouts directory including uncompressed files

Modifica il template di default per inserire un tag <script> che contenga il codice che permette la chiamata all'API:

nano layouts/_default/page.html.twig

Il tag e il suo contenuto devono essere posizionati prima del tag </body> in fondo alla pagina:

    </footer>
    {%- include 'partials/googleanalytics.js.twig' with {site} only ~%}
    {% block javascript %}
    <script src="{ asset( script.js', {minify: true})}"></script>
    {% endblock %}
  </body>
</html>

Quando uno o più file assets sono modificati, ricostruisci la cache con il seguente comando:

php cecil.phar cache:clear:assets

Se le modifiche non sono effettive sul tuo browser, svuota la cache del browser. Puoi anche eliminare i file generati sul tuo hosting Web:

php cecil.phar clear

Per ricostruire la tua soluzione utilizza questo comando:

php cecil.phar build

Aggiungi il file JavaScript

I file JavaScript, come i file CSS, devono essere inseriti nella directory assets. Puoi organizzarli in diverse directory.

Crea il file script.js menzionato in precedenza alla root della directory assets:

nano assets/script.js

Sostituisci il valore della variabile apiKey con la chiave recuperata precedentemente sul sito OpenWeather

let apiKey = '123456789'; // Sostituisci questo valore
let city = 'Roubaix'; // Indica qui la città di default che verrà visualizzata sulla pagina meteo
getTemperature(city);  // Chiamata della funzione che chiama l'API con il parametro 'city'

// Aggiunta di un evento sul click del pulsante "Change city"
let button = document.querySelector('#modify');
button.addEventListener('click', () => {
    city = prompt('Choose a city');
    getTemperature(city);
});

// Funzione di chiamata all'API utilizzando un oggetto XMLHttpRequest per una richiesta asincrona
function getTemperature(city) {
    let url = 'https://api.openweathermap.org/data/2.5/weather?q=' + city + '&appid=' + apiKey + '&units=metric';
    let xhrQuery = new XMLHttpRequest();
    xhrQuery.open('GET', url);
    xhrQuery.responseType = 'json';
    xhrQuery.send();

    xhrQuery.onload = function() {
        if (xhrQuery.readyState === XMLHttpRequest.DONE) {
            if (xhrQuery.status === 200) {
                let city = xhrQuery.response.name;
                let temperature = xhrQuery.response.main.temp;
                document.querySelector('#city').textContent = city;
                document.querySelector('#temperatureValue').textContent = temperature;
            } else {
                alert('A problem has occurred, please come try later.');
            }
        }
    };
}

Test

Consulta il tuo sito Web tramite browser:

Web page with JavaScript running

Clicca su "Cambia città" e inserisci il nome di un comune:

Select a new city Page updated

Conclusione

Questa guida ti mostra un esempio di integrazione di dati dinamici recuperati da fonti esterne tramite API. Costruisci e fai vivere un sito web modificando manualmente il contenuto di queste pagine o creandone di nuove. Il tutto arricchendo il loro contenuto da altri siti web.

Per saperne di più

Per prestazioni specializzate (referenziamento, sviluppo, ecc...), contatta i partner OVHcloud.

Per usufruire di un supporto per l'utilizzo e la configurazione delle soluzioni OVHcloud, consulta le nostre soluzioni di supporto.

Contatta la nostra Community di utenti.

Questa pagina ti è stata utile?