En la entrada “Crear un módulo para prestashop” os enseñamos como crear dicho modulo, ahora os vamos a enseñar como podemos crear la ventana de configuración del módulo. Para crear la ventana o pestaña de configuración de un módulo es muy sencillo, basta con añadir la función:

public function getContent(){

}

Si bien con esto únicamente lo que hacemos es crear dicha pantalla, esta pantalla de configuración aparecerá vacía. ¿Como hacemos para que salga algo en dicha ventana? Lo que vamos a ver es como poner un simple cuadro de texto en la configuración de nuestro modulo, lo primero que debemos hacer es declarar las variables en la función install con Configuration::updateValue(‘MODULOPRUEBA_TEXTO’,”), asi usamos la variable “MODULOPRUEBA_TEXTO” y borrarla en la funcion uninstall con Configuration::deleteByName(‘MODULOPRUEBA_TEXTO’), quedando algo similar a:

         public function install(){
		if(parent::install()==false OR !$this->registerHook('leftColumn') OR !$this->registerHook('rightColumn') OR !Configuration::updateValue('MODULOPRUEBA_TEXTO',''))
		{
			return false;
		}else{
			return true;
			}
			
	}
	public function uninstall(){
		return (parent::uninstall() AND Configuration::deleteByName('MODULOPRUEBA_TEXTO'));
	}

Para no complicarnos mucho con los campos de la configuración usaremos la función renderForm que nos permite crear un formualrio de forma sencilla, modificamos la funcion getContent y añadiremos getConfigFieldsValue quedando algo similar a:

         public function getContent(){
		$output='';
		if (Tools::isSubmit('submitModule')){
			Configuration::updateValue('MODULOPRUEBA_TEXTO',Tools::getValue('moduloprueba_texto',''));
			$this->_clearCache('prueba.tpl');
			Tools::redirectAdmin($this->context->link->getAdminLink('AdminModules').'&configure='.$this->name.'&tab_module='.$this->tab.'&conf=4&module_name='.$this->name);
		}
		return $output.$this->renderForm();
	}
	public function renderForm(){
		$fields_form= array(
			'form' =>array(
				        'legend'=>array(
					'title'=>$this->l('Configuracion'),
					'icon'=>'icon-cogs'
					),
			'input' => array(
						array(
							'type' => 'text',
							'label' => $this->l('Pon tu texto'),
							'name' => 'moduloprueba_texto',
							'dexc' => $this->l('Introduce un texto a visualizar'),
						)
					),
			'submit' => array(
					'title' => $this->l('Guardar'),
					)
			)
		);
		$helper = new HelperForm();
		$helper->show_toolbar = false;
		$helper->table =  $this->table;
		$lang = new Language((int)Configuration::get('PS_LANG_DEFAULT'));
		$helper->default_form_language = $lang->id;
		$helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0;
		$helper->identifier = $this->identifier;
		$helper->submit_action = 'submitModule';
		$helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name;
		$helper->token = Tools::getAdminTokenLite('AdminModules');
		$helper->tpl_vars = array(
			'fields_value' => $this->getConfigFieldsValues(),
			'languages' => $this->context->controller->getLanguages(),
			'id_language' => $this->context->language->id
		);

		return $helper->generateForm(array($fields_form));
	}
	public function getConfigFieldsValues(){
		return array ('moduloprueba_texto' => Tools::getValue('moduloprueba_texto',Configuration::get('MODULOPRUEBA_TEXTO')),);
	}

En la función getContent llamamos al renderForm que es el que se encargara de mostrarnos el formulario de configuración de nuestro módulo. Hay una variable que es fields_form que son los campos del formularios, esta variable es un array que contiene tres “casillas” un form que es el titulo de la ventana de configuración, un submit que el el botón de guardar y otro array llamado input que es donde meteremos todos los campos de configuración del modulo. El resto de lineas son comunes a todos los modulos y son las encargadas de que se visualice el formulario de configuración de nuestro modulo.

Para usar dicha “casilla” o variable moduloprueba_texto (solo hemos usado una en el campo input) se usa con Configuration::get(‘MODULOPRUEBA_TEXTO”), podemos usarlo por ejemplo en la funcion hookLeftColumn, por ejemplo

public function hookLeftColumn($params){
		global $smarty;
		$texto=Configuration::get('MODULOPRUEBA_TEXTO');
		$smarty->assign('vertexto',$texto);
		return $this->display(__FILE__, 'prueba.tpl');
		
	}

Puedes ver un video con todos los pasos en:

 

 

Pin It on Pinterest