Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Кеш для менеджера изображений Opencart 2.x


Recommended Posts

Немного предыстории)

На выходных работал над одним проектам, и нужно было добавлять много изображений для товаров. Задолбалось каждый раз находить необходимую папку, их на сайте более 100, и выбирать нужное изображения что б вставить.

Решил добавить кеширование в менеджер изображений для облегчения дальнейшей работы.

 

Итак редактировать будем 3 файла:

admin/controller/common/filemanager.php

admin/view/javascript/common.js

admin/view/template/common/filemanager.tpl

 

Вначале открываем файл admin/controller/common/filemanager.php и изменяем:

if (isset($this->request->get['directory'])) {
	$directory = rtrim(DIR_IMAGE . 'catalog/' . str_replace(array('../', '..\\', '..'), '', $this->request->get['directory']), '/');
} else {
	$directory = DIR_IMAGE . 'catalog';
}

на:

if (isset($this->request->get['directory'])) {
	$directory = rtrim(DIR_IMAGE . 'uploads/' . str_replace(array('../', '..\\', '..'), '', $this->request->get['directory']), '/');
} else {
	if (isset($_COOKIE['dir']) and !empty($this->request->get['directory'])) {
		$directory = rtrim(DIR_IMAGE . 'uploads/' . str_replace(array('../', '..\\', '..'), '', $_COOKIE['dir']), '/');
	} else {
		$directory = DIR_IMAGE . 'uploads';
	}
}

Переходим ниже и в массив находим строчку 70, добавляем:

'directory' => urlencode(utf8_substr($image, utf8_strlen(DIR_IMAGE . 'uploads/'))),

Затем, открываем файл admin/view/javascript/common.js, находим:

$('#button-image').on('click', function() {
	$('#modal-image').remove();

	$.ajax({
		url: 'index.php?route=common/filemanager&token=' + getURLVar('token') + '&target=' + $(element).parent().find('input').attr('id') + '&thumb=' + $(element).attr('id'),
		dataType: 'html',
		beforeSend: function() {
			$('#button-image i').replaceWith('<i class="fa fa-circle-o-notch fa-spin"></i>');
			$('#button-image').prop('disabled', true);
		},
		complete: function() {
			$('#button-image i').replaceWith('<i class="fa fa-pencil"></i>');
			$('#button-image').prop('disabled', false);
		},
		success: function(html) {
			$('body').append('<div id="modal-image" class="modal">' + html + '</div>');

			$('#modal-image').modal('show');
		}
	});

	$(element).popover('hide', function() {
		$('.popover').remove();
	});
});

и меняем это на:

$('#button-image').on('click', function() {
	$('#modal-image').remove();
	
	function getCookie(name) {
		var matches = document.cookie.match(new RegExp(
		"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
		));
		return matches ? decodeURIComponent(matches[1]) : undefined;
	}
	
	var url_open;
	
	if (getCookie('dir')) {
		url_open = 'index.php?route=common/filemanager&directory='+getCookie('dir')+'&token=' + getURLVar('token') + '&target=' + $(element).parent().find('input').attr('id') + '&thumb=' + $(element).attr('id');
	} else {
		url_open = 'index.php?route=common/filemanager&token=' + getURLVar('token') + '&target=' + $(element).parent().find('input').attr('id') + '&thumb=' + $(element).attr('id');
	}
	
	$.ajax({
		url: url_open,
		dataType: 'html',
		beforeSend: function() {
			$('#button-image i').replaceWith('<i class="fa fa-circle-o-notch fa-spin"></i>');
			$('#button-image').prop('disabled', true);
		},
		complete: function() {
			$('#button-image i').replaceWith('<i class="fa fa-pencil"></i>');
			$('#button-image').prop('disabled', false);
		},
		success: function(html) {
			$('body').append('<div id="modal-image" class="modal">' + html + '</div>');

			$('#modal-image').modal('show');
		}
	});

	$(element).popover('hide', function() {
		$('.popover').remove();
	});
});

Переходим в файл admin/view/template/common/filemanager.tpl

ищем строчку 28 и добавляем для тега "a" еще один параметр

 data-dir="<?php echo $image['directory']; ?>"

Должно получиться так:

<a href="<?php echo $image['href']; ?>" data-dir="<?php echo $image['directory']; ?>" class="directory" style="vertical-align: middle;">

Затем ищем:

$('a.directory').on('click', function(e) {
	e.preventDefault();

	$('#modal-image').load($(this).attr('href'));
});

меняем на:

$('a.directory').on('click', function (e) {
	e.preventDefault();
	document.cookie = "dir="+$(this).data('dir');
	$('#modal-image').load($(this).attr('href'));
});

и 

$('#button-parent').on('click', function(e) {
	e.preventDefault();

	$('#modal-image').load($(this).attr('href'));
});

меняем на:

$('#button-parent').on('click', function (e) {
	e.preventDefault();
	document.cookie = "dir="+$(this).data('dir');
	$('#modal-image').load($(this).attr('href'));
});

Вот и все!

 

p.s. Если найдутся умельци, какие из этого всего смогут сделать vqmod или ocmod, просьба добавить в эту тему.

 

Спасибо за внимание, надеюсь это кому-то тоже пригодиться.

Змінено користувачем Fedka
  • +1 1
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.