Foros del Web » Programando para Internet » PHP »

Dos columnas en web modular

Estas en el tema de Dos columnas en web modular en el foro de PHP en Foros del Web. Hola chicos, hacía mucho tiempo que no entraba en este foro pero es porque tenía la programación un poco abandonada. Estoy intentando trasladar una web ...
  #1 (permalink)  
Antiguo 05/11/2007, 03:45
Avatar de malucha  
Fecha de Ingreso: abril-2005
Mensajes: 70
Antigüedad: 19 años, 1 mes
Puntos: 0
Pregunta Dos columnas en web modular

Hola chicos,
hacía mucho tiempo que no entraba en este foro pero es porque tenía la programación un poco abandonada.
Estoy intentando trasladar una web de html y css a una web modular en php, para poder añadirle funcionalidades como un panel desde el que se puedan añadir noticias y todo eso con base de datos (pero bueno, eso más adelante).
Al grano, he visto el manual de http://www.zonaphp.com/creando-webs-modulares/ y he intentado aplicarlo. Realmente no he tenido muchos problemas (llevo solo dos días con ello) pero no sé como utilizar dos columnas en la plantilla.
La página original es esta: http://www.elmuelle.es y como veis, utiliza dos columnas. Ahí están contenidas en el mismo archivo, evidentemente está hecho con una plantilla de dreamweaver. El problema es que si ese texto lo pongo en un sólo archivo, ahora, ¿Cómo le indico a partir de dónde tiene que pasar a la otra columna? (¿Es un poco raro no?). ¿Tendré que utilizar dos archivos? No me parece mal utilizar dos archivos, el problema viene cuando utilizo la plantilla. No le puedo decir en la plantilla base que utilice siempre el mismo módulo porque varía, según el módulo principal que se elija. Es decir, si elijo empresa, la sección de la derecha será la de noticias. O fijaros en la principal, que hago un resumen de cada sección. Ese resumen tendría que dividirlo en dos archivos y llamarlos a la vez.
Os pego el código de mi plantilla hasta el momento:
Código PHP:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Plantilla Base. Mirar como inyectar aquí un título</title>
<link rel="stylesheet" type="text/css" href="estilos.css" />
</head>

<body>
    <div id="contenedor">
        <?php include ('includes/header.html'); ?>
        <?php include ('includes/menu.php'); ?>
       
       <div id="cuerpo">
        <div id="principal">
        <?php
            
if (file_exists ($path_modulo)) 
                include (
$path_modulo);
            else
                die (
'Error al cargar el módulo </b>'.$modulo.'. No existe el archivo <b>'.$conf[$modulo]['archivo'].'</b>');
        
?>
       </div>
       <div id="secundaria">
       <p> Aquí va la columna secundaria </p>
       </div>
        
        </div>

        <?php include ('includes/footer.html'); ?>
    </div>
</body>
Espero podáis echarme una mano. No se me ocurre como hacerlo. ¿Cómo le paso el nombre de dos módulos cuando pulse en un enlace para que el primero me lo muestre en la columna principal y el otro me lo muestre en la columna secundaria?

Esto ya empieza a complicarse demasiado para mí.

Un saludo, y muchas gracias por echarme una manita.
  #2 (permalink)  
Antiguo 05/11/2007, 04:58
 
Fecha de Ingreso: mayo-2005
Mensajes: 188
Antigüedad: 19 años
Puntos: 6
Re: Dos columnas en web modular

Yo te puedo dar una solución que quizá te rompa el esquema de la aplicación, pero es el "modelo" que yo utilizo. En lugar de ir cargando los módulos a medida que se va montando la página, primero se "ejecuta" el módulo y con el resultado se genera el HTML final.

En tu caso, cada módulo debería generar como resultado 3 variables: $titulo, $columna1 y $columna2. Luego generas toda la página colocando los valores de las variables donde consideres oportuno.

No sé si te he liado más, pero bueno ;)
  #3 (permalink)  
Antiguo 05/11/2007, 05:06
Avatar de malucha  
Fecha de Ingreso: abril-2005
Mensajes: 70
Antigüedad: 19 años, 1 mes
Puntos: 0
Pregunta Re: Dos columnas en web modular

