Vai al contenuto principale

Come integrare un widget bsport su Wix

Guida passo passo per aggiungere un widget bsport a un sito Wix, perché l'elemento Embed HTML causa problemi e il metodo Custom Code consigl

Wix offre due modi per aggiungere un widget bsport al tuo sito. Entrambi funzionano, ma si comportano in modo molto diverso — e quello che Wix suggerisce per primo è quello dietro la maggior parte dei problemi segnalati dagli studi. Questo articolo ti guida attraverso entrambi i metodi, spiega i limiti di Wix dietro questi problemi e mostra come evitarli.

Preferisci che lo configuriamo noi per te? Il metodo consigliato (Metodo 2) prevede l'aggiunta di codice personalizzato al tuo sito Wix. Se vuoi che lo implementiamo noi, contatta il supporto bsport e inviaci un invito come collaboratore al tuo sito Wix (in Wix: Impostazioni → Ruoli e autorizzazioni). Ci occuperemo noi del resto.

Prima di iniziare

Genera il codice del tuo widget nel back office bsport: Impostazioni → Widget, scegli il tipo di widget, configura le opzioni, poi scorri verso il basso e copia il codice. Ogni volta che modifichi un'impostazione viene generato un nuovo codice, e devi incollare la nuova versione sul tuo sito perché la modifica abbia effetto.

Metodo 1 — Elemento Embed HTML (rapido, con limiti)

  1. Nell'editor di Wix, clicca su Aggiungi elementi → Incorpora codice → Incorpora HTML

  2. Trascina l'elemento nella pagina dove vuoi posizionare il widget

  3. Clicca su Inserisci codice e incolla il codice del tuo widget

  4. Ridimensiona l'elemento sia in modalità desktop che mobile, poi clicca su Pubblica

Cosa sapere prima di scegliere questo metodo: l'iframe

Wix inserisce automaticamente tutto ciò che viene aggiunto con l'elemento Embed HTML all'interno di un iframe — un riquadro di dimensioni fisse che non si adatta al contenuto. È così che è costruito Wix, non dipende dal widget, e questo causa quattro problemi ricorrenti:

  • Il widget è confinato in un riquadro di dimensioni fisse. Non può crescere oltre la dimensione impostata per l'elemento e non può adattarsi al contesto circostante, anche se il widget stesso è responsive.

  • Lo scorrimento non funziona su mobile e tablet. Se il contenuto è più alto del riquadro, i visitatori spesso non riescono a scorrere per raggiungerlo — uno swipe tattile all'interno di un iframe di altezza fissa viene di solito intercettato dalla pagina anziché dal riquadro. Questo è il sintomo segnalato più di frequente.

  • Popup e finestre di dialogo rimangono intrappolati. Una finestra di dettaglio sessione o di pagamento può coprire solo il riquadro, non la pagina, e quindi può apparire tagliata.

  • Il tracciamento non raggiunge la tua pagina. Gli eventi inviati dal widget restano all'interno del riquadro, quindi Google Tag Manager o altri strumenti di analisi sul tuo sito Wix non li vedranno.

Se riscontri uno di questi problemi, ti consigliamo di utilizzare il Metodo 2.

Calendario su Wix: mantieni l'elemento Embed HTML e risolvi il problema

