Mostrar vistas diferentes en CodeIgniter 4 segun dispositivo

Cómo haremos en CodeIgniter 4 para mostrar diferentes vistas segun el dispositivo con el que visitemos la aplicación: móvil, monitor…

Añadimos un nuevo artículo al listado de tutoriales de programación de CodeIgniter 4. Esta vez, hablaremos de la librería User Agent que nos proporciona CodeIgniter 4.

Detectar quién y cómo nos visitan

La clase User Agent nos proporciona información respecto al navegador, móvil o robot que nos visita. Con esta clase podemos acceder a mucha información importante.

Cómo sabemos si nos visitan desde el móvil

Una de las funciones más interesantes es mostrar una vista diferente en monitor de PC a un dispositivo móvil. Así, se tratan los datos de igual manera, pero a la hora de mostrarse por pantalla, tendremos en cuenta si nos visitan desde un navegador o si lo hacen desde un móvil.

Veamos un ejemplo:

Tenemos en nuestra carpeta Views (vistas) los siguientes ficheros:

> Views
  > mobile
    > template_header.php
    > home.php
    > template_footer.php
  > desktop
    > template_header.php
    > home.php
    > template_footer.php

Si os fijáis, hay dos carpetas dentro de views, mobile con todas las vistas que utilizaremos para los móviles y la carpeta desktop para las vistas de los navegadores de ordenador.

Apunte: las carpetas pueden tener el nombre que queráis, no tienen que ser mobile o desktop.

Ahora veamos, dentro del controlador, como llamamos a unas vistas u otras, según cómo nos visiten:

class Home extends BaseController
{
  public function index() {

    [.. más codigo ..]

    if ( $this->request->getUserAgent()->isMobile() ){
	echo view('mobile/template_header');
	echo view('mobile/home');
	echo view('mobile/template_footer');
    } else {
	echo view('desktop/template_header');
	echo view('desktop/home');
	echo view('desktop/template_footer');
    }
  }
}

Cómo sabes si nos visita un robot

Lo mismo que hacemos para detectar si es un móvil o no, también podemos detectas si lo que nos visita es un robot. Includo podríamos trabajar según el robot que nos visite…

if ( $this->request->getUserAgent()->isRobot() ){
  echo "Hola Robot, eres R2D2? ";
}

Coger datos del navegador

La librería User Agent, también nos permite averiguar otros datos que nos pueden interesar como el navegador y su versión:

if ( $this->request->getUserAgent()->isBrowser() ){
  echo "El Sistema operativo es: ". $this->request->getUserAgent()->getPlatform();
  echo "El navegador es: ". $this->request->getUserAgent()->getBrowser();
  echo "la versión es es: ". $this->request->getUserAgent()->getVersion();
}

O también podemos capturar el Agent desde nos visitan, en formato string para poder trabajar:

$agent= $this->request->getUserAgent()->getAgentString();

echo $agent;

// resultado: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.4) Gecko/20060613 Camino/1.0.2

Espero que este pequeño artículo en forma de guía y ejemplos, os facilite el saber cómo en Codeigniter 4 visualizar diferentes vistas según el dispositivo con el que nos visiten.


Más información