Introducción
Cuando empezamos a crear páginas web con PHP, es habitual que al principio cada archivo tenga todo su código escrito dentro del mismo documento. Por ejemplo, podemos tener una página index.php, otra llamada contacto.php, otra llamada productos.php y otra llamada servicios.php. Cada una de ellas puede tener su propio HTML completo, con su cabecera, su menú, su contenido principal y su pie de página.
El problema aparece cuando varias páginas comparten partes iguales. Imaginemos que todas las páginas tienen el mismo menú de navegación. Si escribimos ese menú directamente en cada archivo, estaremos repitiendo el mismo código una y otra vez. Esto puede parecer cómodo al principio, pero en cuanto el proyecto crece se convierte en un problema.
Por ejemplo, si queremos añadir una nueva opción al menú, tendríamos que modificar manualmente todos los archivos del sitio web. Si tenemos cuatro páginas, todavía es manejable. Pero si tenemos veinte, cincuenta o cien páginas, mantener ese código repetido se vuelve lento, incómodo y muy propenso a errores.
Para solucionar este problema, PHP nos permite separar partes comunes del código en archivos independientes y después insertarlas donde las necesitemos. Para eso usamos principalmente las instrucciones include y require.
Estas instrucciones permiten cargar el contenido de un archivo dentro de otro. Dicho de forma sencilla, PHP lee el archivo indicado y coloca su contenido justo en el punto donde hemos escrito el include o el require.
Esto es especialmente útil para crear partes reutilizables de una página web, como:
- La cabecera HTML.
- El menú de navegación.
- El pie de página.
- Barras laterales.
- Formularios comunes.
- Bloques de conexión a bases de datos.
- Configuraciones compartidas.
En este tema vamos a centrarnos en el uso más inicial y visual: reutilizar fragmentos HTML comunes en varias páginas PHP.
El problema del código repetido
Supongamos que tenemos una página sencilla llamada index.php.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Mi página web</title>
</head>
<body>
<header>
<h1>Mi sitio web</h1>
</header>
<nav>
<a href="index.php">Inicio</a>
<a href="servicios.php">Servicios</a>
<a href="contacto.php">Contacto</a>
</nav>
<main>
<h2>Página de inicio</h2>
<p>Bienvenido a mi página web.</p>
</main>
<footer>
<p>© 2026 - Mi sitio web</p>
</footer>
</body>
</html>
Ahora imaginemos que tenemos otra página llamada servicios.php.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Servicios</title>
</head>
<body>
<header>
<h1>Mi sitio web</h1>
</header>
<nav>
<a href="index.php">Inicio</a>
<a href="servicios.php">Servicios</a>
<a href="contacto.php">Contacto</a>
</nav>
<main>
<h2>Nuestros servicios</h2>
<p>En esta sección mostramos los servicios disponibles.</p>
</main>
<footer>
<p>© 2026 - Mi sitio web</p>
</footer>
</body>
</html>
Y otra página llamada contacto.php.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Contacto</title>
</head>
<body>
<header>
<h1>Mi sitio web</h1>
</header>
<nav>
<a href="index.php">Inicio</a>
<a href="servicios.php">Servicios</a>
<a href="contacto.php">Contacto</a>
</nav>
<main>
<h2>Contacto</h2>
<p>Puedes contactar con nosotros a través de esta página.</p>
</main>
<footer>
<p>© 2026 - Mi sitio web</p>
</footer>
</body>
</html>
Si observamos los tres archivos, vemos que hay mucho código repetido. La cabecera, el menú y el pie de página aparecen una y otra vez.
Esto no es una buena práctica. Si queremos cambiar el título principal del sitio, modificar el menú o actualizar el pie de página, tendremos que hacerlo en todos los archivos.
La solución consiste en separar esas partes comunes en archivos independientes.
Qué es include
La instrucción include permite insertar el contenido de un archivo dentro de otro archivo PHP.
Su estructura básica es la siguiente:
include "archivo.php";
Cuando PHP encuentra esta línea, intenta buscar el archivo indicado y colocar su contenido en ese punto exacto.
Por ejemplo:
include "menu.php";
Esto significa que PHP cargará el archivo menu.php y mostrará su contenido justo donde aparece el include.
Crear un archivo común para el menú
Vamos a separar el menú de navegación en un archivo independiente.
Creamos un archivo llamado menu.php.
<nav>
<a href="index.php">Inicio</a>
<a href="servicios.php">Servicios</a>
<a href="contacto.php">Contacto</a>
</nav>
Este archivo no necesita tener una estructura HTML completa. No necesita <!DOCTYPE html>, ni <html>, ni <head>, ni <body>, porque no representa una página completa. Solo contiene una parte de la página.
Ahora podemos utilizarlo dentro de index.php.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Mi página web</title>
</head>
<body>
<header>
<h1>Mi sitio web</h1>
</header>
<?php include "menu.php"; ?>
<main>
<h2>Página de inicio</h2>
<p>Bienvenido a mi página web.</p>
</main>
<footer>
<p>© 2026 - Mi sitio web</p>
</footer>
</body>
</html>
El resultado en el navegador será el mismo que antes. La diferencia importante es que ahora el menú está guardado en un único archivo.
Podemos hacer lo mismo en servicios.php.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Servicios</title>
</head>
<body>
<header>
<h1>Mi sitio web</h1>
</header>
<?php include "menu.php"; ?>
<main>
<h2>Nuestros servicios</h2>
<p>En esta sección mostramos los servicios disponibles.</p>
</main>
<footer>
<p>© 2026 - Mi sitio web</p>
</footer>
</body>
</html>
Y también en contacto.php.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Contacto</title>
</head>
<body>
<header>
<h1>Mi sitio web</h1>
</header>
<?php include "menu.php"; ?>
<main>
<h2>Contacto</h2>
<p>Puedes contactar con nosotros a través de esta página.</p>
</main>
<footer>
<p>© 2026 - Mi sitio web</p>
</footer>
</body>
</html>
Ahora, si queremos modificar el menú, solo tenemos que cambiar el archivo menu.php. Todas las páginas que lo incluyan mostrarán automáticamente el menú actualizado.
Separar también la cabecera y el pie de página
El menú no es la única parte que podemos reutilizar. También podemos separar la cabecera y el pie.
Creamos un archivo llamado header.php.
<header>
<h1>Mi sitio web</h1>
</header>
Creamos otro archivo llamado footer.php.
<footer>
<p>© 2026 - Mi sitio web</p>
</footer>
Ahora nuestra página index.php queda más limpia.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Mi página web</title>
</head>
<body>
<?php include "header.php"; ?>
<?php include "menu.php"; ?>
<main>
<h2>Página de inicio</h2>
<p>Bienvenido a mi página web.</p>
</main>
<?php include "footer.php"; ?>
</body>
</html>
La página sigue funcionando igual, pero ahora está mejor organizada. Cada parte común está en su propio archivo.
Esta forma de trabajar es muy habitual en proyectos web. Permite dividir una página en piezas pequeñas, más fáciles de entender, mantener y reutilizar.
Una estructura básica de carpetas
Cuando un proyecto empieza a crecer, conviene organizar los archivos en carpetas.
Podemos crear una carpeta llamada includes para guardar los fragmentos comunes.
La estructura podría ser esta:
mi-proyecto/
│
├── index.php
├── servicios.php
├── contacto.php
│
└── includes/
├── header.php
├── menu.php
└── footer.php
En este caso, como los archivos comunes están dentro de la carpeta includes, tenemos que indicar la ruta correctamente.
En index.php escribiríamos:
<?php include "includes/header.php"; ?>
<?php include "includes/menu.php"; ?>
<?php include "includes/footer.php"; ?>
La página completa quedaría así:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Mi página web</title>
</head>
<body>
<?php include "includes/header.php"; ?>
<?php include "includes/menu.php"; ?>
<main>
<h2>Página de inicio</h2>
<p>Bienvenido a mi página web.</p>
</main>
<?php include "includes/footer.php"; ?>
</body>
</html>
Es importante entender que la ruta del archivo incluido depende de dónde se encuentra el archivo que está haciendo el include.
Si index.php está en la raíz del proyecto y header.php está dentro de la carpeta includes, la ruta correcta será:
include "includes/header.php";
Qué ocurre si el archivo no existe
Si usamos include y el archivo indicado no existe, PHP mostrará un aviso, pero intentará seguir ejecutando el resto de la página.
Por ejemplo:
<?php include "includes/cabecera.php"; ?>
Si el archivo cabecera.php no existe, PHP generará un mensaje de advertencia similar a este:
Warning: include(includes/cabecera.php): Failed to open stream...
Aunque aparezca el aviso, PHP intentará continuar con el resto del documento.
Esto puede ser útil en algunos casos, pero también puede ser peligroso si el archivo incluido es fundamental para que la página funcione correctamente.
Qué es require
La instrucción require también sirve para insertar el contenido de un archivo dentro de otro. Su uso es muy parecido al de include.
require "archivo.php";
La diferencia principal está en lo que ocurre si el archivo no se encuentra.
Con include, PHP muestra una advertencia y continúa ejecutando la página.
Con require, PHP muestra un error grave y detiene la ejecución.
Por ejemplo:
<?php require "includes/header.php"; ?>
Si el archivo existe, se carga normalmente. Pero si no existe, PHP detiene la página.
Esto tiene sentido cuando el archivo que estamos cargando es imprescindible.
Diferencia entre include y require
Aunque las dos instrucciones sirven para cargar archivos externos, no se comportan igual cuando hay un problema.
include se suele usar cuando el archivo que estamos cargando no es totalmente imprescindible. Si falla, la página puede seguir funcionando, aunque quizá no se muestre una parte concreta.
require se usa cuando el archivo es necesario para que la página funcione correctamente. Si el archivo no existe, lo mejor es detener la ejecución para evitar errores mayores.
Por ejemplo, en una página sencilla podríamos usar include para cargar un bloque visual como un aviso o una sección secundaria.
<?php include "includes/aviso.php"; ?>
Pero si en un proyecto más avanzado tenemos un archivo con la conexión a la base de datos, normalmente usaríamos require.
<?php require "includes/conexion.php"; ?>
En este tema estamos trabajando principalmente con HTML común, por lo que podemos empezar usando include. Más adelante, cuando trabajemos con configuración, sesiones, funciones o bases de datos, veremos que require puede ser más adecuado.
include_once y require_once
PHP también ofrece dos variantes muy utilizadas:
include_once "archivo.php";
require_once "archivo.php";
La palabra once significa “una vez”. Estas instrucciones cargan el archivo solo si no se ha cargado antes.
Esto es útil para evitar que el mismo archivo se incluya varias veces por error.
Por ejemplo:
<?php include_once "includes/menu.php"; ?>
Si el archivo menu.php ya se ha cargado antes, PHP no lo volverá a cargar.
Al principio, trabajando con cabeceras, menús y pies de página, normalmente nos bastará con include. Pero es importante conocer include_once y require_once, porque son muy habituales en proyectos más grandes.
Crear una plantilla básica reutilizable
Vamos a crear una estructura sencilla para una web con varias páginas.
Tendremos esta organización:
web/
│
├── index.php
├── servicios.php
├── contacto.php
│
├── css/
│ └── estilos.css
│
└── includes/
├── header.php
├── menu.php
└── footer.php
Primero creamos el archivo includes/header.php.
<header>
<h1>Mi sitio web con PHP</h1>
<p>Aprendiendo a reutilizar partes comunes de una página</p>
</header>
Ahora creamos el archivo includes/menu.php.
<nav>
<a href="index.php">Inicio</a>
<a href="servicios.php">Servicios</a>
<a href="contacto.php">Contacto</a>
</nav>
Después creamos el archivo includes/footer.php.
<footer>
<p>© 2026 - Mi sitio web con PHP</p>
</footer>
Podemos añadir un archivo CSS sencillo en css/estilos.css.
body {
font-family: Arial, sans-serif;
margin: 0;
background-color: #f4f4f4;
}
header {
background-color: #222;
color: white;
padding: 20px;
text-align: center;
}
nav {
background-color: #444;
padding: 10px;
text-align: center;
}
nav a {
color: white;
text-decoration: none;
margin: 0 15px;
}
main {
background-color: white;
width: 80%;
margin: 30px auto;
padding: 20px;
min-height: 300px;
}
footer {
background-color: #222;
color: white;
text-align: center;
padding: 15px;
}
Ahora creamos la página index.php.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Inicio</title>
<link rel="stylesheet" href="css/estilos.css">
</head>
<body>
<?php include "includes/header.php"; ?>
<?php include "includes/menu.php"; ?>
<main>
<h2>Inicio</h2>
<p>Esta es la página principal de nuestro sitio web.</p>
<p>El encabezado, el menú y el pie de página se cargan desde archivos externos.</p>
</main>
<?php include "includes/footer.php"; ?>
</body>
</html>
Creamos también la página servicios.php.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Servicios</title>
<link rel="stylesheet" href="css/estilos.css">
</head>
<body>
<?php include "includes/header.php"; ?>
<?php include "includes/menu.php"; ?>
<main>
<h2>Servicios</h2>
<p>En esta sección se mostrarían los servicios ofrecidos por la empresa o el proyecto.</p>
</main>
<?php include "includes/footer.php"; ?>
</body>
</html>
Y finalmente la página contacto.php.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Contacto</title>
<link rel="stylesheet" href="css/estilos.css">
</head>
<body>
<?php include "includes/header.php"; ?>
<?php include "includes/menu.php"; ?>
<main>
<h2>Contacto</h2>
<p>Desde esta página se podría mostrar un formulario de contacto.</p>
</main>
<?php include "includes/footer.php"; ?>
</body>
</html>
Con esta estructura ya tenemos una pequeña web dividida en partes reutilizables.
Si ahora queremos añadir una opción nueva al menú, solo tenemos que editar includes/menu.php.
Por ejemplo:
<nav>
<a href="index.php">Inicio</a>
<a href="servicios.php">Servicios</a>
<a href="contacto.php">Contacto</a>
<a href="blog.php">Blog</a>
</nav>
Automáticamente, todas las páginas que incluyan menu.php mostrarán la nueva opción.
Incluir archivos que contienen HTML y PHP
Los archivos incluidos no tienen por qué contener solo HTML. También pueden contener código PHP.
Por ejemplo, podemos hacer que el footer muestre automáticamente el año actual.
Archivo includes/footer.php:
<footer>
<p>© <?php echo date("Y"); ?> - Mi sitio web con PHP</p>
</footer>
Ahora no tenemos que cambiar manualmente el año cada vez que empiece uno nuevo. PHP lo calculará automáticamente.
Esto demuestra una de las ventajas de usar archivos .php para nuestros bloques comunes: pueden combinar HTML y código PHP.
Usar variables antes de incluir un archivo
También podemos preparar una variable en la página principal y usarla dentro de un archivo incluido.
Por ejemplo, podemos crear una variable llamada $tituloPagina.
En index.php:
<?php
$tituloPagina = "Inicio";
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title><?php echo $tituloPagina; ?></title>
<link rel="stylesheet" href="css/estilos.css">
</head>
<body>
<?php include "includes/header.php"; ?>
<?php include "includes/menu.php"; ?>
<main>
<h2><?php echo $tituloPagina; ?></h2>
<p>Bienvenido a la página principal.</p>
</main>
<?php include "includes/footer.php"; ?>
</body>
</html>
También podríamos usar esa variable dentro de header.php.
Archivo includes/header.php:
<header>
<h1>Mi sitio web con PHP</h1>
<p>Estás visitando la sección: <?php echo $tituloPagina; ?></p>
</header>
Cuando index.php incluye header.php, el archivo incluido puede acceder a la variable $tituloPagina, porque se está insertando dentro del mismo contexto de ejecución.
Esto es muy útil, pero también exige orden. Si una variable se usa dentro de un archivo incluido, debemos asegurarnos de que se ha creado antes de hacer el include.
Ejemplo con varias páginas y título dinámico
Podemos aplicar la misma idea en todas las páginas.
Archivo index.php:
<?php
$tituloPagina = "Inicio";
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title><?php echo $tituloPagina; ?></title>
<link rel="stylesheet" href="css/estilos.css">
</head>
<body>
<?php include "includes/header.php"; ?>
<?php include "includes/menu.php"; ?>
<main>
<h2><?php echo $tituloPagina; ?></h2>
<p>Bienvenido a la página principal.</p>
</main>
<?php include "includes/footer.php"; ?>
</body>
</html>
Archivo servicios.php:
<?php
$tituloPagina = "Servicios";
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title><?php echo $tituloPagina; ?></title>
<link rel="stylesheet" href="css/estilos.css">
</head>
<body>
<?php include "includes/header.php"; ?>
<?php include "includes/menu.php"; ?>
<main>
<h2><?php echo $tituloPagina; ?></h2>
<p>Aquí puedes consultar nuestros servicios.</p>
</main>
<?php include "includes/footer.php"; ?>
</body>
</html>
Archivo contacto.php:
<?php
$tituloPagina = "Contacto";
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title><?php echo $tituloPagina; ?></title>
<link rel="stylesheet" href="css/estilos.css">
</head>
<body>
<?php include "includes/header.php"; ?>
<?php include "includes/menu.php"; ?>
<main>
<h2><?php echo $tituloPagina; ?></h2>
<p>Puedes contactar con nosotros desde esta sección.</p>
</main>
<?php include "includes/footer.php"; ?>
</body>
</html>
Archivo includes/header.php:
<header>
<h1>Mi sitio web con PHP</h1>
<p>Sección actual: <?php echo $tituloPagina; ?></p>
</header>
Con este ejemplo, cada página define su propio título, pero todas comparten la misma cabecera, el mismo menú y el mismo pie.
Cuidado con las rutas
Uno de los errores más habituales al usar include y require tiene que ver con las rutas de los archivos.
Supongamos que tenemos esta estructura:
web/
│
├── index.php
│
├── includes/
│ └── menu.php
│
└── paginas/
└── contacto.php
Desde index.php, para incluir el menú, la ruta sería:
<?php include "includes/menu.php"; ?>
Pero desde paginas/contacto.php, esa ruta ya no sería correcta, porque contacto.php está dentro de la carpeta paginas.
Desde ahí, primero tenemos que subir un nivel con ../ y luego entrar en includes.
<?php include "../includes/menu.php"; ?>
El símbolo ../ significa “subir a la carpeta superior”.
Este detalle es importante. Muchas veces, cuando un include falla, no es porque el archivo esté mal, sino porque la ruta indicada no es correcta.
Buenas prácticas iniciales
Cuando empezamos a trabajar con include y require, conviene seguir una organización clara.
Una buena práctica es guardar los archivos reutilizables dentro de una carpeta específica, por ejemplo includes, partials o templates.
Por ejemplo:
includes/
├── header.php
├── menu.php
├── footer.php
└── sidebar.php
También conviene usar nombres claros. Un archivo llamado header.php se entiende mejor que uno llamado parte1.php. Un archivo llamado menu.php se entiende mejor que uno llamado navegacion2.php.
Otra recomendación importante es no abusar de los includes. Separar el código ayuda, pero si dividimos demasiado una página en muchos archivos pequeños sin necesidad, el proyecto puede volverse confuso. La idea es separar aquello que realmente se repite o que tiene sentido mantener de forma independiente.
En esta etapa inicial, lo más recomendable es usar include para partes visuales comunes como header.php, menu.php y footer.php.
Más adelante, cuando empecemos a trabajar con funciones, configuración, sesiones o bases de datos, tendrá sentido usar require o require_once para archivos imprescindibles.
Resumen práctico
include y require permiten cargar un archivo dentro de otro archivo PHP.
La instrucción include intenta cargar el archivo y, si no lo encuentra, muestra una advertencia pero permite que la página continúe ejecutándose.
La instrucción require también carga un archivo, pero si no lo encuentra detiene la ejecución de la página.
En proyectos web, estas instrucciones son muy útiles para evitar repetir código. Podemos crear archivos comunes como header.php, menu.php y footer.php, e incluirlos en todas las páginas que los necesiten.
Gracias a esto, nuestro proyecto queda más limpio, más ordenado y más fácil de mantener.
Actividad propuesta
Crea una pequeña web en PHP con tres páginas:
index.phpservicios.phpcontacto.php
La web debe tener una carpeta llamada includes con los siguientes archivos:
header.phpmenu.phpfooter.php
Cada página debe cargar esos archivos usando include.
Además, cada página debe tener un contenido principal diferente dentro de la etiqueta <main>.
Como ampliación, crea una variable $tituloPagina en cada página y úsala para mostrar el título correspondiente tanto en la etiqueta <title> como dentro del contenido principal.
Preguntas de reflexión
¿Por qué no es recomendable copiar y pegar el mismo menú en todas las páginas de un sitio web?
¿Qué ventaja tiene guardar el menú en un archivo independiente?
¿Qué diferencia hay entre include y require?
¿Qué ocurre si usamos include y el archivo no existe?
¿Qué ocurre si usamos require y el archivo no existe?
¿Para qué podría servir include_once?
¿Por qué es importante organizar correctamente las carpetas de un proyecto?
¿Qué problemas pueden aparecer si indicamos mal la ruta de un archivo incluido?
Ejercicio final guiado
Crea un proyecto llamado web_includes.
Dentro del proyecto, crea esta estructura:
web_includes/
│
├── index.php
├── servicios.php
├── contacto.php
│
├── css/
│ └── estilos.css
│
└── includes/
├── header.php
├── menu.php
└── footer.php
En header.php, escribe la cabecera común del sitio.
<header>
<h1>Web creada con PHP</h1>
<p>Ejemplo de reutilización de código con includes</p>
</header>
En menu.php, escribe el menú común.
<nav>
<a href="index.php">Inicio</a>
<a href="servicios.php">Servicios</a>
<a href="contacto.php">Contacto</a>
</nav>
En footer.php, escribe el pie común.
<footer>
<p>© <?php echo date("Y"); ?> - Proyecto de clase</p>
</footer>
En css/estilos.css, añade unos estilos básicos.
body {
font-family: Arial, sans-serif;
margin: 0;
background-color: #eeeeee;
}
header {
background-color: #1f2937;
color: white;
padding: 20px;
text-align: center;
}
nav {
background-color: #374151;
padding: 10px;
text-align: center;
}
nav a {
color: white;
margin: 0 10px;
text-decoration: none;
}
main {
background-color: white;
margin: 30px auto;
padding: 20px;
width: 80%;
}
footer {
background-color: #1f2937;
color: white;
text-align: center;
padding: 15px;
}
En index.php, escribe:
<?php
$tituloPagina = "Inicio";
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title><?php echo $tituloPagina; ?></title>
<link rel="stylesheet" href="css/estilos.css">
</head>
<body>
<?php include "includes/header.php"; ?>
<?php include "includes/menu.php"; ?>
<main>
<h2><?php echo $tituloPagina; ?></h2>
<p>Esta es la página principal del proyecto.</p>
</main>
<?php include "includes/footer.php"; ?>
</body>
</html>
En servicios.php, escribe:
<?php
$tituloPagina = "Servicios";
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title><?php echo $tituloPagina; ?></title>
<link rel="stylesheet" href="css/estilos.css">
</head>
<body>
<?php include "includes/header.php"; ?>
<?php include "includes/menu.php"; ?>
<main>
<h2><?php echo $tituloPagina; ?></h2>
<p>En esta página se describen los servicios ofrecidos.</p>
</main>
<?php include "includes/footer.php"; ?>
</body>
</html>
En contacto.php, escribe:
<?php
$tituloPagina = "Contacto";
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title><?php echo $tituloPagina; ?></title>
<link rel="stylesheet" href="css/estilos.css">
</head>
<body>
<?php include "includes/header.php"; ?>
<?php include "includes/menu.php"; ?>
<main>
<h2><?php echo $tituloPagina; ?></h2>
<p>Desde esta página se podría contactar con el sitio web.</p>
</main>
<?php include "includes/footer.php"; ?>
</body>
</html>
Cuando hayas terminado, abre el proyecto desde un servidor local como XAMPP, MAMP o un contenedor con Apache y PHP. Comprueba que las tres páginas muestran la misma cabecera, el mismo menú y el mismo pie de página.
Después modifica el archivo menu.php añadiendo una nueva opción llamada Blog.
<nav>
<a href="index.php">Inicio</a>
<a href="servicios.php">Servicios</a>
<a href="contacto.php">Contacto</a>
<a href="blog.php">Blog</a>
</nav>
Comprueba que el cambio aparece automáticamente en todas las páginas.
Ese es el objetivo principal de este tema: aprender a reutilizar código común para evitar repeticiones y facilitar el mantenimiento de una web.









