|
Правка фронтенда в 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. Аллилуйя! Всё работает )) зы: прошу прощения, коллеги, если не в тот раздел запостил тему. Но сабж полезный имхо. Перенесите, если что. Принимаются замечания. Если что-то не будет получаться по сабжу, буду задавать здесь вопросы ) |
"трудна и ужасна жизнь насекомых" @Кто-то там ))
|
Цитата:
$_['text_items'] = 'Товаров %s';// (%s)'; |
Цитата:
Надо сначала доку почитать, чем сходу свои костыли подставлять. Мы лёгких путей не ищем :lol: Здесь надо поменять `catalog/language/ru-ru/common/cart.php` и здесь `catalog/language/ru-ru/checkout/cart.php` на $_['text_items'] = '%s'; Там по ходу php-функция sprintf() их обрабатывает. зы: почему карму повысить не могу? |
Если число только оставить, то да, первую переменную только и оставляем. Выводит да форматированием, и это и в методах добавления, и методах редактирования, и при запросе страницы делается, типа sprintf($this->language->get('text_items'), $this->cart->countProducts() ....
Есть контроллер, у него есть шаблон и локализация, последнюю и нужно править. |
Цитата:
|
Обнулить стили у кнопки Корзины получается, но не до конца. Убрал у неё все бутстраповские классы, которые подсасывает openCart, за исключением `.dropdown-toggle`. Прописал обнуление стилей в css вот так
После нажатия на кнопку она всё равно стилизуется как показано в скриншотах: ![]() ![]() Опытным путём установил, что происходит это тогда, когда я пытаюсь увеличить размер кнопки через width, height или padding. В чём может быть проблема? |
Проблема решена. С помощью box-shadow )))
|
Триви, ведь кеш работает, на время манипуляций его отключать надо.
|
Цитата:
Сейчас настал черёд стилизации карусели, тот ещё гимор я так понимаю. Главное свою не написать случайно )) А то я могу ))) |
Часовой пояс GMT +3, время: 17:40. |
|