Создание расширения очистки кеша для OpenCart 3

Ромчик
0

opencart3Доброго времени суток. Мы продолжаем изучать OpenCart 3, так в прошлой статье «Работа с кешем в OpenCart 3» мы рассмотрели основные методы работы с кешем. Но как многие заметили, у нас нет метода, который удалял бы весь кеш. Давайте это исправим и реализуем метод для полного удаления кеша.

Сразу хочу предупредить, что в OpenCart 3 есть несколько типов хранилищ  кеша:

  • File
  • Memcache
  • Redis
  • Mem
  • Apc

По умолчанию используется file. Поэтому я для него и напишу расширение.

Изменяем адаптер File

Открываем файл system/library/cache/file.php

И дописываем в него метод deleteAll:


public function deleteAll()

{

$files = glob(DIR_CACHE . 'cache.*');

if($files){

foreach ($files as $file) {

if(file_exists($file)){

unlink($file);

}

}

}

}

Теперь наш адаптер умеет удалять весь кеш.

Добавление в класс cache метода для удаления всего кеша

Открываем файл system/library/cache.php и добавим в него метод deleteAll():


public function deleteAll()

{

return $this->adaptor->deleteAll();

}

Отлично мы добавили в наш OpenCart новый функционал – очистка кеша. Давайте в админке в tool создадим контроллер cache, который будет удалять весь кеш.

Создание контроллера для удаления кеша в OpenCart

В admin/controller/tool создадим файл cache.php и поместим в него следующий код:


<?php

class ControllerToolCache extends Controller {

private $error = array();

public function index()

{

if($this->validate()){

$this->clearAll();

}

return $this->response->redirect($this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true));

}

public function clearAll() {

$this->cache->deleteAll();

return $this->response->redirect($this->url->link('common/dashboard','user_token='.$this->session->data['user_token'], true));

}

protected function validate() {

if (!$this->user->hasPermission('modify', 'tool/cache')) {

$this->error['warning'] = 'Ooops';

}

return !$this->error;

}

}

Метод index – этот метод будет вызван по умолчанию, когда мы перейдем по ссылке:


index.php?route=tool/cache

И в методе index мы будем вызывать метод validate, который проверяет разрешение доступа на изменение. И если доступ есть, то будет вызывать метод deleteAll(), который удаляет кеш.

Теперь, давайте на главной странице создадим ссылку по которой и будет происходить удаление кеша.

Создание ссылки для удаления кеша.

Первое, открываем контроллер отвечающий за главную страницу админки dashboard: admin/controller/common/dashboard.php и в метод index вставим:


$data['linkClearCache'] = $this->url->link('tool/cache','user_token=' . $this->session->data['user_token'],true);

Мы в элемент с ключем linkClearCache массива data поместили url на наш контроллер отчистки кеша.

Теперь в шаблоне, добавим ссылку. Для этого в файле: admin/view/template/common/dashboard.twig добавим перед кнопкой:


<button type="button" id="button-setting" title="{{ button_setting }}" data-loading-text="{{ text_loading }}" class="btn btn-info"><i class="fa fa-cog"></i></button>

Ссылку:


<a href="{{ linkClearCache }}" class="btn btn-success">Clear cache</a>

Отлично, давайте посмотрим, что у нас получилось, переходим в админку:

Ссылка для очистки кеша Dashboard OpenCart

Теперь, как и в предыдущей статье «Работа с кешем в OpenCart 3» будем использовать контроллер домашней страницы. И в метод index, контроллера home добавим:


<?php

class ControllerCommonHome extends Controller {

public function index() {

$this->cache->set('test','test');

var_dump($this->cache->get('test'));die;

Смотрим, что получилось:

Вывод данных их кеш

Теперь удалим строку:


$this->cache->set('test','test');

И опять зайдем на главную страницу нашего интернет-магазина. Как видим данные берутся из кеша. Теперь давайте перейдем в админку и жмем «Clear cache» и переходим на главную страницу:

Кеш отчищен с помлщью нашего расширения

Как видите кеш отчищен.

Заключение.

Мы с вами добавили новый функционал для OpenCart 3 – очистка кеша. Все хорошо, все работает. Но есть один нюанс: Мы с вами изменили системные файлы OpenCart, а этого делать нельзя. И при обновлении все файлы вернуться к исходному состоянию и наши правки исчезнут. Поэтому в следующей статье мы с вами создадим модификатор, который позволит нам использовать наш функционал при этом не трогая системные файлы.

Так, что подписываемся на группу в контакте или фейсбуке, чтобы не пропустить выхода новой статьи.

Понравилась статья? Поделись с друзьями.
  • Add to favorites
  • Добавить ВКонтакте заметку об этой странице
  • Twitter
  • Facebook
  • Мой Мир
  • LiveJournal
  • Одноклассники
  • Блог Я.ру
  • MySpace
  • FriendFeed
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • Reddit
  • StumbleUpon
  • Technorati
  • del.icio.us
  • БобрДобр
  • LinkedIn
  • Memori.ru
  • Сто закладок
  • Blogger
©2012-2017 По всем вопросам обращайтесь через форму обратной связи

Яндекс.Метрика