Ya tengo versión mobil pero no logro que sea reconocida por smartphones

Events happening in the community are now at Drupal community events on www.drupal.org.
antoniomanco's picture

Hola, he logrado crear una edición mobil o mobile para mi sitio web para ello utilicé Domain Access y una plantilla especial, además integré Adaptative Images. En conclusión tengo www.misitio.com para web y m,misitio.com con el mismo contenido desde la base de datos para smartphones. Lo único que me falta es que m.misitio.com se visualice cada vez que ingreso desde un smartphone, Iphone o cualquier otro equipo mobil. Espera la ayuda

Gracias

Comments

Ayuda con versión mobil

antoniomanco's picture

Hola, he logrado crear una edición mobil o mobile para mi sitio web para ello utilicé Domain Access y una plantilla especial, además integré Adaptative Images. En conclusión tengo www.misitio.com para web y m,misitio.com con el mismo contenido desde la base de datos para smartphones. Lo único que me falta es que m.misitio.com se visualice cada vez que ingreso desde un smartphone, Iphone o cualquier otro equipo mobil. Espera la ayuda

Mobile redirect

davo20019's picture

Hola Antonio,

Te adjunto un código que tengo, hay que pulirlo un poco; pero puede ayudarte.

/**
* Implements hook_init().
*/
function tu_modulo_init() {

//Server Domain.
$full_site = $_SERVER['SERVER_NAME'];

//We only have to get the browser info the first time that a user loads the page.
if (!isset($_SESSION['device'])){

$_SESSION['device'] = 'desktop';
//Required class.
require_once 'Mobile_Detect.php';
$detect = new Mobile_Detect();

//Detect if the device is a smartphone
if ($detect->isMobile() && !$detect->isTablet()){

  //Save the device type in a session variable.
  $_SESSION['device'] = 'smartphone';

  //Redirect to the mobile version. The mobile domain has index 2.
  $mobile_domain = domain_lookup(2);
  domain_goto($mobile_domain);
}

//Detect if the device is a tablet.
if ($detect->isTablet()){

  //Save the device type in a session variable.
  $_SESSION['device'] = 'tablet';
}

}elseif($_SESSION['device'] == 'smartphone'){
//Redirect to the mobile version.
$mobile_domain = domain_lookup(2);
domain_goto($mobile_domain);
}
}

De ésta página te bajas el "Mobile_Detect.php", que te ahorra el trabajo de hacer la detección del dispositivo : http://code.google.com/p/php-mobile-detect/

Aún no lo he probado 100%, pero debería funcionar.

Saludos

David Loor M.

Una duda adicional. pero

antoniomanco's picture

Una duda adicional. pero ¿cómo redirijo todo a m.misitio.com ? Sucede que como uso domain access literalmente tengo dos sitios que usan la misma base de datos. Si entiendo que primero se detecte el dispositivo, pero ¿la redirección?. Gracias amigos por el apoyo.

Notas adicionales

davo20019's picture

Ese código sólo redirecciona a la versión móbil en caso de que el usuario se conecte desde un smartphone, si se conecta desde una tablet, muestra el sitio no móbil. Lo puedes notar en estas líneas:

"if ($detect->isMobile() && !$detect->isTablet()){"

Saludos cordiales,

David Loor M.

David Loor M.

Una duda adicional. pero

antoniomanco's picture

Una duda adicional. pero ¿cómo redirijo todo a m.misitio.com ? Sucede que como uso domain access literalmente tengo dos sitios que usan la misma base de datos. Si entiendo que primero se detecte el dispositivo, pero ¿la redirección?. Gracias amigos por el apoyo.

Utiliza Mobile Tools

dickinzon's picture

Utiliza Mobile Tools

http://drupal.org/project/mobile_tools

despues de instalado entra a:

admin/settings/mobile-tools

hay dos campos Mobile URL: y Desktop URL:

el modulo detecta y redirige a la version indicada.

Redirigir a m.miweb.com

antoniomanco's picture

Hola Dickinzon gracias por el aporte, pero te cuento que Mobile Tools no es muy estable para Drupal 7, justamente le di de baja por varios errores, además que tiene dependencias con varios módulos que exigen mucho al servidor. Como les explicaba he logrado generar dos ediciones usando la misma base de datos como Domain Access, www.miweb.com y m.miweb.com, el problema radica en la detección. Necesito redirigir al que ingrese de un dispositivo mobil hacia m.miweb.com, lo demás ya está resuelto.

Muy agradecido por los aportes, sigo buscando una solución

En el siguiente artículo hay

jsequeiros's picture

En el siguiente artículo hay un tutorial para configurar mobile_tools y garland_mobile:
http://jsequeiros.com/como-crear-una-version-para-celulares-de-un-sitio-...

Redirigir a m.miweb.com

davo20019's picture

Antonio,

El código que te compartí hace justamente lo que pides. Detecta el dispositivo, y en caso de ser un smartphone, lo redirige a la versión móvil.

La redirección se logra con esto:

//Redirect to the mobile version. The mobile domain has index 2.
$mobile_domain = domain_lookup(2);
domain_goto($mobile_domain);

El número 2 es el indice, para el dominio móvil.

Saludos cordiales,

David Loor M.

David Loor M.

Hola Davo, sólo una duda.

antoniomanco's picture

Hola Davo, sólo una duda. ¿Cómo redirijo a los usuarios a mi dominio, m.misitio.com?? osea como se distingue si va a m,misitio.com o quizá mobil.misitio.com, donde pongo esa indicación para la redirección??? y disculpa la ignorancia sobre el tema, ¿Dónde coloco este código que me envías?

Gracias por tu apoyo, hay muchas cosas de Drupal que recién aprendo