Se stai aggiungendo il widget calendario e vuoi mantenere l'elemento Embed HTML — per esempio per poterlo ancora posizionare con il trascinamento nell'editor di Wix — puoi risolvere i suoi due principali problemi legati all'iframe con qualche script aggiuntivo:

  • il calendario che viene tagliato quando la sua altezza cambia (per esempio passando da una settimana all'altra)

  • i popup di prenotazione e descrizione che si aprono troppo in alto o troppo in basso rispetto allo schermo del visitatore

Questa opzione richiede un dominio collegato e un piano Wix premium. Non rende gli eventi del widget visibili a Google Tag Manager — per questo, usa il Metodo 2.

Metodo 2 — Codice personalizzato (consigliato)

Questo metodo posiziona il widget direttamente nella pagina anziché in un riquadro. Il widget si espande quindi alla sua altezza naturale, scorre con la pagina, apre le finestre di dialogo sull'intera pagina e i suoi eventi sono visibili al tuo sistema di tracciamento.

Importante: i widget aggiunti in questo modo non si spostano con il trascinamento. Il widget non appare come elemento nell'editor di Wix, quindi non puoi trascinarlo o ridimensionarlo lì. La sua posizione viene invece impostata nel codice: indichi al codice in quale sezione della pagina posizionare il widget (il targetSelector, spiegato più avanti). Per spostare il widget in seguito, modifichi questo valore nel codice.

Passaggi

  1. Vai alla tua dashboard Wix → Impostazioni → Codice personalizzato

  2. Clicca su Aggiungi codice personalizzato

  3. Incolla il codice qui sotto, dopo aver sostituito i valori descritti in Valori da sostituire

  4. In Aggiungi codice alle pagine, scegli la pagina specifica anziché tutte le pagine

  5. Imposta Posiziona il codice in su Body - fine

  6. Assegnagli un nome che riconoscerai in seguito, poi clicca su Applica e Pubblica

Il codice

<script>
(function() {
'use strict';

// ─── SHARED CDN LOADER ───
function loadCDN() {
if (!window._bsportCDNPromise) {
window._bsportCDNPromise = new Promise((resolve) => {
if (window.BsportWidget) return resolve();
if (!document.getElementById('bsport-widget-cdn')) {
const script = document.createElement('script');
script.id = 'bsport-widget-cdn';
script.src = 'https://cdn.bsport.io/scripts/widget.js';
script.onload = resolve;
document.head.appendChild(script);
} else {
const interval = setInterval(() => {
if (window.BsportWidget) { clearInterval(interval); resolve(); }
}, 100);
}
});
}
return window._bsportCDNPromise;
}

// ─── WAIT FOR ELEMENT WITH RETRY ───
function waitForElement(selector, timeout = 15000) {
return new Promise((resolve) => {
// 1. Check immediately
const found = document.querySelector(selector);
if (found) return resolve(found);

// 2. Otherwise observe DOM changes
const observer = new MutationObserver(() => {
const el = document.querySelector(selector);
if (el) {
observer.disconnect();
clearTimeout(timer);
resolve(el);
}
});

observer.observe(document.body, {
childList: true,
subtree: true
});

// 3. Fallback timeout
const timer = setTimeout(() => {
observer.disconnect();
resolve(null);
}, timeout);
});
}

// ─── REUSABLE WIDGET FACTORY ───
function createBsportWidget({ containerId, widgetType, targetSelector, config }) {
let mounted = false;
let mountAttempts = 0;
const maxMountAttempts = 5;

async function addContainer() {
const existing = document.getElementById(containerId);
if (existing) {
return true;
}

const parentContainer = await waitForElement(targetSelector, 15000);
if (!parentContainer) {
return false;
}

const container = document.createElement('div');
container.id = containerId;
parentContainer.appendChild(container);
return true;
}

function mountWidget() {
if (mounted) return;

mountAttempts++;
if (mountAttempts > maxMountAttempts) {
return;
}

loadCDN().then(() => {
const container = document.getElementById(containerId);
if (!container) {
setTimeout(mountWidget, 500);
return;
}

if (typeof window.BsportWidget?.mount !== 'function') {
setTimeout(mountWidget, 500);
return;
}

try {
window.BsportWidget.mount({
parentElement: containerId,
companyId: 1234, // REPLACE with your company ID
franchiseId: null,
dialogMode: 1,
widgetType,
showFab: false,
fullScreenPopup: false,
styles: undefined,
config
});
mounted = true;
} catch (e) {
mounted = false;
setTimeout(mountWidget, 500);
}
});
}

function init() {
async function start() {
const added = await addContainer();
if (added) mountWidget();
}

if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', () => setTimeout(start, 3000));
} else {
start();
}
}

init();
}

// ─── WIDGET INSTANCES ───
createBsportWidget({
containerId: 'bsport-widget-planning', // REPLACE with a name of your choice
targetSelector: 'main[id="PAGES_CONTAINER"] section > div:nth-child(2) > div', // REPLACE with the section where the widget should appear
widgetType: 'calendar', // REPLACE with your widget type
config: { // REPLACE with the config from your widget code
calendar: {
}
}
});

})();
</script>

Valori da sostituire

  • companyId — sostituisci 1234 con il tuo ID azienda bsport. Lo trovi nel codice del widget generato nel tuo back office.

  • containerId — un nome a tua scelta per il contenitore del widget, per esempio bsport-widget-planning. Usa un nome diverso per ogni widget presente sulla stessa pagina.

  • widgetType — il tipo di widget che vuoi mostrare, per esempio calendar. Copialo dalla riga widgetType del codice del widget nel back office.

  • targetSelector — dove appare il widget nella pagina. Si tratta di un selettore CSS che punta alla sezione in cui viene aggiunto il widget. Per trovarlo, apri la tua pagina pubblicata in Chrome, fai clic con il tasto destro sulla sezione in cui vuoi inserire il widget, scegli Ispeziona, poi fai clic con il tasto destro sull'elemento evidenziato e scegli Copia → Copia selettore. Questo sostituisce il trascinamento: per spostare il widget, modifica questo valore.

  • config — le opzioni del widget. Copia l'oggetto config dal codice del widget nel back office in modo che il widget mantenga i filtri e le opzioni di visualizzazione scelte.

