Показать сообщение отдельно
  #1 (permalink)  
Старый 28.11.2019, 17:50
Профессор
Отправить личное сообщение для Триви Посмотреть профиль Найти все сообщения от Триви
 
Регистрация: 23.04.2010
Сообщений: 354

Правка фронтенда в ocStore OcStore(OpenCart) 3.0.2. Переделка под свои нужды.
Всем, привет.

Здесь мне бы хотелось говорить о трудностях, с которыми я сталкиваюсь по сабжу. Может быть в дальнейшем кому-то эта инфа пригодится.

Опыта работы с OpetCart у меня нет, тем более 3-й версии, но поступил заказ. Что ж, придётся ковыряться.

Имеется макет в фотошопе, вообще ни разу не напоминающий диз CMS-ки из коробки.

Начал стилизовать блоки в twig-файлах по-своему, дошёл до корзины и сразу сталкнулся со следующей проблемой.
Мне НЕ нужна к корзине надпись вида `Товаров: 0 (0.00р.)`, а нужно получить лишь количество товаров.
Ок, - подумал я - В бэкенд не полезу, вдруг такая строчка целиком ещё пригодится или сломаю что-нибудь не дай Бог.
1. Полез в файл `domains/mysite/catalog/view/javascript/common.js`
Нашёл там объект `cart` со своими методами типа `add`, `update` etc. с ajax-ом и колбэками.

2. В колбэках нахожу строку:

$('#cart > button').html('<span id="cart-total"><i class="fa fa-shopping-cart"></i> ' + json['total'] + '</span>');


Вывожу в консоль json['total'], ОНО!

3. В этом же файле создаю глобально метод:

var getAmount = function (total) {
	var regex = /\s+/,
		amount = total.split(regex)[1];
		return amount;
}


..а в строке колбэка функций объекта `cart` (см. выше) вызываю его: getAmount(json['total']).

4. Аллилуйя! Всё работает.


Едем дальше.

1. Заходим на сайте в карточку товара, добавляем товар в корзину и упс - возвращается необработанная строка json['total'].

2. Инспектируем getAmount(), добавляя в него `console.log('getAmount method called')` - хренушки (( Метод не вызывается.

3. Ок, инспектируем кнопу `Купить` в карточке товара и находим событие на кнопке:

$('#button-cart').on('click', function() {...}


В файле common.js его, нет, но девтулс нам указывает на то, что он типа в index.php есть.
Значит, событие возможно прописано в шаблоне twig. Ищем шаблон `product.twig` - Упс! Вот оно наше событие ))

5. В шаблоне `product.twig` снова вызываем наш новый метод `getAmount` и передаём в него json['total'].

6. Аллилуйя! Всё работает ))


зы: прошу прощения, коллеги, если не в тот раздел запостил тему. Но сабж полезный имхо. Перенесите, если что.
Принимаются замечания. Если что-то не будет получаться по сабжу, буду задавать здесь вопросы )
Ответить с цитированием