Uff... no me entero de nada jejeje.
Si la programación no es lo mío.
Entiendo lo que dices de dividir cada módulo en tres partes (titulo, columna1 y columna2) pero ¿cómo puedo ejecutar el módulo antes de saber que lo voy a necesitar?.
Vamos, no sé si me entiendes. Soy bastante negada en esto de la programación y al utilizar como base el manual de zona php si me sacas de ahí me rompes xDD
¿Podrías explicarme un poquito más por favor? ;)

He realizado las siguientes pruebas (seguro que malas malas xD)

Home.php

Código PHP:
<?php
  $columna1
="Este es el texto que irá en la columna1";

$columna2="Este es el texto que irá en la columna2";
?>
Aquí la plantilla, que llama al módulo:

Código PHP:
<body>
    <div id="contenedor">
        <?php include ('includes/header.html'); ?>
        <?php include ('includes/menu.php'); ?>
       
       <div id="cuerpo">
        <div id="principal">
        <?php
            
if (file_exists ($path_modulo)) 
                include (
$path_modulo);
            else
                die (
'Error al cargar el módulo </b>'.$modulo.'. No existe el archivo <b>'.$conf[$modulo]['archivo'].'</b>');
        
?>
        <? 
            
echo $_GET['$modulo']['$columna1'];
        
?>
       </div>
       <div id="secundaria">
       <p> Aquí va la columna secundaria </p>
       </div>
        
        </div>

        <?php include ('includes/footer.html'); ?>
    </div>
</body>
Lo que he cambiado es esto:
Código PHP:
  <? echo $_GET['$modulo']['$columna1']; ?>
Pero no tengo narices a leer esa variable. Seguro que la estoy cogiendo mal pero no se muy bien cómo.
¡¡Ayuda por favor!!

Gracias !

Última edición por malucha; 05/11/2007 a las 06:36
  #4 (permalink)  
Antiguo 05/11/2007, 07:13
 
Fecha de Ingreso: mayo-2005
Mensajes: 188
Antigüedad: 19 años
Puntos: 6
Re: Dos columnas en web modular

OK. Voy a intentarlo. Se trata de comenzar cargando el módulo que corresponda:
Código PHP:
<?php
if (file_exists ($path_modulo)) {
  include (
$path_modulo);
} else {
  
$titulo 'Error';
  
$columna1 'Error cargando módulo';
  
$columna2 '';
}
?>
El módulo que se ha cargado, debería haber rellenado las variables $titulo, $columna1, y $columna2, con los contenidos correspondientes (esto ya depende de cada módulo).

Finalmente, utilizando la plantilla, se genera TODA la página final:

Código PHP:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo $titulo;?></title>
<link rel="stylesheet" type="text/css" href="estilos.css" />
</head>
<body>
    <div id="contenedor">
        <?php include ('includes/header.html'); ?>
        <?php include ('includes/menu.php'); ?>
       
       <div id="cuerpo">
        <div id="principal">
        <?php echo $columna1?>
       </div>
       <div id="secundaria">
       <?php echo $columna2?>
       </div>
        
        </div>

        <?php include ('includes/footer.html'); ?>
    </div>
</body>
Observa que de esta manera también solucionas la generación del título de la página.

Espero que te sirva ;)
  #5 (permalink)  
Antiguo 05/11/2007, 10:20
Avatar de malucha  
Fecha de Ingreso: abril-2005
Mensajes: 70
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: Dos columnas en web modular

Lo hice así como me dijiste también, pero me indica el siguiente error:

Parse error
: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\AppServ\www\web_modular\modulos\home.php on line 37

¿Qué me olvidé de cubrir? Por lo poco que yo entiendo falta una cadena ¿no? sobra decir que en la línea 37 no hay absolutamente nada y que el documento termina en la 36.

¿Será por la posición del código?Lo bailoteé por distintas zonas de la página pero sigue sin funcionar. Ahora lo tengo situado al principio del documento (antes de la declaración doctype)

Me refiero al siguiente código, claro:
Código PHP:
 <?php 
if (file_exists ($path_modulo)) { 
  include (
$path_modulo); 
} else { 
  
$titulo 'Error'
  
$columna1 'Error cargando módulo'
  
$columna2 ''

?>
De todas formas, gracias por todo :)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:59.