tamaño recomendado para optimo medidas maximo imagenes imagen galeria fotos adecuado php codeigniter templates

php - recomendado - tamaño optimo de fotos para wordpress



Mejores prácticas: ¿Cuál es la mejor forma de construir encabezados y pies de página? (4)

¿Cuál es la mejor manera de construir encabezados y pies de página? ¿Debería llamarlo todo desde el controlador o incluir desde el archivo de vista? Estoy usando CodeIgniter, y quiero saber cuál es la mejor práctica para esto. Cargando todos los archivos de vista incluidos desde el controlador, así?

class Page extends Controller { function index() { $data[''page_title''] = ''Your title''; $this->load->view(''header''); $this->load->view(''menu''); $this->load->view(''content'', $data); $this->load->view(''footer''); } }

o llamando al archivo de vista única y llamando a las vistas de encabezado y pie de página desde allí:

//controller file class Page extends Controller { function index() { $data[''page_title''] = ''Your title''; $this->load->view(''content'', $data); } } //view file <?php $this->load->view(''header''); ?> <p>The data from the controller</p> <?php $this->load->view(''footer''); ?>

Lo he visto hecho en ambos sentidos, pero quiero elegir ahora antes de ir demasiado lejos en el camino.


También podría intentarlo de esta manera: defina una plantilla de vista predeterminada, que luego extrae el contenido en función de una variable (''contenido'' en mi ejemplo) pasada por el controlador.

En tu controlador:

$data[''content''] = ''your_controller/index''; // more code... $this->load->vars($data); $this->load->view(''layouts/default'');

A continuación, defina un diseño predeterminado para todas las páginas, p. Ej. Views / layouts / default.php

// doctype, header html etc. <div id="content"> <?= $this->load->view($content) ?> </div> // footer html etc.

Entonces sus vistas solo pueden contener el contenido puro, por ejemplo, views / your_controller / index.php puede contener solo las variables pasadas desde el controlador / matriz de datos

<?= $archives_table ?> <?= $pagination ?> // etc.

Más detalles en la wiki de CI / Preguntas frecuentes (P. ¿Cómo incrusto vistas en las vistas? ¿Plantillas anidadas? ...)


Creo que la primera forma en que lo haces es más limpio. Simplemente desde el punto de vista de saber que se va a representar. En lugar de tener que ingresar al archivo de vista para encontrar el resto.


Es una mala práctica llamar vistas dentro de otras vistas. Esta podría ser una forma de mezcla de vista controladora. La función de vista en CI le permite pasar un tercer parámetro que hace que devuelva esa salida de salida como una cadena. Puede usar esto para crear una vista compuesta.

Por ejemplo:

class Page extends Controller { function index() { $data[''page_title''] = ''Your title''; $this->load->view(''default_layout'', array( ''header'' => $this->load->view(''header'' , array(), true), ''menu'' => $this->load->view(''menu'' , array(), true), ''content'' => $this->load->view(''content'', $data , true), ''footer'' => $this->load->view(''footer'' , array(), true), )); } }

default_layout.php

<? echo $header, $menu, $content, $footer; ?>

Es posible que desee combinar su encabezado y pie de página para crear una plantilla como esta.

class Page extends Controller { function index() { $data[''page_title''] = ''Your title''; $this->load->view(''default_template'', array( ''menu'' => $this->load->view(''menu'' , array(), true), ''content'' => $this->load->view(''content'', $data , true), )); } }

default_template.php

<html><head></head><body><span>Some Header HTML</span> // this is your header html <? echo $menu, $content; ?> <span>some footer HTML</span></body></html> // this is your footer html


De hecho, después de investigar un poco esto, llegué a la conclusión de que la mejor práctica para incluir encabezados y pies de página en MVC es una tercera opción: ampliar un controlador base. Eso le dará un poco más de flexibilidad que la sugerencia de htxt, particularmente si está construyendo un diseño muy modular (no solo el encabezado y el pie de página, también los paneles de la barra lateral, los menús no estáticos, etc.).

Primero, defina una clase Base_controller, en la que crea métodos que añaden los elementos de su página (encabezado, pie de página, etc.) a una cadena de salida:

class Base_controller extends Controller { var $_output = ''''; function _standard_header($data=null) { if (empty($data)) $data = ...; // set default data for standard header here $this->_output .= $this->load->view(''header'', $data, true); } function _admin_header($data=null) { if (empty($data)) $data = ...; // set default data for expanded header here $this->_output .= $this->load->view(''admin_header'', $data, true); } function _standard_page($data) { $this->_standard_header(); $this->_output .= $this->load->view(''standard_content'', $data, true); echo $this->_output; // note: place the echo statement in a // separate function for added flexibility } function _page_with_admin_header($data) { $this->_admin_header($data); $this->_output .= $this->load->view(''standard_content'', $data, true); echo $this->_output; } }

Luego, en los controladores de página, simplemente amplíe la clase base y llame a sus funciones para compilar la página.

class Page_controller extends Base_controller { function index() { $data = ...; // Set content data here $this->_standard_page($data); } function admin() { $data = ...; // Set content and header data here $this->_page_with_admin_header($data); } }

Usando un controlador base, puede lograr un código muy limpio en sus controladores de página individuales Y tener vistas separadas para los elementos en la página (permitiendo la reutilización del código tanto en vistas como en controladores). Todo lo que necesita hacer es definir sus ''secciones'' comunes de página (lo que podría estar tentado de llamar ''fragmentos'') como funciones en su controlador base.

Y si el controlador base comienza a crecer sin control (lo que puede suceder en sitios grandes), puede reorganizar algunas de sus funciones menos generales colocándolas en subclases y dejar que los controladores de página correspondientes las amplíen en lugar del controlador base original.

¡Disfrutar!

/ Jens Roland