Opencart, добавляем настройки в панель администратора

master_joda

Основной задачей любой CMS (в том числе и OpenCart) заключается в том, что с  помощью нее, мы управляем содержимым сайта, не погружаясь в его html код. И это правильно. Но, мной было замечено, что я сам (и я думаю многие) нарушают этот принцип и все таки оставляют статичное содержимое в своих шаблонах. Например есть сайт:

 

1

 

Посмотрим под левый столбец «Категории«, там мы увидим логотип «Get Special offer Upto 20% off«. Иметь тег img с статичной src я считаю не правильно. Использовать модуль «Баннер» для вывода одной картинки тоже не логично, ведь в футере могут быть рекламные баннеры и модуль нужен будет там. Или еще пример, допустим нам надо вывести дату окончания акции под данным логотипом:

 

2

 

Вставлять в шаблон просто статичный текст, это не правильно. Выход я вижу один, добавить новые опции в раздел настройки в панели администратора и от туда править. Итак к делу:

 

 

Добавляем дополнительные настройки в панель администратора

 

1. Добавляем возможность управлять изображением через панель администратора

 

Добавлять новые опции будем в Система->Настройки

 

3

 

Файл представления отвечающий за вывод настроек располагается в следующем месте admin\view\template\setting\setting.tpl.

Добавим новую опцию в нужную нам закладку

 

4

 

Технически это выглядит как добавление новой строки <tr>..</tr> в таблицу файла setting.tpl, каждая таблица распологается в определенном div

      • закладка «Общие» это div с class=”tab-general”.
      • закладка «Витрина» это div с class=”tab-store
      • закладка «Локализация» это div с class=”tab-local
      • закладка «Опции» это div с class=”tab-option
      • закладка «Изображения» это div с class=”tab-image
      • закладка «Почта» это div с class=”tab-mail
      • закладка «Fraund» это div с class=”tab-fraud
      • закладка «СМС это div с class=”tab-sms
      •  закладка «Сервер» это т div с class=”tab-server

Как пример добавим возможность изменять изображения логотипа «Get Special offer Upto 20% off» как на примере выше.

Итак, колонка Categories это у нас стилиизмененный модуль «Категории» шаблона default, его положение можно изменять (переносить на правую или левую сторону сайта). Разместим наше изображение в самом низу модуля «Категории», это позволит картинки перемещаться со всем столбцом при изменение настроек его положения.

Откроем файл представления модуля по следующему пути catalog\view\theme\MyTemplate\template\module\category.tpl

В самом низу добавим вывод картинки

Но системе пока ничего не известно о файле $iconoffer, откроем контроллер модуля «Категории», т.е. файл по адресу catalog\controller\module\category.php.

