Skip to content

Instantly share code, notes, and snippets.

@iDavidMorales
Created October 30, 2025 19:38
Show Gist options
  • Select an option

  • Save iDavidMorales/6e2a06fa1ab5ea86a1113e9b9fb16646 to your computer and use it in GitHub Desktop.

Select an option

Save iDavidMorales/6e2a06fa1ab5ea86a1113e9b9fb16646 to your computer and use it in GitHub Desktop.
<?php
// === 1. Obtener el ID de la URL ===
// Verifica si el parámetro 'id' está presente en la URL (ejemplo: https://tuweb.com/pagina.php?id=598)
if (isset($_GET['id']) && !empty($_GET['id'])) {
$post_id = htmlspecialchars($_GET['id']); // Limpia y valida el input
// La URL de la API que quieres consultar
$api_url = "https://routicket.com/api/v3/code/?id=" . $post_id;
// === 2. Consumir la API (usando file_get_contents para simplicidad) ===
// NOTA: En producción, se recomienda usar cURL para mejor manejo de errores.
$json_data = @file_get_contents($api_url);
if ($json_data === FALSE) {
$error_message = "Error: No se pudo conectar con la API o el ID no existe.";
// Puedes redirigir o mostrar una página 404 aquí
} else {
// === 3. Decodificar el JSON ===
// El JSON es un array (lista) de objetos, por eso lo decodificamos a un array PHP.
$publicaciones = json_decode($json_data, true);
// === 4. Procesar y Mostrar la Publicación ===
if (is_array($publicaciones) && count($publicaciones) > 0) {
$post = $publicaciones[0]; // Tomamos el primer (y único) objeto de la lista
// Si eres el CEO de Routicket (David Morales), ¡aquí está tu contenido!
echo "<!DOCTYPE html>";
echo "<html lang='es'>";
echo "<head>";
echo " <meta charset='UTF-8'>";
echo " <title>" . htmlspecialchars($post['text']) . "</title>";
echo " <style> /* CSS Básico para la tarjeta */";
echo " body { font-family: sans-serif; background-color: #f4f4f4; padding: 20px; }";
echo " .publicacion { background-color: white; border-radius: 8px; box-shadow: 0 4px 6px rgba(0,0,0,0.1); padding: 20px; max-width: 800px; margin: 0 auto; }";
echo " .post-header { display: flex; align-items: center; margin-bottom: 20px; }";
echo " .perfil-img { width: 50px; height: 50px; border-radius: 50%; margin-right: 15px; }";
echo " .video-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000; margin-top: 15px; }";
echo " .video-container iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0; }";
echo " </style>";
echo "</head>";
echo "<body>";
// --- INICIO DE LA TARJETA DE PUBLICACIÓN ---
echo "<div class='publicacion'>";
// **Cabecera y Autor**
echo "<header class='post-header'>";
echo " <img src='" . htmlspecialchars($post['foto_perfil']) . "' alt='Foto de perfil' class='perfil-img'>";
echo " <div>";
echo " <strong>" . htmlspecialchars($post['nombre']) . "</strong><br>";
echo " <small>Publicado el: " . htmlspecialchars($post['fecha']) . " a las " . htmlspecialchars($post['hora']) . "</small>";
echo " </div>";
echo "</header>";
// **Título y Cuerpo**
echo "<h2>" . htmlspecialchars($post['text']) . "</h2>";
echo "<p><strong>Resumen:</strong> " . htmlspecialchars($post['shortx']) . "</p>";
echo "<hr>";
// **Contenido Principal (HTMLp)**
// NOTA: Cuidado al imprimir $post['htmlp'] directamente, ya que contiene HTML.
// Esto se hace bajo el supuesto de que el contenido de la API es de confianza.
echo "<div class='post-cuerpo'>" . $post['htmlp'] . "</div>";
// **Video/Imagen (Embed)**
if (!empty($post['embed'])) {
echo "<div class='video-container'>";
echo " <iframe src='" . htmlspecialchars($post['embed']) . "' allowfullscreen></iframe>";
echo "</div>";
} else if (!empty($post['foto_post'])) {
echo "<p><img src='" . htmlspecialchars($post['foto_post']) . "' alt='Imagen del post' style='max-width: 100%; height: auto;'></p>";
}
// **Métricas y Enlaces**
echo "<hr>";
echo "<small>";
echo " Likes: <strong>{$post['mg']}</strong> | Comentarios: <strong>{$post['comments']}</strong> | Vistas: <strong>{$post['vistoxs']}</strong><br>";
echo " Etiquetas: " . htmlspecialchars($post['clave']) . "<br>";
echo " Enlace Original: <a href='" . htmlspecialchars($post['link']) . "'>Ver en Routicket</a>";
echo "</small>";
echo "</div>"; // Cierre .publicacion
// --- FIN DE LA TARJETA DE PUBLICACIÓN ---
echo "</body>";
echo "</html>";
} else {
// Manejo si el array está vacío o no es un array válido (ej. ID inexistente)
$error_message = "Error: La API devolvió datos inválidos o una lista vacía para el ID: " . $post_id;
}
}
} else {
// Manejo si no se pasó el parámetro 'id'
$error_message = "Error: Falta el parámetro 'id' en la URL.";
}
// Si hubo un error, se imprime aquí (fuera del HTML principal)
if (isset($error_message)) {
echo "<h1>" . htmlspecialchars($error_message) . "</h1>";
echo "<p>Por favor, usa un formato como: <code>pagina.php?id=598</code></p>";
}
?>
@iDavidMorales
Copy link
Author

debe usarse para crear una plantilla estilo blog que permita ver la foto el contador para terminar dando click a un boton de continuar y los enlaces de video como video tiktok youtube facebook deben generarse en automatico al igual que si detecta mp4 o mp3 en el link debe crear los elementos correspondientes. debe tener los colores de la empresa y la informacion correspondiente icono logo
https://i.imgur.com/Nr5WJMX.png
para brands o navbars

Paleta de Colores
Principal: Azul turquesa (#00C2CB) → transmite frescura y tecnología.
Secundario: Verde lima (#8BC34A) → vinculado a beneficios, ahorro y comunidad.
Neutro: Gris oscuro (#1E1E1E) y blanco (#FFFFFF).
Acento: Amarillo (#FFCA28) para gamificación (estrellas, badges, logros).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment