Javascript.RU

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

Правка фронтенда в 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. Аллилуйя! Всё работает ))


зы: прошу прощения, коллеги, если не в тот раздел запостил тему. Но сабж полезный имхо. Перенесите, если что.
Принимаются замечания. Если что-то не будет получаться по сабжу, буду задавать здесь вопросы )
Ответить с цитированием
  #2 (permalink)  
Старый 28.11.2019, 18:41
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 477

"трудна и ужасна жизнь насекомых" @Кто-то там ))
Ответить с цитированием
  #3 (permalink)  
Старый 28.11.2019, 19:26
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 11,326

Сообщение от Триви
В бэкенд не полезу, вдруг такая строчка целиком ещё пригодится или сломаю что-нибудь не дай Бог.
И чего там ломать, заремировать в catalog/language/ru-ru/checkout/cart.php, оставив нужное:

$_['text_items'] = 'Товаров %s';//  (%s)';
Ответить с цитированием
  #4 (permalink)  
Старый 29.11.2019, 00:04
Профессор
Отправить личное сообщение для Триви Посмотреть профиль Найти все сообщения от Триви
 
Регистрация: 23.04.2010
Сообщений: 336

Сообщение от laimas Посмотреть сообщение
И чего там ломать, заремировать в catalog/language/ru-ru/checkout/cart.php, оставив нужное:

$_['text_items'] = 'Товаров %s';//  (%s)';
Респектос! Блин, я на бульдозере за хлебом поехал
Надо сначала доку почитать, чем сходу свои костыли подставлять.
Мы лёгких путей не ищем
Здесь надо поменять `catalog/language/ru-ru/common/cart.php`
и здесь `catalog/language/ru-ru/checkout/cart.php`
на
$_['text_items'] = '%s';

Там по ходу php-функция sprintf() их обрабатывает.

зы: почему карму повысить не могу?

Последний раз редактировалось Триви, 29.11.2019 в 00:34.
Ответить с цитированием
  #5 (permalink)  
Старый 29.11.2019, 02:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 11,326

Если число только оставить, то да, первую переменную только и оставляем. Выводит да форматированием, и это и в методах добавления, и методах редактирования, и при запросе страницы делается, типа sprintf($this->language->get('text_items'), $this->cart->countProducts() ....

Есть контроллер, у него есть шаблон и локализация, последнюю и нужно править.
Ответить с цитированием
  #6 (permalink)  
Старый 29.11.2019, 03:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 11,326

Сообщение от Триви
почему карму повысить не могу?
Не знаю, но это не смертельно. )
Ответить с цитированием
  #7 (permalink)  
Старый 29.11.2019, 15:04
Профессор
Отправить личное сообщение для Триви Посмотреть профиль Найти все сообщения от Триви
 
Регистрация: 23.04.2010
Сообщений: 336

Обнулить стили у кнопки Корзины получается, но не до конца. Убрал у неё все бутстраповские классы, которые подсасывает openCart, за исключением `.dropdown-toggle`. Прописал обнуление стилей в css вот так

После нажатия на кнопку она всё равно стилизуется как показано в скриншотах:



Опытным путём установил, что происходит это тогда, когда я пытаюсь увеличить размер кнопки через width, height или padding.

В чём может быть проблема?
Ответить с цитированием
  #8 (permalink)  
Старый 29.11.2019, 15:16
Профессор
Отправить личное сообщение для Триви Посмотреть профиль Найти все сообщения от Триви
 
Регистрация: 23.04.2010
Сообщений: 336

Проблема решена. С помощью box-shadow )))
Ответить с цитированием
  #9 (permalink)  
Старый 29.11.2019, 16:54
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 11,326

Триви, ведь кеш работает, на время манипуляций его отключать надо.
Ответить с цитированием
  #10 (permalink)  
Старый 29.11.2019, 17:12
Профессор
Отправить личное сообщение для Триви Посмотреть профиль Найти все сообщения от Триви
 
Регистрация: 23.04.2010
Сообщений: 336

Сообщение от laimas Посмотреть сообщение
Триви, ведь кеш работает, на время манипуляций его отключать надо.
Так отключен. Всё равно спасло только box-shadow: none;

Сейчас настал черёд стилизации карусели, тот ещё гимор я так понимаю.
Главное свою не написать случайно )) А то я могу )))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с многомерным массивом dima*** Общие вопросы Javascript 8 03.04.2013 00:04