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

[HowTo] Отдельная пагинация для магазина


beeboosters

Recommended Posts

Столкнулся с проблемой. Нужно было пагинацию привести в соответствие с Bootstrap 3.0. Оказалось что за её внешний вид отвечает system/library/pagination.php. То есть все достаточно жестко прописано в самом файле и при этом эта же пагинация используется и в админке, которая у меня с Bootstrap ничего общего не имеет. Соответственно при редактировании файла пагинации, в админке она начинает отображаться некорректно.

 

Не найдя лучшего способа решил сделать отдельную пагинацию

1. Скопировал файл system/library/pagination.php

2. Переименовал его в pagcategory.php.

3. В новом файле pagcategory.php переименовал класс в соответствии с названием файла:

class PagCategory

4. Подключил этот класс в файле system/startup.php

require_once(DIR_SYSTEM . 'library/pagcategory.php');

5. Для вывода на страницу, к примеру, категории в файле controller/product/category.php заменить

$pagination = new Pagination();

на свой класс

$pagination = new PagCategory();

Если бы можно было обойтись редактированием css, то я бы всего этого не делал. Мне же нужно было оформить ссылки в списки и т.д. и т.п.

Может кому-то пригодится, либо посоветуете способ проще. Хотя мне этот вполне нравится.

  • +1 4
Надіслати
Поділитися на інших сайтах


Так и не должны, я уверен что в OC продумали момент как сделать навигацию на магазине свою, при этом не уронив её в админке. Но я не нашел как. Поэтому был изобретён велосипед с квадратными колесами ;)

Надіслати
Поділитися на інших сайтах


Сталкивался с тем же, решил просто - перенес стили пагинации бутстрапа в файл стилей ОС, слегка их изменив - да, получился десяток лишних строчек с тем же, что есть в самом bootstrap.css, зато никакие системные файлы не трогаем
 

я уверен что в OC продумали момент как сделать навигацию на магазине свою

Глядя на ОС, я бы не спешил с такими выводами :)

Надіслати
Поділитися на інших сайтах

Сталкивался с тем же, решил просто - перенес стили пагинации бутстрапа в файл стилей ОС, слегка их изменив - да, получился десяток лишних строчек с тем же, что есть в самом bootstrap.css, зато никакие системные файлы не трогаем

 

Глядя на ОС, я бы не спешил с такими выводами :)

Да, так гораздо меньше проблем. Мне же прийдется класс пагинации в контролере поиска и прочих тоже переписывать. Я думал прописать стили пагинации и для админки и не парится с классами и прочим, но побоялся. Знаю, что меня затянет переделать и админку  :ugeek: , а я с магазином еще не закончил.

Надіслати
Поділитися на інших сайтах


  • 2 months later...

Столкнулся с проблемой. Нужно было пагинацию привести в соответствие с Bootstrap 3.0. Оказалось что за её внешний вид отвечает system/library/pagination.php. То есть все достаточно жестко прописано в самом файле и при этом эта же пагинация используется и в админке, которая у меня с Bootstrap ничего общего не имеет. Соответственно при редактировании файла пагинации, в админке она начинает отображаться некорректно.

 

Не найдя лучшего способа решил сделать отдельную пагинацию

1. Скопировал файл system/library/pagination.php

2. Переименовал его в pagcategory.php.

3. В новом файле pagcategory.php переименовал класс в соответствии с названием файла:

class PagCategory

4. Подключил этот класс в файле system/startup.php

require_once(DIR_SYSTEM . 'library/pagcategory.php');

5. Для вывода на страницу, к примеру, категории в файле controller/product/category.php заменить

$pagination = new Pagination();

на свой класс

$pagination = new PagCategory();

Если бы можно было обойтись редактированием css, то я бы всего этого не делал. Мне же нужно было оформить ссылки в списки и т.д. и т.п.

Может кому-то пригодится, либо посоветуете способ проще. Хотя мне этот вполне нравится.

 

Спасибо, помог ваш совет - у меня такая проблема появилась после установки модуля Brainy Filter (4.5.1)

Надіслати
Поділитися на інших сайтах


  • 10 months later...
  • 4 years later...

Более красивый вариант создания отдельной пагинации для каталога, без необходимости заменять код в контроллерах
Может поможет решение кому то в будущем

 

Открываем config.php в корне магазина
Добавляем в конец файла:
 


// Pagination
define('REPLACE_PAGINATION', true);


Открываем файл /system/startup.php
Находим:

function library($class) {
	$file = DIR_SYSTEM . 'library/' . str_replace('\\', '/', strtolower($class)) . '.php';

	if (is_file($file)) {
		include_once(modification($file));

		return true;
	} else {
		return false;
	}
}

 

Меняем на:

function library($class) {
	
	if(defined('REPLACE_PAGINATION') && $class == 'Pagination'){
		$file = DIR_SYSTEM . 'library/' . str_replace('\\', '/', strtolower($class)) . '_catalog.php';
	} else {
		$file = DIR_SYSTEM . 'library/' . str_replace('\\', '/', strtolower($class)) . '.php';
	}

	if (is_file($file)) {
		include_once(modification($file));

		return true;
	} else {
		return false;
	}
}


Копируем system/library/pagination.php и переименовываем в pagination_catalog.php
Далее вносим любые нужные правки в созданном файле и они будут отображаться только во фронте, админка останется с дефолтной пагинацией

П.С. Тестировалось на OC 2.3, решение от beeboosters подойдет для прошлых версий, в которых еще не добавили автозагрузчик. Можно его также реализовать просто заменив подключение pagination.php на pagination_catalog.php по значению константы REPLACE_PAGINATION

Змінено користувачем AlfKot
Дополнение с возможным решением для прошлых версий OC
  • +1 4
Надіслати
Поділитися на інших сайтах


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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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