Redirección (hook_init)

davo20019's picture

Antonio,

Te invito a que leas nuevamente mi post, y le des una mirada al código allí sugerido: http://groups.drupal.org/node/243008#comment-788098

Primero lo que hago es implementar el hook_init, este hook se ejecuta cada vez que hay un page request: http://api.drupal.org/api/drupal/modules%21system%21system.api.php/funct...

En este hook, está la lógica para redirigir a la versión móvil de tu sitio. La redirección está en esta porción de código:

//Redirect to the mobile version. The mobile domain has index 2.
Aqui obtengo el dominio móvil.
$mobile_domain = domain_lookup(2);

En mi caso, mi sitio móvil, tiene el indice 2.
En este screenshot puedes ver (http://awesomescreenshot.com/0cfb8flf8), cómo obtener ese valor en: admin/structure/domain

Y con está función, se redirige al usuario al sitio móvil.:
domain_goto($mobile_domain);

Saludos cordiales,

David Loor M.

David Loor M.

Voy avanzando pero dos breves dudas

antoniomanco's picture

Ok. Sólo dos consultas.

Primero: ¿¿¿Las librerías "Mobile_Detect.php" las instalo como un módulo, donde o en que carpeta del CMS??

Segundo: Donde coloco el código que me enviaste?? en

//Redirect to the mobile version. The mobile domain has index 2.
Aqui obtengo el dominio móvil.
$mobile_domain = domain_lookup(2);

Gracias, disculpa el poco conocimiento

Dos dudas más sobre versión mobil

antoniomanco's picture

Ok. Sólo dos consultas.

Primero: ¿¿¿Las librerías "Mobile_Detect.php" las instalo como un módulo, donde o en que carpeta del CMS??

Segundo: Donde coloco el código que me enviaste?? en

//Redirect to the mobile version. The mobile domain has index 2.
Aqui obtengo el dominio móvil.
$mobile_domain = domain_lookup(2);

Gracias, disculpa el poco conocimiento

Configuración Rewrite de Apache

ywarnier's picture

Hola a todos,

Para los fines que se consideren convenientes, les comparto una configuración que tengo hecha en reglas Rewrite de Apache, después de desilusionarme por completo con el módulo MobileTools y el hecho que no gestiona ninguna posibilidad de combinarlo con Boost.

Tengo dos archivos de configuración de Apache (podrían ser el mismo archivo con dos VirtualHosts) para un dominio ficticio (en este ejemplo) www.example.com y m.example.com. Solo pongo aquí las partes relevantes a la redirección móvil.
Suele indicar que uso un multisite con www.example.com como sitio "default" y m.example.com cono una carpeta adicional dentro de /sites/. Dentro de /sites/m.example.com/, tengo un settings.php que es copia del otro pero que define $conf['theme_default'] = 'theme-movil';

Configuración para www.example.com:


  ServerName www.example.com
  DocumentRoot /var/www/example/
  ... //cosas irrelevantes en este contexto

Configuración para m.example.com:


  ServerName m.example.com
  DocumentRoot /var/www/example/
  RewriteEngine on
  RewriteCond %{QUERY_STRING} =nomobile=true
  RewriteRule ^(.*)$ http://www.example.com$1 [R=301,L]

La lógica aquí es que si el celular carga www.example.com, lo carga normal. Si carga m.example.com, ve la web móvil.

Si está en m.example.com y quiere ver la web completa (en este caso ponemos algun enlace con ?nomobile=true en la web móvil), da clic a un enlace con nomobile y ve la web completa. El "=" al inicio indica que la query string tiene que ser exáctamente la dada después del =. Si requieren casos más ámplios, eliminen la "=" inicial.

Esto es suficiente en mi caso. Sin embargo, se puede usar, en la config para www.example.com, el siguiente bloque:

  RewriteEngine on
  RewriteCond %{HTTP_HOST} ^m\.example\.com$ [NC]
  RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC]
  RewriteCond %{QUERY_STRING} !=nomobile=true
  RewriteRule ^(.*)$ http://m.example.com$1 [R=301,L]

Esto verifica si el UserAgent contiene algo de "android", "blackberry", etc. Si lo tiene y no tiene "?nomobile=true", entonces lo redirige a m.example.com.

Técnicamente,

  RewriteCond %{HTTP_HOST} ^m\.example\.com$ [NC]

no es necesario, ya que nunca debería llegar ahí siendo m.example.com la URL cargada (porque estamos en la config de www.example.com en este caso).

Finalmente, como detalle, [NC] quiere decir non-case-sensitive (no importan las mayúsculas o minúsculas) y el [R=301] quiere decir mandar a la otra URL con una redirección tipo 301 (que cambia la URL en el navegador cliente). El [L] significa la última línea de esta regla.

No creo que respondí precisamente a la duda, pero seguramente ayudará un poco. Así espero.

Yannick Warnier
Manager y Consultor e-learning - http://www.beeznest.com
Presidente - Asociación Chamilo - http://www.chamilo.org

Interesantem pero una

elpoderosoperu's picture

Interesantem pero una duda..¿Todas esas modificaciones son en HTACCESS sólo?

Cambios en vhost

ywarnier's picture

No, en mi caso lo estoy poniendo (este bloque conditional) en el VirtualHost de Apache. Es más eficiente.

Yannick Warnier
Manager y Consultor e-learning - http://www.beeznest.com
Presidente - Asociación Chamilo - http://www.chamilo.org

Tenía esta misma duda hace

elpoderosoperu's picture

Tenía esta misma duda hace tiempo, pero sino es Htaccess, entonces cual es la ruta y la fila de APACHE que debo modificar??? o como accedo al VirtualHost de Apache.?

Spanish

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: