@DoodleJump
Начинающий верстальщик

Как вывести свой мультиязычный текст из админки в футер Opencart 3?

Добрый день, ломаю голову как вывести текст в футер из админки:
В контроллере темы default.php (в админке) добавил код
if (isset($this->request->post['theme_default_footer_text'])) {
			$data['theme_default_footer_text'] = $this->request->post['theme_default_footer_text'];
		} elseif (isset($setting_info['theme_default_footer_text'])) {
			$data['theme_default_footer_text'] = $setting_info['theme_default_footer_text'];
		} else {
			$data['theme_default_footer_text'] = false;
		}

В файле темы default.twig добавил код:
<div class="form-group">
                <label class="col-sm-3 control-label">Текстовый блок</label>
                <div class="col-sm-9">
                  {% for language in languages %} 
                  <div class="input-group"><span class="input-group-addon"><img src="language/{{ language.code }}/{{ language.code }}.png" title="{{ language.name }}" /></span>
                    <textarea name="theme_default_footer_text[{{ language.language_id }}][text]" rows="5" placeholder="Текстовый блок" class="form-control">{{ theme_default_footer_text[language.language_id] ? theme_default_footer_text[language.language_id].text }}</textarea>
				  </div>
                  {% endfor %} 
                </div>
              </div>

В контроллере футера добавил вывод этого текста
$data['text'] = html_entity_decode($this->config->get('theme_default_footer_text' . $this->config->get('config_language_id')), ENT_QUOTES, 'UTF-8');


В админке текст добавляется и сохраняется, все нормально, в футере не выводится
  • Вопрос задан
  • 33 просмотра
Пригласить эксперта
Ответы на вопрос 2
SergeTkach
@SergeTkach
OpenCart Forever
Вы вроде все подробно расписали. Но!
Забыли описать, как добавили {{ text }} в файл "catalog/view/theme/default/template/common/footer.twig" или Вы его туда таки не добавили?
+
Если добавили, то кеш твига обновляли?

++
А вы делали var_dump для $data['text'] в самом контроллере? Что-то я засомневался, что там что-то получается

По идее должно быть:
$text = $this->config->get('theme_default_footer_text'); // поле в таблице `oc_setting` называется именно так. А если добавить ID языка, то выйдет 'theme_default_footer_text0'

$data['text'] = $text[$this->config->get('config_language_id')];
Ответ написан
@DoodleJump Автор вопроса
Начинающий верстальщик
Спасибо Серж, я поменял на такой вариант и заработало! Спасибо еще раз
$data['text'] = $this->config->get('theme_default_footer_text')[$this->config->get('config_language_id')];
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы