Vinova Posted January 31, 2014 Share Posted January 31, 2014 Estimados compañeros y compañeras. Espero se encuentren todos bien. El día de hoy me gustaría resolver el siguiente problema. Por lo que he leído, muchos ya han intentado duplicar módulos, pero indagando por el foro, no hay ninguna explicación concreta de como se realizo esta labor, o el topic cambia su rumbo en el camino o las descripciones quedan a medias. He duplicado la carpeta y cambiado el nombre del .tpl y el .php al mismo de la carpeta. He cambiado el nombre de cada una de las variables, obteniendo resultados muy extraños XD. En fín.... me he tomado verdaderamente el tiempo y quedo en el mismo problema. Logro duplicar el módulo, instalarlo, pero al momento de ingresar las variables en el módulo duplicado, se copian estas mismas al otro módulo. significa que hay un par de variables (creo yo), que quedan con el mismo nombre del módulo original. ¿Alguien sabe cuales son? Estoy atento a sus respuestas. Saludos! PD: Versión prestashop 1.5.6 Link to comment Share on other sites More sharing options...
nadie Posted January 31, 2014 Share Posted January 31, 2014 ¿Porque duplicas el módulo de publicidad, cuando tienes el contentox: http://contentbox.org/ que con el boton que dice: Generate your Module puedes duplicar el módulo las veces que quieres y para poner una imagen o 60 imagenes, etc.. sirve de sobra? Link to comment Share on other sites More sharing options...
Vinova Posted January 31, 2014 Author Share Posted January 31, 2014 Genial Herramienta! pero no logro entender que fue lo que hice, ya que cree un módulo llamado "blockadvertising2", pero no logro hacer que se vea la imagen, solo el texto. Como puedo poder un hipervinculo a la foto?Gracias por tu pronta respuesta Link to comment Share on other sites More sharing options...
Vinova Posted February 1, 2014 Author Share Posted February 1, 2014 Estimado! requetecontra muchas gracias! siemprees un placer leer las ayudas que haces. Esta vez, la solución la encontre en "Manager Banner", módulo el cual se puede descargar desde aquí.http://www.prestashop.com/forums/topic/96894-module-banner-manager-multiple-advertising/muchas gracias! Link to comment Share on other sites More sharing options...
joseantgv Posted February 1, 2014 Share Posted February 1, 2014 Contestando a tu post inicial, y para evitar lo que tu mismo comentas: "no hay ninguna explicación concreta de como se realizo esta labor, o el topic cambia su rumbo en el camino o las descripciones quedan a medias", voy a explicarte brevemente como hacerlo. Cada módulo es diferente (obvio), a grandes rasgos lo que hay que cambiar es el nombre de la clase, del módulo, las variables de configuración (lo que se setea con un Configuration::update("example")) y la base de datos si fuera el caso. En el caso de las variables de configuración lo mejor es copiar el valor y buscarlo en toda la carpeta del módulo, por si hubiera algún sitio más dónde se utilizara. Link to comment Share on other sites More sharing options...
nadie Posted February 1, 2014 Share Posted February 1, 2014 Contestando a tu post inicial, y para evitar lo que tu mismo comentas: "no hay ninguna explicación concreta de como se realizo esta labor, o el topic cambia su rumbo en el camino o las descripciones quedan a medias", voy a explicarte brevemente como hacerlo. Cada módulo es diferente (obvio), a grandes rasgos lo que hay que cambiar es el nombre de la clase, del módulo, las variables de configuración (lo que se setea con un Configuration::update("example")) y la base de datos si fuera el caso. En el caso de las variables de configuración lo mejor es copiar el valor y buscarlo en toda la carpeta del módulo, por si hubiera algún sitio más dónde se utilizara. Por si interesa a modo didactico, dejo un ejemplo que monte hace tiempo de como duplicar por ejemplo el blockrss. (PD: Posiblemente tenga erratas, ya que ni lo revise) Duplicar Módulo (blockrss) (Bloque fuentes RSS) Renombrar directorio blockrss a blockrss2 Renombrar fichero: blockrss.php a blockrss2.php ----------------------------------------------------------------------------------------------------- Abrir fichero: blockrss2.php Buscar esto: class Blockrss extends Module Y dejarlo así: class Blockrss2 extends Module Buscar esto: function __construct() { $this->name = 'blockrss'; $this->tab = 'front_office_features'; $this->need_instance = 0; parent::__construct(); $this->displayName = $this->l('RSS feed block'); $this->description = $this->l('Adds a block displaying an RSS feed.'); $this->version = '1.1'; $this->author = 'PrestaShop'; $this->error = false; $this->valid = false; } Y dejarlo asi: function __construct() { $this->name = 'blockrss2'; $this->tab = 'front_office_features'; $this->need_instance = 0; parent::__construct(); $this->displayName = $this->l('RSS feed block'); $this->description = $this->l('Adds a block displaying an RSS feed.'); $this->version = '1.1'; $this->author = 'PrestaShop'; $this->error = false; $this->valid = false; } Buscar esto: function install() { Configuration::updateValue('RSS_FEED_TITLE', $this->l('RSS feed')); Configuration::updateValue('RSS_FEED_NBR', 5); if (parent::install() == false OR $this->registerHook('leftColumn') == false OR $this->registerHook('header') == false) return false; return true; } Y dejar asi: function install() { Configuration::updateValue('RSS_FEED_TITLE2', $this->l('RSS feed')); Configuration::updateValue('RSS_FEED_NBR2', 5); if (parent::install() == false OR $this->registerHook('leftColumn') == false OR $this->registerHook('header') == false) return false; return true; } Buscar esto: public function getContent() { $output = '<h2>'.$this->displayName.'</h2>'; if (Tools::isSubmit('submitBlockRss')) { $errors = array(); $urlfeed = Tools::getValue('urlfeed'); $title = Tools::getValue('title'); $nbr = (int)Tools::getValue('nbr'); if ($urlfeed AND !Validate::isAbsoluteUrl($urlfeed)) $errors[] = $this->l('Invalid feed URL'); elseif (!$title OR empty($title) OR !Validate::isGenericName($title)) $errors[] = $this->l('Invalid title'); elseif (!$nbr OR $nbr <= 0 OR !Validate::isInt($nbr)) $errors[] = $this->l('Invalid number of feeds'); elseif (stristr($urlfeed, $_SERVER['HTTP_HOST'].__PS_BASE_URI__)) $errors[] = $this->l('You have selected a feed URL on your own website. Please choose another URL'); elseif (!($contents = Tools::file_get_contents($urlfeed))) $errors[] = $this->l('Feed is unreachable, check your URL'); /* Even if the feed was reachable, We need to make sure that the feed is well formated */ else { try { $xmlFeed = new XML_Feed_Parser($contents); } catch (XML_Feed_Parser_Exception $e) { $errors[] = $this->l('Invalid feed:').' '.$e->getMessage(); } } if (!sizeof($errors)) { Configuration::updateValue('RSS_FEED_URL', $urlfeed); Configuration::updateValue('RSS_FEED_TITLE', $title); Configuration::updateValue('RSS_FEED_NBR', $nbr); $output .= $this->displayConfirmation($this->l('Settings updated')); } else $output .= $this->displayError(implode('<br />', $errors)); } else { $errors = array(); if (stristr(Configuration::get('RSS_FEED_URL'), $_SERVER['HTTP_HOST'].__PS_BASE_URI__)) $errors[] = $this->l('You have selected a feed URL on your own website. Please choose another URL'); if (sizeof($errors)) $output .= $this->displayError(implode('<br />', $errors)); } return $output.$this->displayForm(); } Y dejarlo así: public function getContent() { $output = '<h2>'.$this->displayName.'</h2>'; if (Tools::isSubmit('submitBlockRss')) { $errors = array(); $urlfeed = Tools::getValue('urlfeed2'); $title = Tools::getValue('title2'); $nbr = (int)Tools::getValue('nbr2'); if ($urlfeed AND !Validate::isAbsoluteUrl($urlfeed)) $errors[] = $this->l('Invalid feed URL'); elseif (!$title OR empty($title) OR !Validate::isGenericName($title)) $errors[] = $this->l('Invalid title'); elseif (!$nbr OR $nbr <= 0 OR !Validate::isInt($nbr)) $errors[] = $this->l('Invalid number of feeds'); elseif (stristr($urlfeed, $_SERVER['HTTP_HOST'].__PS_BASE_URI__)) $errors[] = $this->l('You have selected a feed URL on your own website. Please choose another URL'); elseif (!($contents = Tools::file_get_contents($urlfeed))) $errors[] = $this->l('Feed is unreachable, check your URL'); /* Even if the feed was reachable, We need to make sure that the feed is well formated */ else { try { $xmlFeed = new XML_Feed_Parser($contents); } catch (XML_Feed_Parser_Exception $e) { $errors[] = $this->l('Invalid feed:').' '.$e->getMessage(); } } if (!sizeof($errors)) { Configuration::updateValue('RSS_FEED_URL2', $urlfeed); Configuration::updateValue('RSS_FEED_TITLE2', $title); Configuration::updateValue('RSS_FEED_NBR2', $nbr); $output .= $this->displayConfirmation($this->l('Settings updated')); } else $output .= $this->displayError(implode('<br />', $errors)); } else { $errors = array(); if (stristr(Configuration::get('RSS_FEED_URL2'), $_SERVER['HTTP_HOST'].__PS_BASE_URI__)) $errors[] = $this->l('You have selected a feed URL on your own website. Please choose another URL'); if (sizeof($errors)) $output .= $this->displayError(implode('<br />', $errors)); } return $output.$this->displayForm(); } --- Buscar esto: public function displayForm() { $output = ' <form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post"> <fieldset><legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Settings').'</legend> <label>'.$this->l('Block title').'</label> <div class="margin-form"> <input type="text" name="title" value="'.Tools::safeOutput(Tools::getValue('title', Configuration::get('RSS_FEED_TITLE'))).'" /> <p class="clear">'.$this->l('Create a title for the block (default: \'RSS feed\')').'</p> </div> <label>'.$this->l('Add a feed URL').'</label> <div class="margin-form"> <input type="text" size="85" name="urlfeed" value="'.Tools::safeOutput(Tools::getValue('urlfeed', Configuration::get('RSS_FEED_URL'))).'" /> <p class="clear">'.$this->l('Add the URL of the feed you want to use (sample: http://news.google.com/?output=rss)').'</p> </div> <label>'.$this->l('Number of threads displayed').'</label> <div class="margin-form"> <input type="text" size="5" name="nbr" value="'.(int)Tools::getValue('nbr', Configuration::get('RSS_FEED_NBR')).'" /> <p class="clear">'.$this->l('Number of threads displayed by the block (default value: 5)').'</p> </div> <center><input type="submit" name="submitBlockRss" value="'.$this->l('Save').'" class="button" /></center> </fieldset> </form>'; return $output; } Y dejarlo así: public function displayForm() { $output = ' <form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post"> <fieldset><legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Settings').'</legend> <label>'.$this->l('Block title').'</label> <div class="margin-form"> <input type="text" name="title2" value="'.Tools::safeOutput(Tools::getValue('title2', Configuration::get('RSS_FEED_TITLE2'))).'" /> <p class="clear">'.$this->l('Create a title for the block (default: \'RSS feed\')').'</p> </div> <label>'.$this->l('Add a feed URL').'</label> <div class="margin-form"> <input type="text" size="85" name="urlfeed2" value="'.Tools::safeOutput(Tools::getValue('urlfeed2', Configuration::get('RSS_FEED_URL2'))).'" /> <p class="clear">'.$this->l('Add the URL of the feed you want to use (sample: http://news.google.com/?output=rss)').'</p> </div> <label>'.$this->l('Number of threads displayed').'</label> <div class="margin-form"> <input type="text" size="5" name="nbr2" value="'.(int)Tools::getValue('nbr2', Configuration::get('RSS_FEED_NBR2')).'" /> <p class="clear">'.$this->l('Number of threads displayed by the block (default value: 5)').'</p> </div> <center><input type="submit" name="submitBlockRss" value="'.$this->l('Save').'" class="button" /></center> </fieldset> </form>'; return $output; } Buscar: function hookLeftColumn($params) { // Conf $title = strval(Configuration::get('RSS_FEED_TITLE')); $url = strval(Configuration::get('RSS_FEED_URL')); $nb = (int)(Configuration::get('RSS_FEED_NBR')); // Getting data $rss_links = array(); if ($url && ($contents = Tools::file_get_contents($url))) try { if (@$src = new XML_Feed_Parser($contents)) { for ($i = 0; $i < ($nb ? $nb : 5); $i++) { if (@$item = $src->getEntryByOffset($i)) { $xmlValues = array(); foreach(self::$xmlFields as $xmlField) { $xmlValues[$xmlField] = $item->__get($xmlField); } $xmlValues['enclosure'] = $item->getEnclosure(); # Compatibility $xmlValues['url'] = $xmlValues['link']; $rss_links[] = $xmlValues; } } } } catch (XML_Feed_Parser_Exception $e) { Tools::dieOrLog(sprintf($this->l('Error: invalid RSS feed in "blockrss" module: %s'), $e->getMessage()), false); } // Display smarty $this->smarty->assign(array('title' => ($title ? $title : $this->l('RSS feed')), 'rss_links' => $rss_links)); return $this->display(__FILE__, 'blockrss.tpl'); } Dejar: function hookLeftColumn($params) { // Conf $title = strval(Configuration::get('RSS_FEED_TITLE2')); $url = strval(Configuration::get('RSS_FEED_URL2')); $nb = (int)(Configuration::get('RSS_FEED_NBR2')); // Getting data $rss_links = array(); if ($url && ($contents = Tools::file_get_contents($url))) try { if (@$src = new XML_Feed_Parser($contents)) { for ($i = 0; $i < ($nb ? $nb : 5); $i++) { if (@$item = $src->getEntryByOffset($i)) { $xmlValues = array(); foreach(self::$xmlFields as $xmlField) { $xmlValues[$xmlField] = $item->__get($xmlField); } $xmlValues['enclosure'] = $item->getEnclosure(); # Compatibility $xmlValues['url'] = $xmlValues['link']; $rss_links[] = $xmlValues; } } } } catch (XML_Feed_Parser_Exception $e) { Tools::dieOrLog(sprintf($this->l('Error: invalid RSS feed in "blockrss" module: %s'), $e->getMessage()), false); } // Display smarty $this->smarty->assign(array('title2' => ($title ? $title : $this->l('RSS feed')), 'rss_links2' => $rss_links)); return $this->display(__FILE__, 'blockrss2.tpl'); } ----------------------------------------- Renombrar fichero: blockrss.tpl a blockrss2.tpl Editar: blockrss2.tpl Buscando esto: <!-- Block RSS module--> <div id="rss_block_left" class="block"> <h4 class="title_block">{$title}</h4> <div class="block_content"> {if $rss_links} <ul> {foreach from=$rss_links item='rss_link'} <li><a href="{$rss_link.url}">{$rss_link.title}</a></li> {/foreach} </ul> {else} <p>{l s='No RSS feed added' mod='blockrss'}</p> {/if} </div> </div> <!-- /Block RSS module--> Y dejandolo asi: <!-- Block RSS module--> <div id="rss_block_left" class="block"> <h4 class="title_block">{$title2}</h4> <div class="block_content"> {if $rss_links2} <ul> {foreach from=$rss_links2 item='rss_link2'} <li><a href="{$rss_link2.url}">{$rss_link2.title}</a></li> {/foreach} </ul> {else} <p>{l s='No RSS feed added' mod='blockrss2'}</p> {/if} </div> </div> <!-- /Block RSS module--> ---------------------- Editar ficheros: (idiomas, este es un ejemplo para el del idioma Español) /blockrss2/translations/es.php Buscar: <?php global $_MODULE; $_MODULE = array(); $_MODULE['<{blockrss}prestashop>blockrss_2516c13a12d3dbaf4efa88d9fce2e7da'] = 'Bloque fuentes RSS'; $_MODULE['<{blockrss}prestashop>blockrss_04396664ce529aa4204b0f7ad753fad1'] = 'Añadir o bloquear con un campo de búsqueda rápida'; $_MODULE['<{blockrss}prestashop>blockrss_9680162225162baf2a085dfdc2814deb'] = 'fuentes RSS'; $_MODULE['<{blockrss}prestashop>blockrss_6706b6d8ba45cc4f0eda0506ba1dc3c8'] = 'URL de fuente incorrecta'; $_MODULE['<{blockrss}prestashop>blockrss_36ed65ce17306e812fd68d9f634c0c57'] = 'Título incorrecto'; $_MODULE['<{blockrss}prestashop>blockrss_1b3d34e25aef32a3c8daddfff856577f'] = 'Número de fuentes incorrecto'; $_MODULE['<{blockrss}prestashop>blockrss_e423bd72f5aa1be13216c5abbd3deb45'] = 'Ha seleccionado su propio feed a su sitio en al url. Por favor seleccione otro'; $_MODULE['<{blockrss}prestashop>blockrss_bef637cd0e222a8b56676cb64ce75258'] = 'El feed es inalcanzable. Seleccione otro'; $_MODULE['<{blockrss}prestashop>blockrss_1844ef1bfaa030dc8423c4645a43525c'] = 'Feed inválido'; $_MODULE['<{blockrss}prestashop>blockrss_c888438d14855d7d96a2724ee9c306bd'] = 'Configuración actualizada'; $_MODULE['<{blockrss}prestashop>blockrss_f4f70727dc34561dfde1a3c529b6205c'] = 'Configuración'; $_MODULE['<{blockrss}prestashop>blockrss_b22c8f9ad7db023c548c3b8e846cb169'] = 'Título del bloque'; $_MODULE['<{blockrss}prestashop>blockrss_2343a40bdffd8c7a6317b6d98c2b1042'] = 'Cree un título para el bloque (por defecto\'RSS feed\')'; $_MODULE['<{blockrss}prestashop>blockrss_402d00ca8e4f0fff26fc24ee9ab8e82b'] = 'Añadir URL de la fuente'; $_MODULE['<{blockrss}prestashop>blockrss_695d0986205c1ce17d03b026feb78c97'] = 'Añada la url del feed a utilizar (ejemplo: http://news.google.com/?output=rss)'; $_MODULE['<{blockrss}prestashop>blockrss_ff9aa540e20285875ac8b190a3cb7ccf'] = 'Número de hilos mostrados'; $_MODULE['<{blockrss}prestashop>blockrss_f33725e23a017705ad35897e849a4db4'] = 'Número de hilos mostrados en cada bloque (por defecto 5)'; $_MODULE['<{blockrss}prestashop>blockrss_c9cc8cce247e49bae79f15173ce97354'] = 'Guardar'; $_MODULE['<{blockrss}prestashop>blockrss_0a1c629f0e86804a9e165f4b1ee399b7'] = 'Error: RSS feed en \"blockrss\" módulo: %s'; $_MODULE['<{blockrss}prestashop>blockrss_10fd25dcd3353c0ba3731d4a23657f2e'] = 'No se han añadido fuentes RSS'; Y dejarlo así:: <?php global $_MODULE; $_MODULE = array(); $_MODULE['<{blockrss2}prestashop>blockrss2_2516c13a12d3dbaf4efa88d9fce2e7da'] = 'Bloque fuentes RSS (2)'; $_MODULE['<{blockrss2}prestashop>blockrss2_04396664ce529aa4204b0f7ad753fad1'] = 'Añadir o bloquear con un campo de búsqueda rápida'; $_MODULE['<{blockrss2}prestashop>blockrss2_9680162225162baf2a085dfdc2814deb'] = 'fuentes RSS'; $_MODULE['<{blockrss2}prestashop>blockrss2_6706b6d8ba45cc4f0eda0506ba1dc3c8'] = 'URL de fuente incorrecta'; $_MODULE['<{blockrss2}prestashop>blockrss2_36ed65ce17306e812fd68d9f634c0c57'] = 'Título incorrecto'; $_MODULE['<{blockrss2}prestashop>blockrss2_1b3d34e25aef32a3c8daddfff856577f'] = 'Número de fuentes incorrecto'; $_MODULE['<{blockrss2}prestashop>blockrss2_e423bd72f5aa1be13216c5abbd3deb45'] = 'Ha seleccionado su propio feed a su sitio en al url. Por favor seleccione otro'; $_MODULE['<{blockrss2}prestashop>blockrss2_bef637cd0e222a8b56676cb64ce75258'] = 'El feed es inalcanzable. Seleccione otro'; $_MODULE['<{blockrss2}prestashop>blockrss2_1844ef1bfaa030dc8423c4645a43525c'] = 'Feed inválido'; $_MODULE['<{blockrss2}prestashop>blockrss2_c888438d14855d7d96a2724ee9c306bd'] = 'Configuración actualizada'; $_MODULE['<{blockrss2}prestashop>blockrss2_f4f70727dc34561dfde1a3c529b6205c'] = 'Configuración'; $_MODULE['<{blockrss2}prestashop>blockrss2_b22c8f9ad7db023c548c3b8e846cb169'] = 'Título del bloque'; $_MODULE['<{blockrss2}prestashop>blockrss2_2343a40bdffd8c7a6317b6d98c2b1042'] = 'Cree un título para el bloque (por defecto\'RSS feed\')'; $_MODULE['<{blockrss2}prestashop>blockrss2_402d00ca8e4f0fff26fc24ee9ab8e82b'] = 'Añadir URL de la fuente'; $_MODULE['<{blockrss2}prestashop>blockrss2_695d0986205c1ce17d03b026feb78c97'] = 'Añada la url del feed a utilizar (ejemplo: http://news.google.com/?output=rss)'; $_MODULE['<{blockrss2}prestashop>blockrss2_ff9aa540e20285875ac8b190a3cb7ccf'] = 'Número de hilos mostrados'; $_MODULE['<{blockrss2}prestashop>blockrss2_f33725e23a017705ad35897e849a4db4'] = 'Número de hilos mostrados en cada bloque (por defecto 5)'; $_MODULE['<{blockrss2}prestashop>blockrss2_c9cc8cce247e49bae79f15173ce97354'] = 'Guardar'; $_MODULE['<{blockrss2}prestashop>blockrss2_0a1c629f0e86804a9e165f4b1ee399b7'] = 'Error: RSS feed en \"blockrss\" módulo: %s'; $_MODULE['<{blockrss2}prestashop>blockrss2_10fd25dcd3353c0ba3731d4a23657f2e'] = 'No se han añadido fuentes RSS'; Eliminar el: /blockrss2/config.xml ya que cuando lo instalemos el duplicado de forma automático. --- Ultimo paso comprimir el directorio blockrss2 a blockrss2.zip Ahora lo subes desde la pestaña "Módulos -> Módulos" 2 Link to comment Share on other sites More sharing options...
Recommended Posts