Creo en nosotros. Wikipedia.
Herramientas::Versión móvil para ascodevida.com
Permalink: http://www.treeweb.es/u/897/ 09/12/2010

Versión móvil para ascodevida.com

www.ascodevida.com es una página ideal para pasar ratos cortos en el transporte público, por varias razones.
La primera es que no necesitas recordar cosas anteriores, para empezar a utilizarlo y la segunda es que puedes detener la lectura en cualquier momento, al ser historias muy cortas e independientes.
Sin embargo, la página no tiene versión móvil, y pesa alrededor de 250 KiB con las imágenes, el javascript y los banners. Además, se hace muy lenta hasta que el mini navegador del móvil coloca todos los gráficos en pantalla.
La solución que se me ha ocurrido es leer www.ascodevida.com pero a través de un script de php alojado en otro servidor que se encarga de reducir drásticamente el peso de la página hasta los 5 KiB, sí, unas 50 veces más pequeña. Además, la disposición de los textos y botones están preparados para las diminutas pantallas de los dispositivos móviles.

La idea es muy simple, mi móvil le pide a un servidor intermedio (www.treeweb.es/adv) una página, y el servidor la descarga de www.ascodevida.com, la aligera de peso y se la envía a mi móvil.

Por el momento la versión móvil tiene únicamente las funciones básicas: visualizar una página completa con 12 historias y pasar a la página siguiente o anterior. Además, numera secuencialmente las historias para hacernos una idea de por dónde vamos leyendo.

El código php que se encarga de hacer el trabajo duro es el siguiente:
<?php $actual = 1; // Página actual // Calculo la url: $url = '/'; $i=0; while ($tw->mRutas->actURL()!=null) { if ($i==2) $actual = $tw->mRutas->actURL(); if ($i) $url .= '/'; $url .= $tw->mRutas->actURL(); $tw->mRutas->sigURL(); $i++; } // Pinto el botón 'menos' if ($actual>1) echo '<a id="mas" href="/adv/ultimos/p/'.($actual-1).'">Menos!</a>'; // Descarga la página actual $ch = curl_init('http://www.ascodevida.com'.$url); curl_setopt ($ch, CURLOPT_POST, 1); // Esto de momento no se utiliza, pero sirve para pasar parámetros POST // en caso de que implementemos la opción de votaciones o de comentarios foreach ($_POST as $P=>$p) $_POST[$P] = $P.'='.urlencode($p); curl_setopt ($ch, CURLOPT_POSTFIELDS, implode('&', $_POST)); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); $texto = curl_exec ($ch); curl_close ($ch); // Proceso el HTML de www.ascodevida.com $doc = new DOMDocument(); @$doc->loadHTML($texto); $dom->preserveWhiteSpace = false; // Pinto las historias $li = $doc->getElementsByTagName('div'); $number = 1; for ($i=0; $i<$li->length; $i++) { $div = $li->item($i); if ($div->getAttribute('class') == 'box story') { $subnodos = $div->childNodes; echo '<div class="top">'.$subnodos->item(3)->nodeValue.'</div>'; echo '<div class="story">'; echo '<div class="number">'.(($actual-1)*12+$number).'</div>'; echo $subnodos->item(5)->nodeValue; echo '</div>'; $number++; } } // Pinto el botón 'más' ?> <a id="mas" href="/adv/ultimos/p/<?=($actual+1)?>">Más!</a>
Además, aderezo con algo de HTML y CSS para mejorar la presentación visual.