Posted by antoniomanco on July 16, 2012 at 11:38pm
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
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
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'])){
}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
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
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
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
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
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
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
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.
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)
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
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
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
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:
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
Interesantem pero una duda..¿Todas esas modificaciones son en HTACCESS sólo?
Cambios en vhost
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
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.?