Hi @Catalina,
You must decide where you want to implement this module.
- Header, footer, boxe ?
- You can look after an exististing module and you can include the information that you want inside.
- Generally you have this inside the module(structure)
- module_header_google_translate (case of header)
he_header_google_translate.php
content (directory)
header_google_translate.php (html content)
and the languages synthaxe (do forget to reset your language in admin if you make a mistake because it's included in cache)
On this example :
For he_header_google_translate.php
<?php
/**
*
* @copyright 2008 - https://www.clicshopping.org
* @Brand : ClicShopping(Tm) at Inpi all right Reserved
* @Licence GPL 2 & MIT
* @licence MIT - Portion of osCommerce 2.4
* @Info : https://www.clicshopping.org/forum/trademark/
*
*/
use ClicShopping\OM\Registry;
use ClicShopping\OM\CLICSHOPPING;
class module_header_google_translate {
public $code;
public $group;
public $title;
public $description;
public $sort_order;
public $enabled = false;
public $pages;
public function __construct() {
$this->code = get_class($this);
$this->group = basename(__DIR__);
$this->title = CLICSHOPPING::getDef('module_header_google_translate_title');
$this->description = CLICSHOPPING::getDef('module_header_google_translate_description');
if ( defined('MODULE_HEADER_GOOGLE_TRANSLATE_STATUS') ) {
$this->sort_order = MODULE_HEADER_GOOGLE_TRANSLATE_SORT_ORDER;
$this->enabled = (MODULE_HEADER_GOOGLE_TRANSLATE_STATUS == 'True');
$this->pages = MODULE_BOXES_GOOGLE_TRANSLATE_DISPLAY_PAGES;
}
}
public function execute() {
$CLICSHOPPING_Template = Registry::get('Template');
$content_width = (int)MODULE_HEADER_GOOGLE_TRANSLATE_CONTENT_WIDTH;
$data = '<!-- header_google_translate start -->' . "\n";
$data .= '<script type="text/javascript">';
$data .= 'function googleTranslateElementInit() {';
$data .= 'new google.translate.TranslateElement({pageLanguage: \'en\'}, \'google_translate_element\');';
$data .= '}';
$data .= '</script>' . "\n";
$data .='<script defer src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>' . "\n";
ob_start();
require_once($CLICSHOPPING_Template->getTemplateModules($this->group . '/content/header_google_translate'));
$data .= ob_get_clean();
$data .='<!-- header_google_translate end -->' . "\n";
$CLICSHOPPING_Template->addBlock($data, $this->group);
}
public function isEnabled() {
return $this->enabled;
}
public function check() {
return defined('MODULE_HEADER_GOOGLE_TRANSLATE_STATUS');
}
public function install() {
$CLICSHOPPING_Db = Registry::get('Db');
$CLICSHOPPING_Db->save('configuration', [
'configuration_title' => 'Do you want to enable this module ?',
'configuration_key' => 'MODULE_HEADER_GOOGLE_TRANSLATE_STATUS',
'configuration_value' => 'True',
'configuration_description' => 'Do you want to enable this module in your shop ?',
'configuration_group_id' => '6',
'sort_order' => '1',
'set_function' => 'clic_cfg_set_boolean_value(array(\'True\', \'False\'))',
'date_added' => 'now()'
]
);
$CLICSHOPPING_Db->save('configuration', [
'configuration_title' => 'Please indicate the width of the content',
'configuration_key' => 'MODULE_HEADER_GOOGLE_TRANSLATE_CONTENT_WIDTH',
'configuration_value' => '12',
'configuration_description' => 'Please specify a display width',
'configuration_group_id' => '6',
'sort_order' => '2',
'set_function' => 'clic_cfg_set_content_module_width_pull_down',
'date_added' => 'now()'
]
);
$CLICSHOPPING_Db->save('configuration', [
'configuration_title' => 'Sort order',
'configuration_key' => 'MODULE_HEADER_GOOGLE_TRANSLATE_SORT_ORDER',
'configuration_value' => '500',
'configuration_description' => 'Sort order of display. Lowest is displayed first. The sort order must be different on every module',
'configuration_group_id' => '6',
'sort_order' => '3',
'set_function' => '',
'date_added' => 'now()'
]
);
$CLICSHOPPING_Db->save('configuration', [
'configuration_title' => 'Please indicate where boxing should be displayed',
'configuration_key' => 'MODULE_HEADER_GOOGLE_TRANSLATE_DISPLAY_PAGES',
'configuration_value' => 'all',
'configuration_description' => 'Sélectionnez les pages où la boxe doit être présente',
'configuration_group_id' => '6',
'sort_order' => '7',
'set_function' => 'clic_cfg_set_select_pages_list',
'date_added' => 'now()'
]
);
}
public function remove() {
return Registry::get('Db')->exec('delete from :table_configuration where configuration_key in ("' . implode('", "', $this->keys()) . '")');
}
public function keys() {
return array('MODULE_HEADER_GOOGLE_TRANSLATE_STATUS',
'MODULE_HEADER_GOOGLE_TRANSLATE_CONTENT_WIDTH',
'MODULE_HEADER_GOOGLE_TRANSLATE_SORT_ORDER',
'MODULE_HEADER_GOOGLE_TRANSLATE_DISPLAY_PAGES'
);
}
}
Now the content : header_google_translate.php
<div class="col-md-<?php echo $content_width; ?>">
<div class="separator"></div>
<div id="google_translate_element"></div>
</div>
At the end the language : languages/english/modules/modules_header/he_header_google_translate.php
module_header_google_translate_title = Do you want to enable google translate language module ?
module_header_google_translate_description = Display google translate language
Same for the french language.
Now it's possible to improve the module and fix the script inside the footer by this code
$footer_tag = '<script defer>';
$footer_tag .= 'function googleTranslateElementInit() {';
$footer_tag .= 'new google.translate.TranslateElement({pageLanguage: \'en\'}, \'google_translate_element\');';
$footer_tag .= '}';
$footer_tag .= '</script>' . "\n";
$footer_tag .= '<script defer src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>';
$CLICSHOPPING_Template->addBlock($footer_tag, 'footer_scripts');
10 mn to do that.