<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://carlos.rinconsanchez.com"  xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Blog de Carlos Rincón - drupal</title>
 <link>http://carlos.rinconsanchez.com/taxonomy/term/7/0</link>
 <description></description>
 <language>es</language>
<item>
 <title>Lanzamos Edukame.com</title>
 <link>http://carlos.rinconsanchez.com/lanzamos-edukame-com</link>
 <description>&lt;p&gt;Finalmente puedo anunciar que hemos lanzado la nueva web de &lt;a href=&quot;http://edukame.com&quot;&gt;Edúkame&lt;/a&gt;. Ha sido mucho esfuerzo dedicado a lanzar la mejor web que hemos realizado nunca, un desarrollo de más de seis meses.&lt;/p&gt;
&lt;p&gt;Edúmake es una web dónde nos esforzamos a hacer la vida de los padres con hijos de 0 a 6 años más fácil con artículos de educación emocional, respondiendo consultas y vendiendo soluciones a &lt;a href=&quot;http://edukame.com/kit-para-solucionar-las-rabietas&quot;&gt;rabietas&lt;/a&gt;, &lt;a href=&quot;http://edukame.com/Kit-ayudar-ni%C3%B1o-ir-cama-dormir&quot;&gt;dormir&lt;/a&gt;, &lt;a href=&quot;http://edukame.com/un-kit-para-dejar-el-chupete&quot;&gt;dejar el pañal&lt;/a&gt; y &lt;a href=&quot;http://edukame.com/comprar-cuentos-infantiles&quot;&gt;venta cuentos infantiles&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Edúkame es un &lt;a href=&quot;http://drupal.org/drupal-7.0&quot;&gt;Drupal 7&lt;/a&gt; + &lt;a href=&quot;http://www.drupalcommerce.org/&quot;&gt;Drupal Commerce&lt;/a&gt; para la tienda online. Si entráis veréis que hemos usado una navegación tipo Pinterest usando el módulo &lt;a href=&quot;http://drupal.org/project/views_fluid_grid&quot;&gt;Views Fluid Grid&lt;/a&gt; + el módulo &lt;a href=&quot;http://drupal.org/project/views_infinite_scroll&quot;&gt;Views Infinite Scroll&lt;/a&gt; modificado para que use &lt;a href=&quot;http://www.infinite-scroll.com/&quot;&gt;Jquery Inifinite Scroll&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagecache/500x500/imagenes/edukame_-_ninos_y_familias_felices.png&quot; alt=&quot;&quot; title=&quot;&quot; class=&quot;imagecache-500x500&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Para el tema base he usado &lt;a href=&quot;http://drupal.org/project/sasson&quot;&gt;Sasson&lt;/a&gt;, muy útil sobretodo por su soporte de sass y compass, algo que aún no había usado y tenía ganas.&lt;/p&gt;
&lt;p&gt;Otra cosa a tener en cuenta es que hicimos una migración desde el antiguo blog con wordpress y desde Drupal 6 con Ubercart. Esto lo hicimos usando &lt;a href=&quot;http://drupal.org/project/feeds&quot;&gt;feeds&lt;/a&gt; y tuvimos bastantes problemas pero a trancas y barrancas lo conseguimos. Aunque luego hemos tenido que picar piedra a mano.&lt;/p&gt;
&lt;p&gt;Finalmente también usamos de forma intensiva &lt;a href=&quot;http://drupal.org/project/search_api_solr&quot;&gt;Apache Solr&lt;/a&gt; (usando &lt;a href=&quot;http://drupal.org/project/search_api&quot;&gt;Search API&lt;/a&gt;), para las búsquedas y para relacionar contenido. Aún hemos de mejorar mucho en esto pero Solr funciona por defecto bastante bien, mucho mejor que otras soluciones existentes en Drupal.&lt;/p&gt;
&lt;p&gt;Nos queda mucho camino por recorrer pero gracias a &lt;a href=&quot;http://www.seedrocket.com&quot;&gt;SeedRocket&lt;/a&gt; y a la &lt;a href=&quot;http://www.seedrocket.com/blog/2012/12/100000e-de-inversion-en-edukame/&quot;&gt;financiación de 100.000€&lt;/a&gt; que hemos levantado tenemos un tiempo para seguir mejorando.&lt;/p&gt;
&lt;p&gt;Ahh...si tenéis que comprar algo para un niño de 0 a 6 años os puedo dar un cupón, me lo podéis pedir a través del contacto o en los comentarios.&lt;/p&gt;
&lt;div class=&quot;field field-type-filefield field-field-imagenes&quot;&gt;
      &lt;div class=&quot;field-label&quot;&gt;Imágenes:&amp;nbsp;&lt;/div&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;1495&quot; height=&quot;1158&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/edukame_-_ninos_y_familias_felices.png?1356004171&quot; /&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
</description>
 <comments>http://carlos.rinconsanchez.com/lanzamos-edukame-com#comments</comments>
 <category domain="http://carlos.rinconsanchez.com/category/temas/drupal">drupal</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/drupal-commerce">drupal commerce</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/edukame">edukame</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/emprendedores">emprendedores</category>
 <pubDate>Thu, 20 Dec 2012 11:31:37 +0000</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">4381 at http://carlos.rinconsanchez.com</guid>
</item>
<item>
 <title>Vendo tienda Online de Camisetas</title>
 <link>http://carlos.rinconsanchez.com/vendo-tienda-online-de-camisetas</link>
 <description>&lt;p&gt;Queremos vender algunos activos de Neurotic, sobretodo de los que no nos hemos podido ocupar de ellos. El primero de ellos es &lt;a href=&quot;http://tralari.com&quot;&gt;Tralari&lt;/a&gt;, una tienda online de camisetas, pero que se podría adaptar a cualquier otro tipo de producto que tenga un estilo desenfadado.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagecache/grande/imagenes/captura_de_pantalla_2012-06-13_a_las_17.22.21.png&quot; title=&quot;&quot; class=&quot;colorbox imagefield imagefield-imagelink imagefield-insert&quot; rel=&quot;gallery-insert-all&quot;&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagecache/500x500/imagenes/captura_de_pantalla_2012-06-13_a_las_17.22.21.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;imagecache imagecache-500x500&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;El diseño de la web es uno de sus mayores activos, personalmente me gusta mucho. A nivel técnico es un Drupal 6 con Ubercart ya preparado hasta el último detalle para vender. El domino tralari.com iría en el paquete.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagecache/grande/imagenes/captura_de_pantalla_2012-06-13_a_las_17.22.31.png&quot; title=&quot;&quot; class=&quot;colorbox imagefield imagefield-imagelink imagefield-insert&quot; rel=&quot;gallery-insert-all&quot;&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagecache/500x500/imagenes/captura_de_pantalla_2012-06-13_a_las_17.22.31.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;imagecache imagecache-500x500&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;¿Hablamos? Mándame un contacto.&lt;/p&gt;