Per mostrare più di un widget, aggiungi un altro blocco createBsportWidget({ ... }) sotto WIDGET INSTANCES, con il proprio containerId, targetSelector, widgetType e config.

Se il widget non appare dove desideri, o se preferisci non modificare il codice, contatta il supporto bsport e lo configureremo noi per te.

Confronto tra i due metodi

Elemento Embed HTML (trascinamento)

  • Facile da posizionare visivamente nell'editor di Wix

  • Soggetto a tutti i limiti dell'iframe sopra descritti

  • Adatto a un widget breve e di altezza fissa su desktop

Codice personalizzato (inserito nel body)

  • Nessun iframe — il widget si espande liberamente e scorre con la pagina

  • Le finestre di dialogo si aprono sull'intera pagina

  • Gli eventi di tracciamento raggiungono il tuo sito

  • Nessun trascinamento: la posizione viene impostata nel codice tramite targetSelector

Aggiungere il pulsante di accesso all'header

Il widget del pulsante di accesso bsport non può essere aggiunto a un header Wix tramite trascinamento: gli header di Wix non accettano affatto l'elemento Embed HTML.

È comunque possibile farlo con il Metodo 2. Inserendo il codice del pulsante di accesso nel body della pagina tramite Impostazioni → Codice personalizzato, lo si posiziona nell'header senza il wrapper dell'iframe. Poiché questo comporta il posizionamento del pulsante via codice, di solito ce ne occupiamo noi — vedi Come possiamo aiutarti qui sotto.

Risoluzione dei problemi

I visitatori non riescono a scorrere tutti i contenuti su mobile.
È il limite dell'iframe descritto sopra. Passa al Metodo 2.

Un popup si apre ma risulta tagliato.
Il widget si trova all'interno di un iframe. Passa al Metodo 2 — oppure, per il widget calendario, vedi Calendario su Wix sopra.

Google Tag Manager non rileva gli eventi del widget.
Gli eventi non possono uscire dall'iframe. Passa al Metodo 2.

Il widget non appare con il Metodo 2.
Verifica che targetSelector punti a una sezione presente in quella pagina, che l'ID azienda sia corretto e che il codice sia assegnato alla pagina giusta in Aggiungi codice alle pagine.

Le modifiche effettuate nel back office non vengono visualizzate.
La configurazione non si aggiorna automaticamente sul tuo sito. Copia il codice appena generato e sostituisci completamente quello vecchio. Con il Metodo 2, aggiorna invece i valori widgetType e config nel tuo codice personalizzato.

Il widget appare diverso rispetto all'anteprima nel back office, oppure non risponde ai clic.
Attiva la Modalità di compatibilità nelle impostazioni del widget, poi copia e incolla il nuovo codice.

Non appare nulla.
Verifica che il widget non sia stato aggiunto due volte — sia tramite un elemento Embed sia tramite Codice personalizzato. Due copie sulla stessa pagina entrano in conflitto.

Il layout risulta compresso.
Il widget è responsive ma ha bisogno di spazio. Assicurati che la sezione che lo contiene sia abbastanza larga e controlla separatamente la vista mobile nell'editor di Wix.

Come possiamo aiutarti

Passare al metodo Codice personalizzato significa apportare modifiche all'interno del tuo sito Wix: aggiungere o modificare il codice in Impostazioni → Codice personalizzato, e talvolta adattare il layout o lo stile della pagina. Se preferisci che ce ne occupiamo noi, siamo felici di:

  • Spostare un widget esistente fuori dall'iframe per risolvere i problemi di scorrimento e popup

  • Aggiungere il pulsante di accesso al tuo header tramite Codice personalizzato

  • Regolare dimensioni, posizionamento e overflow del widget

  • Guidare il tuo sviluppatore web durante l'implementazione

Per farlo, abbiamo bisogno di un invito come collaboratore al tuo sito Wix (in Wix: Impostazioni → Ruoli e autorizzazioni). Contatta il nostro team di supporto e ci occuperemo noi del resto.

Sei ancora bloccato? Contatta il nostro team di supporto indicando l'URL della pagina e uno screenshot, e daremo un'occhiata.

Hai ricevuto la risposta alla tua domanda?