OpenCart откуда %s в языковых файлах берет значение
|Если вы не заказывали создание веб сайта в какой-то компании, то рано или поздно вас может удивить что в языковых файлах которые хранятся по пути:
1 | /catalog/language/english |
или
1 | /catalog/language/russian |
пробегает значение %s которое не понятно откуда берет значение. И чтобы поменять его, или подставить свое какое-то, к примеру ссылку необходимо знать где-же находиться участок php кода, с которого языковый файл подтягивает значение.
На самом деле все довольно просто. Данные подтягивает контроллер который находится по пути:
1 | /catalog/language/controller |
Давайте, чтобы было понятно, рассмотрим на примере. Есть языковый файл для карточек товара. Он находится по пути:
/catalog/language/russian/product/product.php
В этом файле есть много %s, но мы возьмем самый популярный, а именно строчку:
1 | $_['text_reviews'] = 'Отзывов: %s'; |
Давайте разберемся откуда берется значение. Поскольку мы рассматриваем product.php то надо найти его контроллер. Это очень просто, идем по пути:
/catalog/controller/product/product.php
и находим строчку.
1 | $this->data['reviews'] = sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']); |
Именно она подгружает переменную. Таким образом вы можете найти буквально любой вывод переменных который вызывается из языковых файлов с помощью %s.
Также, чтобы облегчить поиск это функции хочу обратить внимание что opencart для этих целей использует php функцию sprintf(), поэтому, чтобы облегчать себе поиск кода в контроллере, вы можете искать именно эту функцию.
Но бывает такое что языковый файл подгружает не одну переменную а две. Как быть в этом случае? Давайте рассмотрим пример. Файл:
/catalog/language/russian/account/register.php
В нем есть строчка:
1 | $_['text_agree'] = 'Я прочитал <a class="fancybox" href="%s" alt="%s"><b>%s</b></a> и согласен с условиями'; |
В ней, как мы видим вызываются две переменные. Давайте найдем участок кода в контроллере который отвечает за это. Идем по пути:
/catalog/controller/account/register.php
Понимая что нам надо искать функцию sprintf() и переменную text_agree мы быстро находим соответствующую строчку
1 | $this->data['text_agree'] = sprintf($this->language->get('text_agree'), $this->url->link('information/information/info', 'information_id=' . $this->config->get('config_account_id'), 'SSL'), $information_info['title'], $information_info['title']); |
В ней сначала погружаться первая переменная, а затем другая.
На этом все, но если у вас остались вопросы, напишите в комментариях, попробую вам помочь.
Честно признаюсь, Я «чайник»….
Понимаю, о чем написано,НО! где искать /catalog/controller/product/product.php ?? Допустим,у меня открыта программа opencart, я вижу панель управления, каталог, дополнения и т.д. Куда надо зайти и что нажать, чтобы видеть путь??
Это файлы по FTP