Guía de instalación de widgets
Aprende a añadir la Lectura de hoy o las Lecturas del domingo a tu sitio web en pocos minutos.
Pruébalo
Demo en vivo
Mira exactamente cómo se ve el widget antes de instalarlo. Cambia la tradición, el idioma, el tema y el tamaño — la vista previa se actualiza al instante.
Católico · Lectura diaria · Claro
Lecturas del domingo
Protestante · Lecturas dominicales · Oscuro
¿Quieres probar todas las opciones?
El generador interactivo te permite combinar tradición, idioma, tema, tamaño y ajustes, y luego copia el código de inserción por ti.
Inicio rápido
Instalación en cinco minutos
El camino más rápido: pega el fragmento, guarda y listo. Elige tu plataforma a continuación para una guía paso a paso.
Recomendado — inserción por script
Iframe que se ajusta automáticamente. Funciona en cualquier sitio moderno.
<script src="https://sundaybiblereadings.com/widgets/embed.js" async></script>
<div data-sbr-widget="daily-reading"
data-locale="auto"
data-tradition="catholic"
data-theme="light"
data-size="medium"></div>Alternativa — inserción por iframe
Úsalo cuando no se permitan scripts de terceros.
<iframe
src="https://sundaybiblereadings.com/widgets/embed/daily-reading?locale=auto&tradition=catholic&theme=light&size=medium"
width="100%"
height="320"
loading="lazy"
style="border:0;overflow:hidden;width:100%;"
title="Sunday Bible Readings"></iframe>Guías de instalación
Paso a paso para cada plataforma
Elige tu CMS o framework. Cada guía incluye código para copiar, errores comunes y una lista de verificación.
WordPress
Funciona en cualquier plan de WordPress que permita HTML personalizado — Gutenberg, Elementor y el Editor Clásico están todos soportados.
Pasos
- Edita la entrada, página o área de widgets donde quieras que aparezca la lectura.
- En el editor por bloques pulsa "+" y elige "HTML personalizado". En Elementor arrastra un widget "HTML". En el Editor Clásico cambia a la pestaña "Texto".
- Pega el siguiente fragmento.
- Guarda / publica. El widget aparece de inmediato en el frontend.
Para barras laterales y pies, usa Apariencia → Widgets → HTML personalizado.
Si tu tema requiere scripts en el pie, coloca el <script> en el campo "Scripts de pie" del tema y el <div data-sbr-widget="..."> donde quieras mostrar el widget.
Código de ejemplo
<script src="https://sundaybiblereadings.com/widgets/embed.js" async></script>
<div data-sbr-widget="daily-reading"
data-locale="auto"
data-tradition="catholic"
data-theme="light"
data-size="medium"></div>Errores comunes
- Pegar en un bloque de párrafo normal — WordPress escapará el HTML.
- Plugins de caché (WP Rocket, W3 Total Cache) sirviendo una página antigua — purga la caché tras publicar.
- Plugins de seguridad eliminando <script> — permite scripts desde sundaybiblereadings.com.
Lista de verificación
- Bloque HTML / Código usado (no párrafo).
- Caché purgada.
- Widget visible en el frontend (no solo en el editor).
Squarespace
Squarespace 7.1 admite widgets mediante el bloque "Código". Los planes de pago también permiten inyectar el script en todo el sitio.
Pasos
- Edita la página donde quieras el widget.
- Pulsa "+" e inserta un bloque "Código".
- Asegúrate de que "Mostrar fuente" esté DESACTIVADO y el tipo sea HTML.
- Pega el fragmento y guarda.
Para usar el widget en todas las páginas, ve a Ajustes → Avanzado → Inyección de código → Pie y pega solo la etiqueta <script> una vez. Luego coloca el <div data-sbr-widget="..."> en páginas individuales.
Código de ejemplo
<script src="https://sundaybiblereadings.com/widgets/embed.js" async></script>
<div data-sbr-widget="daily-reading"
data-locale="auto"
data-tradition="catholic"
data-theme="light"
data-size="medium"></div>Errores comunes
- Usar el plan gratuito, que deshabilita los bloques de Código.
- Dejar "Mostrar fuente" activado — imprime el HTML como texto.
- Envolver el fragmento en un bloque Markdown.
Lista de verificación
- Página guardada y publicada.
- El bloque de Código contiene HTML, no texto plano.
- La vista previa móvil aún muestra el widget.
Wix
Usa la inserción por iframe para el resultado más consistente. El Editor de Wix aísla los scripts de terceros.
Pasos
- En el Editor de Wix haz clic en Añadir (+) → Insertar Código → HTML Embed.
- Elige "Código" y pega el fragmento de iframe.
- Redimensiona el marcador al tamaño aproximado deseado.
- Publica.
En Wix Business / VIP puedes usar el script vía Ajustes → Código personalizado → Añadir → Final del body.
Código de ejemplo
<iframe
src="https://sundaybiblereadings.com/widgets/embed/daily-reading?locale=auto&tradition=catholic&theme=light&size=medium"
width="100%"
height="320"
loading="lazy"
style="border:0;overflow:hidden;width:100%;"
title="Sunday Bible Readings"></iframe>Errores comunes
- Elegir "Dirección Web" en lugar de "Código".
- Dejar el iframe demasiado corto — fija su altura en 320px o más.
- Olvidar publicar (Guardar no basta).
Lista de verificación
- Elemento HTML Embed añadido (no solo Guardado).
- Altura del iframe ≥ 320px en escritorio.
- Sitio publicado.
Joomla
Usa un módulo HTML personalizado o un artículo en modo HTML. Asegúrate de que el editor y los filtros de texto no eliminen los scripts.
Pasos
- Ve a Extensiones → Módulos → Nuevo → Personalizado.
- En el editor pulsa "Alternar editor" para entrar en HTML puro.
- Pega el fragmento, asigna el módulo a una posición y guarda.
- Revisa Sistema → Configuración Global → Filtros de Texto y establece el tipo "Sin Filtrado" para el grupo que publica el widget.
Código de ejemplo
<script src="https://sundaybiblereadings.com/widgets/embed.js" async></script>
<div data-sbr-widget="daily-reading"
data-locale="auto"
data-tradition="catholic"
data-theme="light"
data-size="medium"></div>Errores comunes
- TinyMCE eliminando <script> — desactiva el editor antes de pegar.
- Filtro de texto bloqueando iframe / script — ajusta por grupo de usuarios.
- Módulo asignado a una posición de plantilla incorrecta.
Lista de verificación
- Módulo publicado y asignado a una posición visible.
- El filtro de texto no elimina scripts para el grupo de usuarios.
- Widget visible en las páginas configuradas.
Drupal
Usa un Bloque Personalizado con formato "Full HTML". Debes habilitar Full HTML para el rol que coloca el widget.
Pasos
- Ve a Estructura → Disposición de bloques → Biblioteca de bloques personalizados → Añadir bloque.
- Pon Formato de texto en "Full HTML".
- Pega el fragmento en el cuerpo y guarda.
- Coloca el bloque en la región que prefieras.
Código de ejemplo
<script src="https://sundaybiblereadings.com/widgets/embed.js" async></script>
<div data-sbr-widget="daily-reading"
data-locale="auto"
data-tradition="catholic"
data-theme="light"
data-size="medium"></div>Errores comunes
- Usar Basic HTML — elimina iframes y scripts.
- Olvidar colocar el bloque tras crearlo.
- Módulos CSP agresivos bloqueando sundaybiblereadings.com.
Lista de verificación
- Formato Full HTML usado.
- Bloque colocado en una región visible.
- Caché reconstruida (admin/config/development/performance).
Static HTML
Pega el fragmento en cualquier parte dentro de <body>. Funciona con HTML plano, GitHub Pages, Netlify, Cloudflare Pages, Vercel y similares.
Pasos
- Abre tu archivo HTML en cualquier editor.
- Pega el fragmento dentro de <body>.
- Guarda y sube.
Código de ejemplo
<!doctype html>
<html lang="en">
<body>
<script src="https://sundaybiblereadings.com/widgets/embed.js" async></script>
<div data-sbr-widget="daily-reading"
data-locale="auto"
data-tradition="catholic"
data-theme="light"
data-size="medium"></div>
</body>
</html>Errores comunes
- Pegar dentro de <head> — el script necesita que exista el DOM.
- Servir sobre HTTP — las reglas de contenido mixto bloquean el widget.
Lista de verificación
- Fragmento dentro de <body>.
- Sitio servido por HTTPS.
- Página recargada tras subir.
React
Renderiza el <div> marcador en cualquier componente y carga el script una sola vez vía useEffect para evitar SSR.
Pasos
- Crea un componente BibleWidget (fragmento abajo).
- Impórtalo donde quieras en tu app.
- Asegúrate de añadir el script solo una vez aunque el componente se monte varias veces.
Código de ejemplo
import { useEffect } from "react";
export function BibleWidget() {
useEffect(() => {
const id = "sbr-widget-loader";
if (document.getElementById(id)) return;
const s = document.createElement("script");
s.id = id;
s.src = "https://sundaybiblereadings.com/widgets/embed.js";
s.async = true;
document.body.appendChild(s);
}, []);
return (
<div
data-sbr-widget="daily-reading"
data-locale="auto"
data-tradition="catholic"
data-theme="auto"
data-size="medium"
/>
);
}Errores comunes
- Llamar a document.createElement en SSR — envuélvelo en useEffect.
- Añadir el script varias veces — comprueba el id existente primero.
- CSP estricta sin https://sundaybiblereadings.com en frame-src/script-src.
Lista de verificación
- Script añadido una sola vez.
- El componente renderiza el div marcador.
- Sin avisos de hidratación en consola.
Next.js
Usa next/script con strategy="afterInteractive". Funciona en App Router (marca el componente con "use client") y en Pages Router.
Pasos
- Crea un Client Component (App Router) o cualquier componente (Pages Router) que envuelva next/script.
- Renderiza el div marcador junto al Script.
- Importa y coloca el componente donde quieras el widget.
Código de ejemplo
// app/components/BibleWidget.tsx — App Router (Client Component)
"use client";
import Script from "next/script";
export default function BibleWidget() {
return (
<>
<Script
src="https://sundaybiblereadings.com/widgets/embed.js"
strategy="afterInteractive"
/>
<div
data-sbr-widget="sunday-readings"
data-locale="auto"
data-tradition="catholic"
data-theme="auto"
data-size="medium"
/>
</>
);
}Errores comunes
- Olvidar la directiva "use client" en App Router.
- Usar strategy="beforeInteractive" — el widget necesita el DOM.
- Importar el archivo a nivel de página sin marcarlo como cliente.
Lista de verificación
- Componente marcado como cliente (App Router).
- Script renderizado solo una vez por página.
- El build de producción sigue montando el widget.
Vue / Nuxt
Mismo patrón que React: añade el script dentro de onMounted (o mounted() en Options API) y renderiza el template marcador.
Pasos
- Crea un componente de archivo único (fragmento abajo).
- Impórtalo donde quieras en tu app.
- En Nuxt, usa <ClientOnly> si prefieres omitir SSR.
Código de ejemplo
<!-- BibleWidget.vue -->
<template>
<div
data-sbr-widget="daily-reading"
data-locale="auto"
data-tradition="catholic"
data-theme="auto"
data-size="medium"
/>
</template>
<script setup>
import { onMounted } from "vue";
onMounted(() => {
if (document.getElementById("sbr-widget-loader")) return;
const s = document.createElement("script");
s.id = "sbr-widget-loader";
s.src = "https://sundaybiblereadings.com/widgets/embed.js";
s.async = true;
document.body.appendChild(s);
});
</script>Errores comunes
- Cargar el script en contexto SSR — usa onMounted.
- Montar varias copias del script.
Lista de verificación
- El id del script evita duplicados.
- El widget se renderiza tras recarga forzada.
- Funciona en modo universal de Nuxt.
Personalizar
Cada opción, explicada
Toda la personalización se hace mediante atributos data-* en el div marcador (o parámetros de consulta en el src del iframe).
| Atributo | Valores | Notas |
|---|---|---|
| data-sbr-widget | daily-readingsunday-readings | Obligatorio. Elige qué widget mostrar. |
| data-locale | autoenesptfritdepl | "auto" detecta el idioma del navegador con inglés como respaldo. |
| data-tradition | catholicprotestantorthodox | Controla las referencias bíblicas y los enlaces. |
| data-theme | lightdarkauto | "auto" coincide con el esquema de color del sistema. |
| data-size | smallmediumlarge | Afecta la escala tipográfica y la altura inicial del iframe. |
| data-logo | 10 | Mostrar el encabezado con el icono del libro. |
| data-desc | 10 | Mostrar la breve reflexión o descripción. |
Ejemplos de inserción
Inserción por script vs iframe
Ambas son gratis. Elige la que mejor se adapte a tu CMS.
Inserción por script (recomendada)
Un pequeño script cargador detecta cada data-sbr-widget de la página, inserta un iframe responsivo y lo redimensiona automáticamente sin cambios de diseño.
Recomendado para: WordPress, Squarespace (de pago), HTML estático, React, Next.js, Vue.
Inserción por iframe
Un único <iframe> con altura inicial fija. No requiere JavaScript en tu sitio.
Recomendado para: Wix, Joomla/Drupal restringidos, entornos con CSP estricta, correos (donde se eliminan los iframes — enlaza a la página canónica).
Compatibilidad
Compatibilidad con navegadores
Todos los navegadores actuales de las dos últimas versiones principales.
IE 11 no es compatible. Safari móvil, Chrome Android y Firefox Android sí.
Solución de problemas
Resuelve problemas comunes
Busca por síntoma. Si no encuentras algo, escríbenos y lo añadiremos.
Buenas prácticas
Dónde colocar el widget
Accesibilidad
- Enlaces y botones navegables por teclado.
- HTML semántico (article, header, footer).
- Contraste de color probado para WCAG AA en ambos temas.
- Funciona con lectores de pantalla — el título y los metadatos se anuncian.
Rendimiento
- El script cargador es pequeño y asíncrono.
- El iframe carga de forma diferida (loading="lazy").
- Se redimensiona vía postMessage — sin cambios de diseño.
- Responsivo por defecto; no requiere CSS adicional.
Atribución
- Los widgets son completamente gratuitos.
- El pie "Powered by Sunday Bible Readings" debe permanecer visible.
- El enlace lleva a la página canónica correspondiente.
- Eliminar u ocultar la atribución no está permitido.
Actualizaciones
Configúralo y olvídate
Los widgets siempre muestran las últimas lecturas. No necesitas redesplegar tu sitio, actualizar nada ni cambiar el fragmento. Cada día el widget muestra la lectura del día; cada semana, las lecturas del domingo más cercano.
Preguntas
Preguntas frecuentes
Ayuda