Добавим в тело метода protected function index($setting) {.. следующие строки

(данный код сделан по образцу контролера header.php для переменной $logo, изменено только название переменной с $logo на $iconoffer и $config_logo на config_$iconoffer)

Теперь у нас есть вывод изображения в модуле категория, но нет возможности управлять им — добавлять/удалять картинку, добавим эту возможность в панель администратора, отредактируем файл admin\view\template\setting\setting.tpl отвечающий за вывод настроек в админпанели (Система->Настройки->Изменить).

Добавим следующий код

в нужную нам закладку, например в «Общие» (см. список div с названием классов выше), т.е. после следующийх строк

(данный код <tr>..</tr> сделан по образцу как в закладке «Изобржения» (т.е. как в div с class=”tab-image”) для логотипа, изменено название переменных с $logo на $iconoffer, $config_logo на $config_iconoffer и thumb-logo, logo, #thumb-logo на thumb-logo2, logo2, #thumb-logo2)

Укажем в контроллере admin\controller\setting\setting.php откуда брать ссылку на изображение и куда посылать информацию в случае его загрузки.

Вставим в тело метода

public function index() {

(данный код сделан по образцу как для логотипа в этом же файле, изменены только название переменных с logo на iconoffer и config_logo на config_iconoffer.)

Все, теперь в админпанели появиться возможность загружать и изменять изображения

 

5

 

которое будет отображаться под колонкой Categories.

Аналогично, если на сайте нужно вывести какой либо текст и это не название магазина, адрес, телефон и т.п., вообщем что-то что не подходит под уже готовые опции в настройках, значит создадим свою опцию.

 

 

2. Добавляем возможность редактировать текст через панель администратора

 

Допустим нам нужно вывести текст под картинкой «спецпредложения» указывающий дату окончания спецпредложения, т.е. нужно вывести текст в модуль «Категории».

Откроем шаблон catalog\view\theme\MyTemplate\template\module\category.tpl и добавим в

cтроку вывода текст

Т.е. получиться должно:

Укажем в контроллере модуля catalog\controller\module\category.php откуда брать данные

Теперь добавим возможность в панели администратора редактировать текст, правим файл представления настроек admin\view\template\setting\setting.tpl

(данный код сделан по образцу как для телефона в этом же файле, изменены только название переменных с config_telephone на config_dateoffer, а $entry_telephone заменено «Дата окончания предложения»(в первой <td>..</td>))

Откроем контроллер настроек admin\controller\setting\setting.php и вставим в тело метода

public function index() { …

(данный код сделан по образцу как для телефона в этом же файле, изменены только название переменных с config_telephone на config_dateoffer)

Получилось следующие:

 

6

7

И это все)

 

 




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

Комментарии
  1. Олег пишет:

    Доброго Времени суток!
    Большое спасибо за создание Вашего сайта!, есть много полезностей, которые я подчеркнул из Ваших статей
    Прошу помощи профессионалов
    Я сейчас занимаюсь созданием своего сайта на opencart, так как у меня нет образования и суммы денег для заказа сайта, решил сам написать тех.задание и воплотить его в жизнь, но столкнулся с проблемами о которых расскажу в личку td-amg@i.ua

  2. Alex пишет:

    Обычно не пишу комментарии, но не удержался.. Респект за статьи, очень помогли!

  3. Александр пишет:

    Седлал все по Вашей инструкции — создал окошко для загрузки картинки и подписи к ней (назвал — topicon)результат есть:
    — форма ввода данных в админке появилась;
    — результат ввода в админке замечательно отображается на сайте;
    но…
    при этом все-таки выдает предупреждение о Undefined variable в такой-то строке в /admin/view/template/setting/setting.tpl в моем случае $entry_topicon.
    Возможно где-то еще нужно создать/назначить/указать это $entry_…?
    Подскажите плз… буду очень признателен.
    у меня OpenCart 2.0.0.0

  4. admin пишет:

    Добрый день Александр, я отвечу вам в понедельник.

  5. admin пишет:

    Добрый день Александр. Посмотрите, контроллер «admin\controller\setting\setting.php», есть ли там определение переменной $entry_topicon.

    Думаю, что переменная $entry_topicon должна содержать текст с пояснением, что эта за опция. Как в админки, «адрес магазина», «e-mail», «телефон» и т.п.
    Данная переменная должна быть определена следующим образом

    $this->data[‘entry_topicon’] = $this->language->get(‘entry_topicon’);

    в контроллере «admin\controller\setting\setting.php».

    Данный код означает, что переменная $entry_topicon должна содержать значения поля ‘entry_topicon’ в языковом файле «admin\language\russian\setting\setting.php», т.е. вам нужно добавить в данный файл строку

    $_[‘entry_topicon’] = ‘Ваш текст’;

  6. Александр пишет:

    боюсь показаться занудным:
    — задал переменные:
    $this->data[‘entry_topicon’] = $this->language->get(‘entry_topicon’)
    $this->data[‘entry_topiconheader’] = $this->language->get(‘entry_topiconheader’)
    — в языквой файл закинул:
    $this->data[‘entry_topicon’] = $this->language->get(‘entry_topicon’)
    $this->data[‘entry_topiconheader’] = $this->language->get(‘entry_topiconheader’)
    пишет:
    Parse error: syntax error, unexpected ‘$this’ (T_VARIABLE) in /opt/lampp/htdocs/xtype/admin/controller/setting/setting.php on line 161
    как быть?:)

  7. Александр пишет:

    да! и почему-то все переменные у меня задаются не как Вы пишите «$this->data[…]=…» а просто $data[…]=… — ну то есть без «$this» — может в этом засада? Хотя я менял — выдает ту же самую синтаксическую ошибку…только syntax error, unexpected ‘$data’ пишет…:(

  8. admin пишет:

    Хм…, Александр возможно в версии 2.0.0 есть существенные изменения относительно старых, о которых я еще не узнал. У меня подобных проблем не было, попробуйте сделать все по аналогии с другими переменными.

  9. Сергей пишет:

    Нужна подсказка. Необходимо добавить пару новых вкладок в карточку товара на подобие вкладки «Описание», чтобы указывать в них дополнительную информацию. Но, как оказалось, сделать это не так-то просто…
     
    Значит, имеем 4 файла:
    1. product_form.tpl (admin/..)
    2. produrc.php (admin/..)
    3. product.php (catalog/..)
    4. product.tpl (catalog/..)
     
    С php у меня плохо, поэтому пытался сделать по образцу вкладки «Описание», но я просто не смог найти никакой связи между 1-м и 2-м файлами.
    Если Вы сталкивались с подобным, то, может, тыкните мне пальцем, где что можно найти и где что дописать?
     
    ┌──────────┌───────────┐────────┐
    │ Описание │ Описание2 │ Отзывы │
    ├──────────┘ └────────┤
    │ Дополнительная информация о │
    │ товаре │
    │ │
    │ │
    │ │
    └───────────────────────────────┘

  10. Сергей пишет:

    К сообщению выше:
    Нашел одну статью об этом. Все оказалось гораздо сложнее, чем я предполагал 🙂 Буду разбираться…

  11. admin пишет:

    Добрый день Сергей, я только сейчас увидел ваш комментарий)
    Если найдете или разработаете решения проблемы, расскажите нам =)

  12. трассоискатель пишет:

    Нашёл то, что искал! Благодарю!

  13. admin пишет:

    Спасибо что читаете меня =)



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


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

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