&lt;div class=&quot;field field-type-filefield field-field-imagenes&quot;&gt;
      &lt;div class=&quot;field-label&quot;&gt;Imágenes:&amp;nbsp;&lt;/div&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;1617&quot; height=&quot;916&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/captura_de_pantalla_2012-06-13_a_las_17.22.21.png?1339600972&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item even&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;978&quot; height=&quot;899&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/captura_de_pantalla_2012-06-13_a_las_17.22.31.png?1339600985&quot; /&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
</description>
 <comments>http://carlos.rinconsanchez.com/vendo-tienda-online-de-camisetas#comments</comments>
 <category domain="http://carlos.rinconsanchez.com/category/temas/drupal">drupal</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/tralari">tralari</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/ubercart">ubercart</category>
 <pubDate>Wed, 13 Jun 2012 15:23:31 +0000</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">4193 at http://carlos.rinconsanchez.com</guid>
</item>
<item>
 <title>Migrar de wordpress a Drupal con Feeds</title>
 <link>http://carlos.rinconsanchez.com/migrar-de-wordpress-drupal-con-feeds</link>
 <description>&lt;p&gt;Tal como comenté en el post del &lt;a href=&quot;http://carlos.rinconsanchez.com/proyecto-edukame&quot;&gt;Proyecto Edukame&lt;/a&gt; la primera fase era exportar los contenidos que tenemos ahora en Wordpress a Drupal 7.&lt;/p&gt;
&lt;p&gt;Para esto en Drupal 7 existen varias alternativas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://drupal.org/project/wordpress_migrate&quot;&gt;Wordpress Migrate&lt;/a&gt;: Usando el módulo &lt;a href=&quot;http://drupal.org/project/migrate&quot;&gt;Migrate&lt;/a&gt; más el Wordpress Migrate puedes importar posts, usuarios, comentarios, attachments y páginas. Si lo hace todo bien es realmente bueno y recomendable ya que requiere muy poca configuración.
&lt;p&gt;Desgraciadamente en mi caso todo fue mal. Muchos errores, y sobretodo comportamiento errático. A veces funcionaba casi bien, a veces muy mal. Así que después de estrellarme muchas horas con esto decidí probar otra cosa. Tal vez a ti te funcione bien y simplemente sea que no supe configurarlo.
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;Módulo de 0: Otra opción es crear un módulo que lea un XML y que vaya guardando los nodos y los comentarios. No debería ser muy complicado pero para procesos largos como una importación habría que usar algo especial para que no nos de un timeout, tipo el &lt;a href=&quot;http://drupal.org/node/180528&quot;&gt;batch API&lt;/a&gt;. Me lo estuve replanteando pero antes quise probar otras cosas que ya tuviesen en cuenta estas cosas. Además esta solución no permite &quot;volver atrás&quot;, algo que siempre pasa cuando estamos configurandolo porque nunca funciona a la primera.&lt;/li&gt;
&lt;li&gt;Otros: Pues eso, otros, que seguro que existen y que yo desconozca o no haya tenido en cuenta&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://drupal.org/project/feeds&quot;&gt;Feeds&lt;/a&gt;: Lo que al final he usado y me ha ido bastante bien, aunque como todo tiene sus problemillas. A continuación explicaré como hacer una migración de wordpress a Drupal usando Feeds. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Antes de todo hemos de conseguir los datos de wordpress y como vamos a usar Feeds lo idea sería tener un XML aunque a feeds se le puede alimentar en un montón de formatos. Así que hemos de ir a wordpress y en la barra de herramientas, vamos a Exportar.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/wordpress-export.png&quot; width=&quot;315&quot; height=&quot;238&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Allí le damos a exportar todo y nos devolvera un archivo WXR, que es un XML.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/export-wordpress-wxr.png&quot; width=&quot;584&quot; height=&quot;404&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Una vez con el WXR es recomendable partirlo y tener uno de ejemplo con muy pocos posts, que lo podemos hacer simplemente editandolo.&lt;/p&gt;
&lt;p&gt;Después de esto nos bajamos &lt;a href=&quot;http://drupal.org/project/feeds&quot;&gt;Feeds&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/project/feeds_xpathparser&quot;&gt;Feeds XPath Parser&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/project/feeds_tamper&quot;&gt;Feeds Tamper&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/project/media_feeds&quot;&gt;Media Feeds&lt;/a&gt; y &lt;a href=&quot;http://drupal.org/project/feeds_comment_processor&quot;&gt;Feeds Comment Processor&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Luego los activamos tal como se ve en esta captura (y dónde también podéis ver las versiones que he usado)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/captura-importacion-wordpress-drupal-feeds.png&quot; width=&quot;461&quot; height=&quot;688&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;En esta captura está activado el Feeds Comment Processor pero os aconsejo desactivarlo junto a los comentarios por un error que me salió a importar los post. No guardé el error y ahora no lo encuentro. Si lo hacéis así lo único que os pasará es que luego habrá que activar los comentarios en todos los nodos importados pero ya os pongo luego como.&lt;/p&gt;
&lt;p&gt;Una vez esto en el tipo de contenido dónde pondemos los post hemos de crear los campos de &lt;strong&gt;media&lt;/strong&gt; para las imágenes (puedes ser un campo imagen, se haría todo igual), uno para los &lt;strong&gt;tags&lt;/strong&gt;, otro para las &lt;strong&gt;categorías&lt;/strong&gt;, otro para los &lt;strong&gt;nids&lt;/strong&gt; de wordpress y otro para la &lt;strong&gt;url&lt;/strong&gt; antigua de wordpress.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/migrate-wordpress-drupal-content-type.png&quot; width=&quot;656&quot; height=&quot;381&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Después hemos de ir a Feeds Importers en Estructura (admin/structure/feeds/wordpress_import) y crear uno nuevo que llamaremos Wordpress Import (por ejemplo). Lo pondremos para que no haga ninguna importación periódica, que esté en un formulario sólo y que comience la importación al mandarlo. Si nuestro XML es muy grande (el mío eran sólo 750 posts) le ponemos que lo procese en background o aumentamos timeout de php. Yo por si acaso, sobretodo después de ciertos errores le aumenté todas estas variables (en la configuración de apache o en el .htaccess). Recuerda volver a la normalidad una vez hayas hecho el proceso.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
php_value max_execution_time 3000&lt;br /&gt;
php_value max_input_time 6000&lt;br /&gt;
php_value upload_max_filesize 50M&lt;br /&gt;
php_value post_max_size 50M&lt;br /&gt;
php_value memory_limit 256M&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-basic-settings.png&quot; width=&quot;660&quot; height=&quot;569&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;En Recuperador o Fetcher lo podemos dejar en HTTP o File Upload, da bastante igual.&lt;/p&gt;
&lt;p&gt;En el Parser hemos de poner el XPath&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-parser.png&quot; width=&quot;502&quot; height=&quot;464&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;En processor hemos de poner el node processor:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-processor.png&quot; width=&quot;586&quot; height=&quot;478&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Y en las opciones del node processor hemos de poner el formato de texto en full html o configurar el filtered html para permitir los tags que nosotros queramos, pero por experiencia es mejor ponerlo en full html. Se supone que confiamos en el contenido que estamos exportando. Es recomendable instalar el módulo &lt;a href=&quot;http://drupal.org/project/wysiwyg_linebreaks&quot;&gt;Wysiwyg linebreaks&lt;/a&gt; para que se mantengan los artículos que sin &amp;lt; p &gt;&#039;s tienen saltos de línea como separador de párrafos.&lt;br /&gt;
Hemos de asegurarnos que no expire y asignar los posts importados al tipo de contenido correcto, el resto de opciones no es importante si sólo estamos importando y no vamos a actualizar.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-node-processor.png&quot; width=&quot;566&quot; height=&quot;632&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;En el mapping del node processor lo que hemos de hacer ir añadiendo el origen (una expresión de XPath) de los datos al target. He añadido un unique target porque sino, y no sé muy bien porqué, me creaba nodos duplicados.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-maping.png&quot; width=&quot;548&quot; height=&quot;501&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ya casi terminando, hemos de configurar las opciones del XPath XML Parser. Para quien no sepa que es XPath se puede mirar &lt;a href=&quot;http://geneura.ugr.es/~victor/cursillos/xml/XPath/&quot;&gt;este documento&lt;/a&gt; que es el que usé yo para saber cómo funciona. Es una manera fácil y potente de seleccionar los campos de un fichero XML, como si fuera un selector en CSS.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-xpath-parser-settings_0.png&quot; width=&quot;535&quot; height=&quot;883&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ya sólo nos falta configurar el Feeds Tamper que tiene su intríngulis. El Feeds Tamper nos sirve para hacer transformaciones a los valores antes de guardarlos. Por ejemplo, podemos quitar espacios al principio y al final de un texto, podemos pasar a mayúsculas, reemplazar un texto por otro o simplemente quitar un string.&lt;/p&gt;
&lt;p&gt;En nuestro caso necesitamos cambiar un nombre por un id de usuario, necesitamos extraer las imágenes del texto para pasarlas al field media y necesitamos quitarle para la url el http y el dominio. Para lo último podemos usar uno de los plugins de tamper, el &quot;Finde Replace&quot;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-tamper.find-replace.png&quot; width=&quot;417&quot; height=&quot;510&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Pero para las otras dos cosas no encontré un plugin que me fuera bien. Bueno, podría haber usado una expresión regular para extraer las imágenes pero al final decidí que era más potente y flexible usar el &lt;a href=&quot;http://simplehtmldom.sourceforge.net/&quot;&gt;PHP Simple HTML DOM Parser&lt;/a&gt;. Sobretodo por que es tolerante a html mal formados, no como una expresión regular que a no ser que sea hipersupercompleja no tiene en cuenta que esté mal escrito el tag de imagen.&lt;/p&gt;
&lt;p&gt;Para poder añadir plugins al Feeds Tamper es relativamente fácil. Hemos de usar en un módulo el hook_ctools_plugin_directory:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;
/**
 * Implements hook_ctools_plugin_directory().
 */
