Ich erstelle ein einfaches Modul für die Anzeige von String in der linken Spalte, es funktioniert, aber ich möchte es erweitern Möglichkeit diesen Text in allen verfügbaren Sprache in meinem Shop hinzufügen. Momentan habe ich Modul-Konfigurationsseite nur für String eingegeben, wie kann ich neben dieser Schaltfläche mit Sprachauswahl hinzufügen und wie in der Datenbank speichern?Hinzufügen multilangage zu Modul PrestaShop
if (!defined('_PS_VERSION_')) {
exit;
}
class Sometext extends Module
{
protected $config_form = false;
public function __construct()
{
$this->name = 'sometext';
$this->tab = 'front_office_features';
$this->version = '1.0.0';
$this->author = 'AgnesTom';
$this->need_instance = 1;
/**
* Set $this->bootstrap to true if your module is compliant with bootstrap (PrestaShop 1.6)
*/
$this->bootstrap = true;
parent::__construct();
$this->displayName = $this->l('sometext');
$this->description = $this->l('some text in left column');
}
/**
* Don't forget to create update methods if needed:
* http://doc.prestashop.com/display/PS16/Enabling+the+Auto-Update
*/
public function install()
{
Configuration::updateValue('SOMETEXT_TEXT', false);
return parent::install() &&
$this->registerHook('header') &&
$this->registerHook('backOfficeHeader') &&
$this->registerHook('displayLeftColumn');
}
public function uninstall()
{
Configuration::deleteByName('SOMETEXT_TEXT');
return parent::uninstall();
}
/**
* Load the configuration form
*/
public function getContent()
{
/**
* If values have been submitted in the form, process.
*/
if (((bool)Tools::isSubmit('submitSometextModule')) == true) {
$this->postProcess();
}
$this->context->smarty->assign('module_dir', $this->_path);
$output = $this->context->smarty->fetch($this->local_path.'views/templates/admin/configure.tpl');
return $output.$this->renderForm();
}
/**
* Create the form that will be displayed in the configuration of your module.
*/
protected function renderForm()
{
$helper = new HelperForm();
$helper->show_toolbar = false;
$helper->table = $this->table;
$helper->module = $this;
$helper->default_form_language = $this->context->language->id;
$helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG', 0);
$helper->identifier = $this->identifier;
$helper->submit_action = 'submitSometextModule';
$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->getConfigFormValues(), /* Add values for your inputs */
'languages' => $this->context->controller->getLanguages(),
'id_language' => $this->context->language->id,
);
return $helper->generateForm(array($this->getConfigForm()));
}
/**
* Create the structure of your form.
*/
protected function getConfigForm()
{
return array(
'form' => array(
'legend' => array(
'title' => $this->l('Settings'),
'icon' => 'icon-cogs',
),
'input' => array(
array(
'col' => 3,
'type' => 'text',
'prefix' => '<i class="icon icon-envelope"></i>',
'desc' => $this->l('Enter a text'),
'name' => 'SOMETEXT_TEXT',
'label' => $this->l('Email'),
),
),
'submit' => array(
'title' => $this->l('Save'),
),
),
);
}
/**
* Set values for the inputs.
*/
protected function getConfigFormValues()
{
return array(
'SOMETEXT_TEXT' => Configuration::get('SOMETEXT_TEXT', 'Some text here'),
);
}
/**
* Save form data.
*/
protected function postProcess()
{
$form_values = $this->getConfigFormValues();
foreach (array_keys($form_values) as $key) {
Configuration::updateValue($key, Tools::getValue($key));
}
}
/**
* Add the CSS & JavaScript files you want to be loaded in the BO.
*/
public function hookBackOfficeHeader()
{
if (Tools::getValue('module_name') == $this->name) {
$this->context->controller->addJS($this->_path.'views/js/back.js');
$this->context->controller->addCSS($this->_path.'views/css/back.css');
}
}
/**
* Add the CSS & JavaScript files you want to be added on the FO.
*/
public function hookHeader()
{
$this->context->controller->addJS($this->_path.'/views/js/front.js');
$this->context->controller->addCSS($this->_path.'/views/css/front.css');
}
public function hookDisplayLeftColumn()
{
$some_string = Configuration::get('SOMETEXT_TEXT');
if (isset($some_string)) {
$this->context->smarty->assign('some_string', $some_string);
return $this->display(__FILE__, '/views/templates/front/front.tpl');
}
}
}
ich nicht in der Lage bin mir eine Demo zu bekommen, die PrestaShop-Version verwenden Sie? –
Ich habe den obigen Code bearbeitet, jetzt ist es korrekt, es sollte in Version 1.5 und 1.6 von Prestashop funktionieren. –