OpenCart, прикручиваем представление к контроллеру

adjustable_wrench

В OpenCart, на один контроллер можно посадить не только один файл представления, но и не сколько. Когда в адресной строке своего браузера, вы прописываете

«http://доменное_ия/index.php?route=common/home»

то вы обращаетесь к контроллеру home.php, который располагается в директории catalog\view\theme\имя_темы\template\common. А если быть точнее, то к его функции public function index(). Вызов index() будет всегда когда вы указываете просто имя контроллера в GET запросе «?route=common/home».

Можно сказать, что функции контроллеров выполняют следующие задачи

  • получения значений от языковых файлов (те что в catalog\language\…)
  • передача и получения значений от моделей (те что в catalog\model\…)
  • обработка информации, работа с переменными (тут используются просто возможности языка php)
  • выбор файла представления (.tpl) для вывода пользователю
  • объявление и инициализация переменных (через $this->data[…] ) видимых для выбранного tpl.

     

Мы можем в одном контроллере помимо index() указывать свои функции, но вызываться они будут уже следующим GET запросом

По минимуму ваша «функция обработчик» в контроллере должна иметь две строки

Где в  первой строке мы указываем файл представления, для вывода пользователю, а во второй указываем, что браузеру нужно вернуть ответ.

 

Пример

 

Создадим, в контроллере catalog\controller\common\home.php функцию public function test() и наполним ее следующим содержимым

Далее,  создадим файл представления catalog\view\theme\имя_шаблона\template\common\test.tpl, в нем пропишем

При вызводе по url адресу «http://доменное_имя/index.php?route=common/home/test» мы в ответ получим

1

Итог, мы создали свой файл представления test.tpl и прикрутили его к контроллеру home.php.

 




Буду признателен если вы поделитесь данным постом

Комментарии
  1. Андрей пишет:

    Добрый день!
    Я столкнулся с проблемой мультиязычности контактов на Опенкарт 1.5.2.

    В смысле сайт на трёх языках, а контакты (из настроек системы) выводятся в раздел контактов без перевода и нет возможности ввести их на разных языках.

    Как можно исправить?

  2. admin пишет:

    Добрый день Андрей.

    Я вижу два пути решения:
    1. Если нужно по быстрее, то это можно сделать через переменные в language. В этом случае задавать адреса и телефоны придется через языковые php файлы (www\catalog\language\…). Т.е. не через панель администратора.

    Например в «www\catalog\language\russian\information\contact.php» добавьте
    $_[‘text_addres’] = ‘Улица Ленина дом 1 офис 123’;

    И в «www\catalog\language\english\information\contact.php» добавьте
    $_[‘text_addres’] = ‘Street Lenina home 1 office 123’;

    Далее в контролере «контактов
    (www\catalog\controller\information\contact.php) добавьте строку:
    $this->data[‘text_addres’] = $this->language->get(‘text_addres’);

    Это позволит вам использовать переменную «text_addres» в шаблоне «www\catalog\view\theme\default\template\information\contact.tpl».

    2. Второй вариант немного посложнее. В панели администратора нужно добавить свое собственное текстовое поле (как это сделать написано в посте Opencart, добавляем настройки в панель администратора, раздел «Добавляем возможность редактировать текст через панель администратора». Например «Адрес магазина (англ):» и текстовое поле, где вы вводите адрес на англ. Далее вам нужно самим разобраться что делает система когда пользователь нажимает на кнопку при выборе языка сайта. В зависимости от выбранного языка с помощью IF выводите содержимое того или иного текстового поля.

    Если есть вопросы Андрей, спрашивайте.

  3. Алексей пишет:

    Здравствуйте!
    Я столкнулся с проблемой не заданных переменных, а как их задать в контролерах я не знаю. Помогите пожалуйста, вот ошибка с которой я столкнулся при редактировании «оформления заказа» =, а именно при переносе способов доставки и способов оплаты во второй шаг (opencart 2.1.0.1)
    Notice: Undefined variable: payment_methods in /home/admin/web/kleyok.com.ua/public_html/catalog/view/theme/default/template/checkout/guest.tpl on line 218
    Notice: Undefined variable: text_comments in /home/admin/web/kleyok.com.ua/public_html/catalog/view/theme/default/template/checkout/guest.tpl on line 237

  4. admin пишет:

    Корзина в OpenCart очень трудно поддается редактированию, Алексей вы с ней еще намучаетесь.

    У меня есть версия упрощенной корзины для OpenCart, до версии 2.х она работает без проблем. Если вас интересует, напишите мне, мы договоримся и я скину вам.

  5. Алексей пишет:

    У меня в принципе осталось только переменные обозначить. Как с Вами связаться?

  6. admin пишет:

    Я вам написал на почту.


На сайте Rus-Plus.Info читайте статьи об анализе рынка Форекс

Ваш комментарий


Ответ в цифрах

 
© s-engineer.ru, 2012-2017 | Все права защищены