Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Мультиязычность для мета полей :)) Не получается сделать


Recommended Posts

Мужики, хелп ми!!))), такая ситуация, имеется опенкарт 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>

 

И так в базу всё записывается, но походу в контроллере я затупил и вывести не могу (

А потом мнё еще надо ж как-то чтоб тайтл заменялся в зависимости от языка, но я думаю я сделаю :))

 

Надіслати
Поділитися на інших сайтах


У меня мета-данные остались в таблице setting

Код admin/controller/setting/setting.php Контроллер:

if (isset($this->request->post['config_meta_title'])) {
	$data['config_meta_title'] = $this->request->post['config_meta_title'];
} elseif ($this->config->get('config_meta_title')) {
	$data['config_meta_title'] = $this->config->get('config_meta_title');
} else {
	$data['config_meta_title'] = array();
}
if (isset($this->request->post['config_meta_description'])) {
	$data['config_meta_description'] = $this->request->post['config_meta_description'];
} elseif ($this->config->get('config_meta_description')) {
	$data['config_meta_description'] = $this->config->get('config_meta_description');
} else {
	$data['config_meta_description'] = array();
}
if (isset($this->request->post['config_meta_keyword'])) {
	$data['config_meta_keyword'] = $this->request->post['config_meta_keyword'];
} elseif ($this->config->get('config_meta_keyword')) {
	$data['config_meta_keyword'] = $this->config->get('config_meta_keyword');
} else {
	$data['config_meta_keyword'] = array();
}

шаблоне админки admin/view/template/setting/setting.tpl

<?php foreach ($languages as $language) { ?>
<div class="form-group">
	<div class="row">
		<label class="col-lg-3 col-form" for="input-meta-title-<?php echo $language['language_id']; ?>"><?php echo $entry_meta_title; ?></label>
		<div class="col-lg-9"><input type="text" name="config_meta_title[<?php echo $language['language_id']; ?>]" value="<?php echo isset($config_meta_title[$language['language_id']]) ? $config_meta_title[$language['language_id']] : ''; ?>" placeholder="<?php echo $entry_meta_title; ?>" id="input-meta-title-<?php echo $language['language_id']; ?>" class="form-control"></div>
	</div>
</div>
<div class="form-group">
	<div class="row">
		<label class="col-lg-3 col-form" for="input-meta-description-<?php echo $language['language_id']; ?>"><?php echo $entry_meta_description; ?></label>
		<div class="col-lg-9">
			<textarea name="config_meta_description[<?php echo $language['language_id']; ?>]" rows="5" placeholder="<?php echo $entry_meta_description; ?>" id="input-meta-description-<?php echo $language['language_id']; ?>" class="form-control"><?php echo isset($config_meta_description[$language['language_id']]) ? $config_meta_description[$language['language_id']] : ''; ?></textarea>
		</div>
	</div>
</div>
<div class="form-group">
	<div class="row">
		<label class="col-lg-3 col-form" for="input-meta-keyword-<?php echo $language['language_id']; ?>"><?php echo $entry_meta_keyword; ?></label>
		<div class="col-lg-9"><input type="text" name="config_meta_keyword[<?php echo $language['language_id']; ?>]" value="<?php echo isset($config_meta_keyword[$language['language_id']]) ? $config_meta_keyword[$language['language_id']] : ''; ?>" placeholder="<?php echo $entry_meta_keyword; ?>" id="input-meta-keyword-<?php echo $language['language_id']; ?>" class="form-control"></div>
	</div>
</div>
<?php } ?>

 

Надіслати
Поділитися на інших сайтах


8 часов назад, DM8985 сказал:

У меня мета-данные остались в таблице setting

Код admin/controller/setting/setting.php Контроллер:


if (isset($this->request->post['config_meta_title'])) {
	$data['config_meta_title'] = $this->request->post['config_meta_title'];
} elseif ($this->config->get('config_meta_title')) {
	$data['config_meta_title'] = $this->config->get('config_meta_title');
} else {
	$data['config_meta_title'] = array();
}
if (isset($this->request->post['config_meta_description'])) {
	$data['config_meta_description'] = $this->request->post['config_meta_description'];
} elseif ($this->config->get('config_meta_description')) {
	$data['config_meta_description'] = $this->config->get('config_meta_description');
} else {
	$data['config_meta_description'] = array();
}
if (isset($this->request->post['config_meta_keyword'])) {
	$data['config_meta_keyword'] = $this->request->post['config_meta_keyword'];
} elseif ($this->config->get('config_meta_keyword')) {
	$data['config_meta_keyword'] = $this->config->get('config_meta_keyword');
} else {
	$data['config_meta_keyword'] = array();
}

шаблоне админки admin/view/template/setting/setting.tpl


<?php foreach ($languages as $language) { ?>
<div class="form-group">
	<div class="row">
		<label class="col-lg-3 col-form" for="input-meta-title-<?php echo $language['language_id']; ?>"><?php echo $entry_meta_title; ?></label>
		<div class="col-lg-9"><input type="text" name="config_meta_title[<?php echo $language['language_id']; ?>]" value="<?php echo isset($config_meta_title[$language['language_id']]) ? $config_meta_title[$language['language_id']] : ''; ?>" placeholder="<?php echo $entry_meta_title; ?>" id="input-meta-title-<?php echo $language['language_id']; ?>" class="form-control"></div>
	</div>
</div>
<div class="form-group">
	<div class="row">
		<label class="col-lg-3 col-form" for="input-meta-description-<?php echo $language['language_id']; ?>"><?php echo $entry_meta_description; ?></label>
		<div class="col-lg-9">
			<textarea name="config_meta_description[<?php echo $language['language_id']; ?>]" rows="5" placeholder="<?php echo $entry_meta_description; ?>" id="input-meta-description-<?php echo $language['language_id']; ?>" class="form-control"><?php echo isset($config_meta_description[$language['language_id']]) ? $config_meta_description[$language['language_id']] : ''; ?></textarea>
		</div>
	</div>
</div>
<div class="form-group">
	<div class="row">
		<label class="col-lg-3 col-form" for="input-meta-keyword-<?php echo $language['language_id']; ?>"><?php echo $entry_meta_keyword; ?></label>
		<div class="col-lg-9"><input type="text" name="config_meta_keyword[<?php echo $language['language_id']; ?>]" value="<?php echo isset($config_meta_keyword[$language['language_id']]) ? $config_meta_keyword[$language['language_id']] : ''; ?>" placeholder="<?php echo $entry_meta_keyword; ?>" id="input-meta-keyword-<?php echo $language['language_id']; ?>" class="form-control"></div>
	</div>
</div>
<?php } ?>

 

 

А модель setting по стандарту? можешь оттуда тоже код кинуть, пожалуйста. А то я ваще туплю жестко :(

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.