function edukame_module_ctools_plugin_directory($module, $plugin) {
  if ($module == &#039;feeds_tamper&#039;) {
    return &#039;plugins&#039;;
  }
}
&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;plugins&lt;/strong&gt; es el nombre del directorio dónde ponemos los ficheros que definen cada plugin, el cual ha de estar en el mismo directorio que el módulo dónde lo hemos definido. En este caso yo lo he puesto dentro del módulo edukame_module.&lt;/p&gt;
&lt;p&gt;Ahora, ¿como son los ficheros de los plugins? Pues aquí os pongo un par de ejemplos:&lt;/p&gt;
&lt;p&gt;El que nos transforma los nombres de usuario de wordpress a uids (previamente hemos tenido que crear esos usuarios, con el mismo nombre de usuario que en wordpress)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;wordpress_id.inc&lt;/strong&gt;&lt;br /&gt;
(este lo usaremos para los comentarios)&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;
$plugin = array(
  &#039;form&#039;     =&gt; &#039;feeds_tamper_wordpress_id_form&#039;,
  &#039;callback&#039; =&gt; &#039;feeds_tamper_wordpress_id_callback&#039;,
  &#039;validate&#039; =&gt; &#039;feeds_tamper_wordpress_id_validate&#039;,
  &#039;name&#039;     =&gt; &#039;Wordpress id&#039;,
  &#039;multi&#039;    =&gt; &#039;direct&#039;,
  &#039;category&#039; =&gt; &#039;Text&#039;,
);

function feeds_tamper_wordpress_id_form($importer, $element_key, $settings) {
  $form = array();
  return $form;
}

function feeds_tamper_wordpress_id_validate(&amp;$settings) {
}

