Мужики, хелп ми!!))), такая ситуация, имеется опенкарт 2.3
Пытаюсь сделать мультиязычность для мета полей главной страницы, но что-то беда, в базу сохраняет значение, а в поле в админке оно визуально не выводится (пусто = https://prnt.sc/shh6dv)
Делал всё по аналогии из модуля блога - статьи, там мета поля мультиязычные
Код admin/model/setting/setting.php Модель:
В getSetting функции я вписал:
foreach ($data['setting_seo'] as $language_id => $value) {
$this->db->query("INSERT INTO " . DB_PREFIX . "setting_seo SET store_id = '" . (int)$store_id . "', language_id = '" . (int)$language_id . "', config_meta_title = '" . $this->db->escape($value['config_meta_title']) . "', config_meta_description = '" . $this->db->escape($value['config_meta_description']) . "', config_meta_keyword = '" . $this->db->escape($value['config_meta_keyword']) . "'");
}
В editSetting функции я вписал:
$this->db->query("DELETE FROM " . DB_PREFIX . "setting_seo WHERE store_id = '" . (int)$store_id . "'");
foreach ($data['setting_seo'] as $language_id => $value) {
$this->db->query("INSERT INTO " . DB_PREFIX . "setting_seo SET store_id = '" . (int)$store_id . "', language_id = '" . (int)$language_id . "', config_meta_title = '" . $this->db->escape($value['config_meta_title']) . "', config_meta_description = '" . $this->db->escape($value['config_meta_description']) . "', config_meta_keyword = '" . $this->db->escape($value['config_meta_keyword']) . "'");
}
Создал новую функцию
public function getSettingSeo($store_id) {
$seo_setting_data = array();
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "setting_seo WHERE store_id = '" . (int)$store_id . "'");
foreach ($query->rows as $result) {
$seo_setting_data[$result['language_id']] = array(
'config_meta_title' => $result['config_meta_title'],
'config_meta_description' => $result['config_meta_description'],
'config_meta_keyword' => $result['config_meta_keyword']
);
}
return $seo_setting_data;
}
Код admin/controller/setting/setting.php Контроллер:
$this->load->model('localisation/language');
$data['languages'] = $this->model_localisation_language->getLanguages();
if (isset($this->request->post['setting_seo'])) {
$data['setting_seo'] = $this->request->post['setting_seo'];
} elseif (isset($this->request->get['store_id'])) {
$data['setting_seo'] = $this->model_setting_setting->getSettingSeo($this->request->get['store_id']);
} else {
$data['setting_seo'] = array();
}
$language_id = $this->config->get('config_language_id');
if (isset($data['setting_seo'][$language_id]['config_meta_title'])) {
$data['heading_title'] = $data['setting_seo'][$language_id]['config_meta_title'];
}
Ну и собственно как выводится в шаблоне админки admin/view/template/setting/setting.tpl
<div class="tab-pane active" id="tab_home_languages">
<ul class="nav nav-tabs" id="language">
<?php foreach ($languages as $language) { ?>
<li><a href="#language<?php echo $language['language_id']; ?>" data-toggle="tab"><img src="language/<?php echo $language['code']; ?>/<?php echo $language['code']; ?>.png" title="<?php echo $language['name']; ?>" /> <?php echo $language['name']; ?></a></li>
<?php } ?>
</ul>
<div class="tab-content">
<?php foreach ($languages as $language) { ?>
<div class="tab-pane" id="language<?php echo $language['language_id']; ?>">
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-config_meta_title<?php echo $language['language_id']; ?>"><?php echo $entry_meta_title; ?></label>
<div class="col-sm-10">
<input type="text" name="setting_seo[<?php echo $language['language_id']; ?>][config_meta_title]" value="<?php echo isset($setting_seo[$language['language_id']]) ? $setting_seo[$language['language_id']]['config_meta_title'] : ''; ?>" placeholder="<?php echo $entry_meta_title; ?>" id="input-config_meta_title<?php echo $language['language_id']; ?>" class="form-control" />
<?php if (isset($error_name[$language['language_id']])) { ?>
<div class="text-danger"><?php echo $error_name[$language['language_id']]; ?></div>
<?php } ?>
</div>
</div>
</div>
<?php } ?>
</div>
</div>
И так в базу всё записывается, но походу в контроллере я затупил и вывести не могу (
А потом мнё еще надо ж как-то чтоб тайтл заменялся в зависимости от языка, но я думаю я сделаю :))