function feeds_tamper_wordpress_id_callback($result, $item_key, $element_key, &amp;$field, $settings) {
    $query = new EntityFieldQuery();
    $query
      -&gt;entityCondition(&#039;entity_type&#039;, &#039;node&#039;)
      -&gt;propertyOrderBy(&#039;created&#039;, &#039;DESC&#039;)
      -&gt;fieldCondition(&#039;field_old_nid&#039;, &#039;value&#039;, array($field))
      -&gt;range(0,1);
    $result = $query-&gt;execute();
    $nids = array_keys($result[&#039;node&#039;]);
    $field = array_pop($nids);
}
&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;user_import.inc&lt;/strong&gt;&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;
$plugin = array(
  &#039;form&#039;     =&gt; &#039;feeds_tamper_user_import_form&#039;,
  &#039;callback&#039; =&gt; &#039;feeds_tamper_user_import_callback&#039;,
  &#039;validate&#039; =&gt; &#039;feeds_tamper_user_import_validate&#039;,
  &#039;name&#039;     =&gt; &#039;User Import&#039;,
  &#039;multi&#039;    =&gt; &#039;direct&#039;,
  &#039;category&#039; =&gt; &#039;Text&#039;,
);

function feeds_tamper_user_import_form($importer, $element_key, $settings) {
  $form = array();
  return $form;
}

function feeds_tamper_user_import_validate(&amp;$settings) {
}

function feeds_tamper_user_import_callback($result, $item_key, $element_key, &amp;$field, $settings) {
  $owner = user_load_by_name($field);
  $field = $owner-&gt;uid;
}
&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;image_extractor.inc&lt;/strong&gt;&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;
$plugin = array(
  &#039;form&#039;     =&gt; &#039;feeds_tamper_image_extractor_form&#039;,
  &#039;callback&#039; =&gt; &#039;feeds_tamper_image_extractor_callback&#039;,
  &#039;validate&#039; =&gt; &#039;feeds_tamper_image_extractor_validate&#039;,
  &#039;name&#039;     =&gt; &#039;Image extractor&#039;,
  &#039;multi&#039;    =&gt; &#039;direct&#039;,
  &#039;category&#039; =&gt; &#039;Text&#039;,
);

function feeds_tamper_image_extractor_form($importer, $element_key, $settings) {
  $form = array();
  return $form;
}

function feeds_tamper_image_extractor_validate(&amp;$settings) {
}

function feeds_tamper_image_extractor_callback($result, $item_key, $element_key, &amp;$field, $settings) {  
  include_once(DRUPAL_ROOT . base_path() . drupal_get_path(&#039;module&#039;,&#039;edukame_module&#039;) . &#039;/simplehtmldom_1_5/simple_html_dom.php&#039;);

  $images = array();
  $post_dom = str_get_html($field);
  if($post_dom &amp;&amp; is_object($post_dom) &amp;&amp; isset($post_dom-&gt;nodes)){   
    $img_tags = $post_dom-&gt;find(&#039;img&#039;);

    foreach($img_tags as $image) {
        if (module_exists(&#039;transliteration&#039;)) {
          $image-&gt;src = transliteration_get($image-&gt;src);
        }
        $images[] = $image-&gt;src;
    }
  }
  
  $field = $images;
}
&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Para este último has de tener en cuenta que yo puse el simplehtmldom dentro de la carpeta del módulo edukame, en la misma carpeta que están los plugins.&lt;/p&gt;
&lt;p&gt;Entonces si vamos a las opciones de Tamper han de salir activados los plugins tal que así:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-tamper-plugins.png&quot; width=&quot;579&quot; height=&quot;476&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;La url la hemos guardado para tener las mismas url&#039;s que en wordpress, así que nos falta configurar el pathauto para que pille el campo url. Nos vamos a configuración, alias de url y finalmente patters y ponemos:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-alias-url-wordpress.png&quot; width=&quot;433&quot; height=&quot;363&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Sólo os tenéis que fijar en la url del tipo de contenido artículo o el que hayáis escogido vosotros.&lt;/p&gt;
&lt;p&gt;Antes de finalizar es totalmente recomendable hacer un backup de la base de datos ya que aunque Feeds nos permite volver atrás y borrar los nodos esto no siempre funciona si la importación fue realmente mal.&lt;br /&gt;
Para hacer un backup puedes usar el módulo &lt;a href=&quot;http://drupal.org/project/backup_migrate&quot;&gt;Backup and Migrate&lt;/a&gt; o una sencilla sentencia de drush:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
drush sql-dump &gt; exportacion-configurado-feeds.sql&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ahora sólo nos falta ir a /import, escoger el wordpress import, poner la url del xml (o subirlo, dependiendo de cómo lo hayamos configurado) y esperar. Lo siento, seguramente habrá ido mal.&lt;/p&gt;
&lt;h3&gt;Posibles errores que te pueden pasar y que a mi me pasaron:&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
This page contains the following errors:&lt;br /&gt;
error on line 49832 at column 16: Opening and ending tag mismatch: encoded line 0 and script&lt;br /&gt;
Below is a rendering of the page up to the first error.&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Esto me pasó porque el xml estaba mal formado, en mi caso era porque en algunas páginas teníamos código javascript y wordpress al exportar no lo mete bien dentro de un CDATA, o se lo pone dos veces, no recuerdo exactamente. Pero lo importante para resolver este problema es ver el archivo con Firefox porque te indicará la línea dónde está el problema. Vas a esa línea y lo editas para solucionarlo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mayúsculas&lt;/strong&gt;: Este es un error realmente curioso, si tienes dos ficheros (imágenes por ejemplo) que se llaman igual pero se diferencian en las mayúsculas, imagen.jpg Imagen.jpg, entonces te dirá que está duplicado.&lt;br /&gt;
Es un bug del core: &lt;a href=&quot;http://drupal.org/node/966210&quot; title=&quot;http://drupal.org/node/966210&quot;&gt;http://drupal.org/node/966210&lt;/a&gt;&lt;br /&gt;
¿Qué solución tiene esto? Pues o esperar a que lo arreglen o si no son muchos cambiarlos a mano, que es lo que hice yo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Caracteres UTF en las url&#039;s (ñ&#039;s, acentos)&lt;/strong&gt;: Otro de esos bugs tan guays del core aunque yo lo puse en media_internet &lt;a href=&quot;http://drupal.org/node/1492658&quot; title=&quot;http://drupal.org/node/1492658&quot;&gt;http://drupal.org/node/1492658&lt;/a&gt;&lt;br /&gt;
Si subes una imagen con ñ&#039;s o acentos, por ejemplo, el módulo transliterate lo hace genial pero en cambio si la añades desde una url no lo hace bien.&lt;br /&gt;
Mi solución para esto fue hacer una copia en el mismo directorio de los archivos culpables quitándoles los caracteres &quot;raros&quot;. Así no tuve que modificar los posts en wordpress y sólo tuve que hacer un transliteration en el plugin dónde extraía las imágenes.&lt;/p&gt;
&lt;p&gt;&lt;storng&gt;An AJAX HTTP request terminated abnormally. Debugging information follows. Path: /batch?id=22&amp;amp;op=do StatusText: ResponseText: ReadyState: 4&lt;br /&gt;
Esto no sé muy bien porqué era, pero me pasaba al poner el xml entero. Lo que hice para minimizar el problema fue exportar el archivo por autores y así tener ficheros más pequeños y problemas más localizados. Esto puede que no sea una opción para ti, entonces mira a ver si alguien ha contestado este bug: &lt;a href=&quot;http://drupal.org/node/1508154&quot; title=&quot;http://drupal.org/node/1508154&quot;&gt;http://drupal.org/node/1508154&lt;/a&gt;&lt;/storng&gt;&lt;/p&gt;
&lt;h2&gt;Los comentarios&lt;/h2&gt;
&lt;p&gt;Ahora sólo nos falta importar los comentarios, lo cual después de todo lo otro es casi pan comido. Activamos los módulos comments y Feeds Comment Processor. Creamos un nuevo feed importer, le asignamos como processor el comment processor:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-comments-xpath.png&quot; width=&quot;467&quot; height=&quot;845&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Configuramos el mapping:&lt;br /&gt;
&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-comments-mapping.png&quot; width=&quot;490&quot; height=&quot;476&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Y configuramos el XPath&lt;br /&gt;
&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-comment-processor.png&quot; width=&quot;457&quot; height=&quot;339&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finalmente sólo queda activar el plugin de tamper &lt;strong&gt;wordpress id&lt;/strong&gt; para convertir los id&#039;s de wordpress en id&#039;s de drupal:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-comments-feeds-tamper.png&quot; width=&quot;577&quot; height=&quot;173&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ahora volvemos a crear un backup de la base de datos, vamos al formulario de importación, ponemos otra vez el XML entero y esperamos...uppss, volvió a ir mal?&lt;/p&gt;
&lt;h3&gt;Errores que me encontré yo:&lt;/h3&gt;
&lt;p&gt;Cuando el módulo feeds_comment_processor añade los comentarios lo hace en el orden en el que aparecen. La exportación de wordpress sí exporta el comment_ID pero esto Drupal no lo usa y wordpress los exporta en el orden que le da la gana. Para solucionar esto es más fácil modificar wordpress, es tan sólo una línea. &lt;/p&gt;
&lt;p&gt;También te puede pasar que te un error de sql y te diga que el nombre es demasiado largo (creo que son 256) con lo cual te puedes preguntar. ¿Quien ha puesto un nombre así de largo? Y la respuesta es que son los pingbacks así que lo que yo hice fue quitarlos porque tampoco me interesaban.&lt;/p&gt;
&lt;p&gt;Para eliminar pingbacks y ordenar los comentarios has de ir a la línea 403 del archivo wp-admin/includes/export.php y dejarlo así:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;?php   $comments = $wpdb-&gt;get_results( $wpdb-&gt;prepare( &quot;SELECT * FROM $wpdb-&gt;comments WHERE comment_post_ID = %d AND comment_approved &amp;lt;&gt; &#039;spam&#039; AND comment_type &amp;lt;&gt; &#039;pingback&#039; ORDER BY comment_ID ASC&quot;, $post-&gt;ID ) );&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Finalmente si teníamos desactivados los comentarios al importar los posts nos encontraremos que no tendremos activados los comentarios en todos nuestros nodos importados. Para no tenerlos que hacer manualmente podemos hacer:&lt;br /&gt;
UPDATE node SET comment = 1 WHERE type = &#039;article&#039;&lt;br /&gt;
UPDATE node_revision LEFT JOIN node ON node.nid = node_revision.nid SET node_revision.comment = 2 WHERE node.type = &#039;article&#039;&lt;/p&gt;
&lt;p&gt;Esto se puede hacer desde drush asi:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
drush sqlq &quot;UPDATE node SET comment = 1 WHERE type = &#039;article&#039;&quot;&lt;br /&gt;
drush sqlq &quot;UPDATE node_revision LEFT JOIN node ON node.nid = node_revision.nid SET node_revision.comment = 2 WHERE node.type = &#039;article&#039;&quot;&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Y ufff...creo que esto es todo. Seguramente con un post tan largo me habré olvidado de cosas, otras estarán mal y seguramente os saldrán problemas nuevos que a mi no me pasaron. De todas maneras espero que sea una guía muy útil para que al menos os tengáis que pelear menos de lo que lo tuve que hacer yo.&lt;/p&gt;
&lt;p&gt;El próximo paso será importar los productos de una tienda con Drupal 6 + Ubercart a Drupal 7 con Drupal Commerce.&lt;/p&gt;
&lt;div class=&quot;field field-type-filefield field-field-imagenes&quot;&gt;
      &lt;div class=&quot;field-label&quot;&gt;Imágenes:&amp;nbsp;&lt;/div&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;461&quot; height=&quot;688&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/captura-importacion-wordpress-drupal-feeds.png?1330961582&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item even&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;315&quot; height=&quot;238&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/wordpress-export.png?1330961855&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;584&quot; height=&quot;404&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/export-wordpress-wxr.png?1330962024&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item even&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;548&quot; height=&quot;501&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-maping.png?1333619314&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;660&quot; height=&quot;569&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-basic-settings.png?1330963546&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item even&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;502&quot; height=&quot;464&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-parser.png?1330963685&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;586&quot; height=&quot;478&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-processor.png?1330964011&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item even&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;566&quot; height=&quot;632&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-node-processor.png?1330964742&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;535&quot; height=&quot;883&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-xpath-parser-settings_0.png?1333620240&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item even&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;417&quot; height=&quot;510&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-tamper.find-replace.png?1330965898&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;579&quot; height=&quot;476&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-tamper-plugins.png?1333620404&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item even&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;433&quot; height=&quot;363&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-alias-url-wordpress.png?1333621163&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;457&quot; height=&quot;339&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-comment-processor.png?1333622214&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item even&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;490&quot; height=&quot;476&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-comments-mapping.png?1333622234&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;467&quot; height=&quot;845&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-comments-xpath.png?1333622249&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item even&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;577&quot; height=&quot;173&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/feeds-importer-comments-feeds-tamper.png?1333622705&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;656&quot; height=&quot;381&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/migrate-wordpress-drupal-content-type.png?1334043570&quot; /&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
</description>
 <comments>http://carlos.rinconsanchez.com/migrar-de-wordpress-drupal-con-feeds#comments</comments>
 <category domain="http://carlos.rinconsanchez.com/category/temas/drupal">drupal</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/edukame">edukame</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/feeds">feeds</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/migracion">migración</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/wordpress">wordpress</category>
 <pubDate>Thu, 05 Apr 2012 20:02:11 +0000</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">3689 at http://carlos.rinconsanchez.com</guid>
</item>
<item>
 <title>Proyecto edukame</title>
 <link>http://carlos.rinconsanchez.com/proyecto-edukame</link>
 <description>&lt;p&gt;Desde hace un tiempo estoy en el &lt;a href=&quot;http://edukame.com/acerca-de/&quot;&gt;equipo&lt;/a&gt; de &lt;a href=&quot;http://edukame.com&quot;&gt;edukame.com&lt;/a&gt; pero dedicando pocas horas de Neurotic. Ahora nos vamos a poner a fulltime para conseguir que edukame sea la referencia en el sector de educación infantil y en la venta de &lt;a href=&quot;http://tienda.edukame.com&quot;&gt;libros y juguetes para niños.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Para conseguir esto vamos a tener que rehacer la web. En este post pondré los pasos que creo que tendré que hacer y a medida que los vaya haciendo iré creando posts explicando más o menos en detalle lo que he hecho:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://carlos.rinconsanchez.com/migracion-de-wordpress-drupal-con-feeds&quot;&gt;Migración de Wordpress a Drupal&lt;/a&gt;: Edukame está en wordpress la parte de contenidos y en Drupal 6 + Ubercart la tienda y la nueva será un Drupal 7 + Drupal Commerce.&lt;/li&gt;
&lt;li&gt;Maquetación: Tendré que aplicar el nuevo diseño (aún en fase inicial) y escoger qué tema base usar. Imprescindible que el tema base sea responsive. Después habrá que maquetar versiones móvil, tablet y desktop.&lt;/li&gt;
&lt;li&gt;Búsqueda: Esto será una parte fundamental de la web por lo que usaré Apache Solr para conseguir que los resultados sean realmente relevantes y rápidos.&lt;/li&gt;
&lt;li&gt;Aplicaciones para móviles y web: Juegos, utilidades para madres y padres, etc. Muy importante.&lt;/li&gt;
&lt;li&gt;Integración con redes sociales: Facebook, twitter, google+, etc.&lt;/li&gt;
&lt;li&gt;Analíticas: Integración de analitics con eventos, túneles, etc. Incorporación de otras herramientas tipo crazyegg para ver el comportamiento de los usuarios. No se puede mejorar sin medir.&lt;/li&gt;
&lt;li&gt;Test A/B y multivariantes: Lo mismo de antes, no se puede mejorar sin medir.&lt;/li&gt;
&lt;li&gt;Newsletters: Aunque a muchos desarrolladores nos parezca como algo anticuado el mail es el mejor canal que existe para llegar a tus usuarios.&lt;/li&gt;
&lt;li&gt;Test de usabilidad: No sabes cuales pueden ser los obstáculos reales hasta que no lo pruebas con tu público. Uno mismo no es para nada el público objetivo normalmente. Así que más mediciones todavía!&lt;/li&gt;
&lt;/ul&gt;
</description>
 <comments>http://carlos.rinconsanchez.com/proyecto-edukame#comments</comments>
 <category domain="http://carlos.rinconsanchez.com/category/temas/drupal">drupal</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/drupal-commerce">drupal commerce</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/edukame">edukame</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/ubercart">ubercart</category>
 <pubDate>Wed, 15 Feb 2012 10:25:40 +0000</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">3658 at http://carlos.rinconsanchez.com</guid>
</item>
<item>
 <title>Viaje a la Tierra Media</title>
 <link>http://carlos.rinconsanchez.com/viaje-a-la-tierra-media</link>
 <description>&lt;p&gt;¿Eres un apasionado del mundo de J.R.Tolkien y siempre has querido viajar a la Tierra Media, conocer a hobbits, luchar contra los orcos junto a elfos y enanos?&lt;/p&gt;
&lt;p&gt;Pues ahora puedes realizar el &lt;a href=&quot;http://viajesmonllar.com/viaje/fantasia/viaje-la-tierra-media&quot;&gt;viaje a la Tierra Media&lt;/a&gt; de tus sueños gracias a la última promoción de &lt;a href=&quot;http://viajesmonllar.com&quot;&gt;Viajes Monllar&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nosotros ya lo hicimos y aquí tenéis las pruebas fotográficas:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagecache/grande/imagenes/bosquenegro-viajesmonllar.png&quot; title=&quot;&quot; class=&quot;colorbox imagefield imagefield-imagelink imagefield-insert&quot; rel=&quot;gallery-insert-all&quot;&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagecache/500x/imagenes/bosquenegro-viajesmonllar.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;imagecache imagecache-500x&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagecache/grande/imagenes/hobbiton-viajesmonllar-2.png&quot; title=&quot;&quot; class=&quot;colorbox imagefield imagefield-imagelink imagefield-insert&quot; rel=&quot;gallery-insert-all&quot;&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagecache/500x/imagenes/hobbiton-viajesmonllar-2.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;imagecache imagecache-500x&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagecache/grande/imagenes/rivendell-viajesmonllar.png&quot; title=&quot;&quot; class=&quot;colorbox imagefield imagefield-imagelink imagefield-insert&quot; rel=&quot;gallery-insert-all&quot;&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagecache/500x/imagenes/rivendell-viajesmonllar.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;imagecache imagecache-500x&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;También podéis hacer un &lt;a href=&quot;http://viajesmonllar.com/viaje/fantasia/viaje-al-centro-de-la-tierra&quot;&gt;viaje al Centro de la Tierra&lt;/a&gt; y &lt;a href=&quot;http://viajesmonllar.com/viaje/fantasia/viaje-alucinante&quot;&gt;Viaje alucinante&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Como supongo que ya suponéis, no son viajes reales, sino nuestro último intento de marketing viral. ¿Qué te parece? ¿Es lo suficientemente gracioso o curioso como para que se lo pasaras a un amigo, lo pusieras en tu muro del facebook o en twitter?&lt;/p&gt;
&lt;div class=&quot;field field-type-filefield field-field-imagenes&quot;&gt;
      &lt;div class=&quot;field-label&quot;&gt;Imágenes:&amp;nbsp;&lt;/div&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;1200&quot; height=&quot;750&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/bosquenegro-viajesmonllar.png?1321529553&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item even&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;2048&quot; height=&quot;1365&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/hobbiton-viajesmonllar-2.png?1321529571&quot; /&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;1200&quot; height=&quot;681&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/rivendell-viajesmonllar.png?1321529581&quot; /&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
</description>
 <comments>http://carlos.rinconsanchez.com/viaje-a-la-tierra-media#comments</comments>
 <category domain="http://carlos.rinconsanchez.com/category/temas/drupal">drupal</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/marketing-viral">marketing viral</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/viaje-la-tierra-media">viaje a la tierra media</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/viaje-al-centro-de-la-tierra">viaje al centro de la tierra</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/viaje-alucinante">viaje alucinante</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/viajes-monllar">viajes monllar</category>
 <pubDate>Thu, 17 Nov 2011 11:37:57 +0000</pubDate>
 <dc:creator>Carlos</dc:creator>
 <guid isPermaLink="false">3558 at http://carlos.rinconsanchez.com</guid>
</item>
<item>
 <title>Chollu Mascotas, el primer live shopping para el sector de las mascotas</title>
 <link>http://carlos.rinconsanchez.com/chollu-mascotas-el-primer-live-shopping-para-el-sector-de-las-mascotas</link>
 <description>&lt;p&gt;Acabamos de lanzar &lt;a href=&quot;http://mascotas.chollu.com&quot;&gt;Chollu Mascotas&lt;/a&gt;, oooeee oeeeee. Es un Live shopping tipo &lt;a href=&quot;http://mequedouno.com&quot;&gt;mequedouno.com&lt;/a&gt; pero sólo se venden productos relacionados con las mascotas. Cada día y sólo ese día se vende un producto pero a un precio realmente bueno, con un gran descuento.&lt;/p&gt;
&lt;p&gt;La tienda está hecha usando &lt;a href=&quot;http://gorile.com&quot;&gt;Gorile&lt;/a&gt; como base con algunas pequeñas modificaciones, especialmente lo de que sólo salga un producto.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagecache/grande/imagenes/chollu_mascotas-horizontal.png&quot; title=&quot;&quot; class=&quot;colorbox imagefield imagefield-imagelink imagefield-insert&quot; rel=&quot;gallery-insert-all&quot;&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagecache/500x500/imagenes/chollu_mascotas-horizontal.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;imagecache imagecache-500x500&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;¿Qué os parece?&lt;/p&gt;
&lt;p&gt;Y si tenéis mascotas apuntaros que seguro que os sorprendemos con los precios!&lt;/p&gt;
&lt;div class=&quot;field field-type-filefield field-field-imagenes&quot;&gt;
      &lt;div class=&quot;field-label&quot;&gt;Imágenes:&amp;nbsp;&lt;/div&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;1051&quot; height=&quot;758&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/chollu_mascotas-horizontal.png?1317831736&quot; /&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
</description>
 <comments>http://carlos.rinconsanchez.com/chollu-mascotas-el-primer-live-shopping-para-el-sector-de-las-mascotas#comments</comments>
 <category domain="http://carlos.rinconsanchez.com/category/temas/chollu">chollu</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/drupal">drupal</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/gorile">gorile</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/neurotic">neurotic</category>
 <pubDate>Wed, 05 Oct 2011 16:23:31 +0000</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">3522 at http://carlos.rinconsanchez.com</guid>
</item>
<item>
 <title>Cómo quitar el confirmar password en Drupal 6 al registrarte?</title>
 <link>http://carlos.rinconsanchez.com/como-quitar-el-confirmar-password-en-drupal-6-al-registrarte</link>
 <description>&lt;p&gt;Si quieres simplificar al máximo el registro de usuario una de las cosas que se puede hacer es quitar el campo de confirmar password del formulario de registro.&lt;/p&gt;
&lt;p&gt;Para hacer esto en Drupal 6 lo puedes hacer cambiando el tipo de campo del password de &quot;password_confirm&quot; a &quot;password&quot;. Tan simple como eso. (yo he necesitado un rato para darme cuenta :P)&lt;/p&gt;
&lt;p&gt;Esto lo ponemos dentro de un hook_form_alter, por ejemplo:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
function mimodulo_form_alter(&amp;amp;$form, &amp;amp;$form_state, $form_id) {&lt;br /&gt;
  if($form_id == &#039;user_register&#039; &amp;amp;&amp; !(arg(0) == &#039;user&#039; &amp;amp;&amp; is_numeric(arg(1)))) {&lt;br /&gt;
    $form[&#039;account&#039;][&#039;pass&#039;][&#039;#type&#039;]  = &#039;password&#039;;&lt;br /&gt;
    $form[&#039;account&#039;][&#039;pass&#039;][&#039;#title&#039;] = &#039;Tu clave secreta&#039;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Has de sustituir el nombre de &quot;mimodulo&quot; por el nombre real de tu módulo dónde pongas esto.&lt;/p&gt;
</description>
 <comments>http://carlos.rinconsanchez.com/como-quitar-el-confirmar-password-en-drupal-6-al-registrarte#comments</comments>
 <category domain="http://carlos.rinconsanchez.com/category/temas/drupal">drupal</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/drupal-6">drupal 6</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/form-api">form api</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/password">password</category>
 <pubDate>Tue, 13 Sep 2011 15:58:01 +0000</pubDate>
 <dc:creator>Carlos</dc:creator>
 <guid isPermaLink="false">3505 at http://carlos.rinconsanchez.com</guid>
</item>
<item>
 <title>Cómo subir más de una imagen a la vez (multiupload) con Drupal 7?</title>
 <link>http://carlos.rinconsanchez.com/como-subir-mas-de-una-imagen-la-vez-multiupload-con-drupal-7</link>
 <description>&lt;p&gt;Para Drupal 6 existen un par de módulos que nos permiten subir más de un fichero o imagen a la vez sin tener que ir uno a uno ya que si tenemos que subir unas cuantas imágenes es muy tedioso.&lt;/p&gt;
&lt;p&gt;Por ejemplo:&lt;br /&gt;
&lt;a href=&quot;http://drupal.org/project/swfupload&quot; title=&quot;http://drupal.org/project/swfupload&quot;&gt;http://drupal.org/project/swfupload&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://drupal.org/project/image_fupload&quot; title=&quot;http://drupal.org/project/image_fupload&quot;&gt;http://drupal.org/project/image_fupload&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://drupal.org/project/plupload&quot; title=&quot;http://drupal.org/project/plupload&quot;&gt;http://drupal.org/project/plupload&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Plupload sí tiene versión para Drupal 7 pero sólo va si usamos otro módulo que lo sorpote, por lo que si queremos usarlo como widget de un campo tipo file/image tampoco nos vale.&lt;/p&gt;
&lt;p&gt;Rebuscando entre issues de estos proyectos encontré que se proponía como alternativa usar estos dos módulos (uno es para ficheros y el otro de imágenes que depende del primero)&lt;/p&gt;
&lt;p&gt;&lt;strike&gt;https://drupal.org/sandbox/czigor/1115362&lt;/strike&gt;&lt;br /&gt;
&lt;a href=&quot;http://drupal.org/project/1115362&quot; title=&quot;http://drupal.org/project/1115362&quot;&gt;http://drupal.org/project/1115362&lt;/a&gt;&lt;br /&gt;
&lt;strike&gt;https://drupal.org/sandbox/czigor/1115368&lt;/strike&gt;&lt;br /&gt;
&lt;a href=&quot;http://drupal.org/project/multiupload_imagefield_widget&quot; title=&quot;http://drupal.org/project/multiupload_imagefield_widget&quot;&gt;http://drupal.org/project/multiupload_imagefield_widget&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strike&gt;&lt;br /&gt;
Para poderlos descargar hay que &lt;a href=&quot;http://git-scm.com/&quot;&gt;usar git&lt;/a&gt;, una vez instalado y desde el directorio dónde queréis que se instale hacéis:&lt;/strike&gt;&lt;/p&gt;
&lt;p&gt;git clone &lt;a href=&quot;http://git.drupal.org/sandbox/czigor/1115362.git&quot; title=&quot;http://git.drupal.org/sandbox/czigor/1115362.git&quot;&gt;http://git.drupal.org/sandbox/czigor/1115362.git&lt;/a&gt; multiupload_filefield_widget&lt;br /&gt;
git clone &lt;a href=&quot;http://git.drupal.org/sandbox/czigor/1115368.git&quot; title=&quot;http://git.drupal.org/sandbox/czigor/1115368.git&quot;&gt;http://git.drupal.org/sandbox/czigor/1115368.git&lt;/a&gt; multiupload_imagefield_widget&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Habilitáis el módulo y ya tendréis disponible un multiupload widget para file e image. Yo lo he usado y me ha ido perfectamente pero sólo funciona con navegadores que soporten HTML5. Si lo usáis sólo para el área de administración eso no será un problema ya que podéis poner como requisito un navegador en concreto (o uno no: IE).&lt;/p&gt;
&lt;p&gt;¿Alguno lo ha probado y a optado por una solución distinta?&lt;/p&gt;
&lt;h3&gt;Actualización&lt;/h3&gt;
&lt;p&gt;He cambiado algunas cosas porque los proyectos ya no están en el sandbox.&lt;/p&gt;
</description>
 <comments>http://carlos.rinconsanchez.com/como-subir-mas-de-una-imagen-la-vez-multiupload-con-drupal-7#comments</comments>
 <category domain="http://carlos.rinconsanchez.com/category/temas/drupal">drupal</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/drupal-7">drupal 7</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/multiupload">multiupload</category>
 <pubDate>Sun, 11 Sep 2011 20:04:58 +0000</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">3503 at http://carlos.rinconsanchez.com</guid>
</item>
<item>
 <title>¿Quieres vender más en internet con Drupal?</title>
 <link>http://carlos.rinconsanchez.com/quieres-vender-mas-en-internet-con-drupal</link>
 <description>&lt;p&gt;Pues vente al DrupalDay al BoF que organizaré, aunque aún no sé horarios, depende un poco de las sesiones a las que me quiera asistir. Seguramente será algo en petit comité, dónde entre todos nos ayudaremos mutuamente para mejorar nuestras tiendas online a que vendan más.&lt;/p&gt;
&lt;p&gt;En &lt;a href=&quot;http://neurotic.es&quot;&gt;Neurotic&lt;/a&gt; nos hemos enfocado mucho en el ecommerce con &lt;a href=&quot;http://gorile.com&quot;&gt;Gorile&lt;/a&gt;, incluso con tiendas propias como &lt;a href=&quot;http://viajesmonllar.com&quot;&gt;Viajes Monllar&lt;/a&gt; y la &lt;a href=&quot;http://tienda.edukame.com&quot;&gt;tienda de Edukame&lt;/a&gt; (y próximamente más)&lt;/p&gt;
&lt;p&gt;¿Quien se apunta?&lt;/p&gt;
</description>
 <comments>http://carlos.rinconsanchez.com/quieres-vender-mas-en-internet-con-drupal#comments</comments>
 <category domain="http://carlos.rinconsanchez.com/category/temas/drupal">drupal</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/drupalday">drupalday</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/ecommerce">ecommerce</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/edukame">edukame</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/gorile">gorile</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/neurotic">neurotic</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/viajes-monllar">viajes monllar</category>
 <pubDate>Mon, 06 Jun 2011 11:01:34 +0000</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">3385 at http://carlos.rinconsanchez.com</guid>
</item>
<item>
 <title>Drupal Day 2011 en Barcelona</title>
 <link>http://carlos.rinconsanchez.com/drupal-day-2011-en-barcelona</link>
 <description>&lt;p&gt;El próximo 18 de julio se celebrará en el Citilab de Cornellá (cerca de Barcelona) el &lt;a href=&quot;http://drupalday.es/&quot;&gt;Drupal Day&lt;/a&gt;. El coste de la inscripción es gratuito y será una buena oportunidad para aprender más sobre Drupal.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/captura_de_pantalla_2011-05-26_a_las_10.06.06.png&quot; width=&quot;625&quot; height=&quot;167&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Tenéis más info en la propia web del Drupal Day o un buen resumen en el &lt;a href=&quot;http://ateneatech.com/blog/drupal-day-barcelona-2011&quot;&gt;blog de Atenea&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Yo me acabo de apuntar, ahora os toca a vosotros.&lt;/p&gt;
&lt;div class=&quot;field field-type-filefield field-field-imagenes&quot;&gt;
      &lt;div class=&quot;field-label&quot;&gt;Imágenes:&amp;nbsp;&lt;/div&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;img  class=&quot;imagefield imagefield-field_imagenes&quot; width=&quot;625&quot; height=&quot;167&quot; alt=&quot;&quot; src=&quot;http://carlos.rinconsanchez.com/sites/default/files/imagenes/captura_de_pantalla_2011-05-26_a_las_10.06.06.png?1306397184&quot; /&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
</description>
 <comments>http://carlos.rinconsanchez.com/drupal-day-2011-en-barcelona#comments</comments>
 <category domain="http://carlos.rinconsanchez.com/category/temas/drupal">drupal</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/drupalday">drupalday</category>
 <category domain="http://carlos.rinconsanchez.com/category/temas/neurotic">neurotic</category>
 <pubDate>Thu, 26 May 2011 08:09:13 +0000</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">3280 at http://carlos.rinconsanchez.com</guid>
</item>
</channel>
</rss>
