Вопросы по разработке и модификации CS-Cart

В карточке товара нужно использовать текущую цену товара с учетом выбранной опции. Пытаюсь получить эту цену, но пока только нашел как получить базовую цену. Когда выбираешь опцию, цена меняется у товара, как в этот момент получить в сматри переменную эту самую цену с учетом выбранной опции?

Даниил, дополню, что для опций был использован Ваш модуль, когда в админке указывается цена для каждой комбинации опций

[quote name='densvi' timestamp='1427375539' post='209145']

В карточке товара нужно использовать текущую цену товара с учетом выбранной опции. Пытаюсь получить эту цену, но пока только нашел как получить базовую цену. Когда выбираешь опцию, цена меняется у товара, как в этот момент получить в сматри переменную эту самую цену с учетом выбранной опции?

[/quote]



Когда меняется опция, Ajax запрос получает новые цены обновляет информацию в карточке.

[quote name='densvi' timestamp='1427375674' post='209146']

Даниил, дополню, что для опций был использован Ваш модуль, когда в админке указывается цена для каждой комбинации опций

[/quote]



Если хочется просто получить срез цен, то тут нужно делать свой хук или пост-контроллер и доставать эти цены и выводить куда нужно. По стандарту они не получаются.

[quote name='dbazhenov' timestamp='1427375687' post='209147']

Когда меняется опция, Ajax запрос получает новые цены обновляет информацию в карточке.

[/quote]



Это я понял, а где и как получить эту самую новую цену, чтобы использовать её в смарти?

[quote name='dbazhenov' timestamp='1427375763' post='209148']

Если хочется просто получить срез цен, то тут нужно делать свой хук или пост-контроллер и доставать эти цены и выводить куда нужно. По стандарту они не получаются.

[/quote]



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

[quote name='densvi' timestamp='1427375764' post='209149']

Это я понял, а где и как получить эту самую новую цену, чтобы использовать её в смарти?

[/quote]



Где в смарти? она и так приходит в смарти. Ajax запрос отрисовывает не все блоки. Если вы распечатаете цену массив смарти рядом с блоком кода товара или цены, то он будет изменятся. Посмотрите видео о том, как работает Ajax .

[quote name='densvi' timestamp='1427375841' post='209150']

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

[/quote]



Что сделать с этой ценой нужно?

[quote name='dbazhenov' timestamp='1427375900' post='209151']

Что сделать с этой ценой нужно?

[/quote]



Я её хочу использовать для простого расчета конечной цены и её показа с учетом скидок прямо в карточке товара. Рядом с ценой товара сделал ссылку, по которой открывается всплывающее окно и там надписи, что если хотите дешевле, то заплатите нам наличными - тогда скидка 3% и стоимость товара такая-то. вот тут рассчитать и нужно с учтом, того, что выбрана опция и цена с этой опцией указывается в вашем модуле.

[quote name=‘densvi’ timestamp=‘1427376173’ post=‘209152’]

Я её хочу использовать для простого расчета конечной цены и её показа с учетом скидок прямо в карточке товара. Рядом с ценой товара сделал ссылку, по которой открывается всплывающее окно и там надписи, что если хотите дешевле, то заплатите нам наличными - тогда скидка 3% и стоимость товара такая-то. вот тут рассчитать и нужно с учтом, того, что выбрана опция и цена с этой опцией указывается в вашем модуле.

[/quote]



Как я понимаю, это будет отдельный блок, смотрите как работает Ajax :) Для начала.

[quote name=‘dbazhenov’ timestamp=‘1427376407’ post=‘209154’]

Как я понимаю, это будет отдельный блок, смотрите как работает Ajax :) Для начала.

[/quote]

А зачем отдельный блок? все будет показываться во всплывающем окне. Я же это легко провернул с базовой ценой без блока. Видео смотрел, но тогда без цели. Пересмотрю еще раз. Просто думал, это можно как-то в легкую вытащить.

Также в голове сидело (ошибочно?) представление о том, что когда жмем кнопку “в корзину” то берется ведь “правильная” цена, та которая отображается. Вот думал как её и выцепить. Это ведь должно было быть просто

[quote name=‘densvi’ timestamp=‘1427377964’ post=‘209157’]

Также в голове сидело (ошибочно?) представление о том, что когда жмем кнопку “в корзину” то берется ведь “правильная” цена, та которая отображается. Вот думал как её и выцепить. Это ведь должно было быть просто

[/quote]



Обновляются не все блоки (div), при смене опций, а только блоки с определёнными классами, всё что внутри них обновляется.

Даниил, пересмотрел еще раз 3 видео про аякс. Запутался окончательно. В Видео говорится про 2 способа обновления. Это через id и класс cm-ajax. Но в моем случае элемент смены опции не содержит ни того, ни другого. Зато есть некая фукнция [font=Consolas,]onchange[/font][font=Consolas,]="[/font][font=Consolas,]fn_change_options(‘22’, ‘22’, ‘49’);[/font][font=Consolas,]"[/font]



Я нашел её в файле js/tygh/exceptions.js



И все, дальше встал как вкопанный. Понял только, что в ней есть класс “cm-reload”. Этот же класс присвоен и полю с ценой. Нашел же там функцию, о которой вы говорили в видео ceAjax, но она настолько большая, что мои мозги сели. В общем я в ступоре. Направьте меня еще немного, что дальше смотреть?

[quote name=‘densvi’ timestamp=‘1427381012’ post=‘209162’]

Даниил, пересмотрел еще раз 3 видео про аякс. Запутался окончательно. В Видео говорится про 2 способа обновления. Это через id и класс cm-ajax. Но в моем случае элемент смены опции не содержит ни того, ни другого. Зато есть некая фукнция [font=Consolas,]onchange[/font][font=Consolas,]="[/font][font=Consolas,]fn_change_options(‘22’, ‘22’, ‘49’);[/font][font=Consolas,]"[/font]



Я нашел её в файле js/tygh/exceptions.js



И все, дальше встал как вкопанный. Понял только, что в ней есть класс “cm-reload”. Этот же класс присвоен и полю с ценой. Нашел же там функцию, о которой вы говорили в видео ceAjax, но она настолько большая, что мои мозги сели. В общем я в ступоре. Направьте меня еще немного, что дальше смотреть?

[/quote]



Сделайте блок аналогичный цене или любому другому блоку с классом cm-reload .



Функция как раз забирает все блоки с данным классом и обновляет их. Помимо класса важны также id блоков.

Делал, результата нет. Функция забирает как я понял не просто cm-reload класс, а cm-reload-25 (где 25 - это id товара). Т.е. просто вставить похожий блок с другим id не получится. С таким же - тогда уникальности не будет и толку ноль.



Если только в product_data.tpl где формируется блок с ценой вставлять что-то, ни и что толку то? ну будет 2 числа обновляться. Мне же нужна переменная, чтобы её потом использовать в расчетах. Посмотрел как по кнопке “в корзину” вытаскивается цена товара для добавления в корзину - там кода на несколько экранов, запросы и т.д. (ну по крайней мере мне так показалось).



В общем дело труба. Вроде ajax все просто и на примерах в видео все просто, но здесь все как-то не так и руки видимо не из того места растут.



:(((( help me please

Здравствуйте Даниил.

Начал делать модуль который генерирует код товара и seo_name по определенным правилам. Срабатывание кода после контроллера products.update.



Начал с seo_name. Создал папку, файл addon.xml, настройку типа конструктора {название} - {код}.



Код файла addons/seo_name_ext/controllers/backend/products.post.php


[CODE]

<?php
use Tygh\Registry;

if (!defined('BOOTSTRAP')) { die('Access denied'); }

if ($mode == 'update') {

//Получение данных о товаре
$product_data = Registry::get('view')->getTemplateVars('product');

if (Registry::get('addons.seo_name_ext.override_product_seo_name') == 'Y') {

// Если включена настройка override_product_seo_name, получим значение настройки product_seo_name из addon.xml
$_seoname = Registry::get('addons.seo_name_ext.product_seo_name');

// Заменим текущий seo_name (введенный вручную или сгенерированный addon_seo) на значение настройки
$_seoname = str_replace("{product_code}", $product_data['product_code'], $_seoname);
$_seoname = str_replace("{product}", $product_data['product'], $_seoname);

// А вот дальше что делать, как сохранить его в базу? Возможно код ниже, но он не сохранит в базу.
//Registry::get('view')->assign('seo_name', $_seoname);
}
}
?>

[/CODE]



Если не сложно, посмотрите что не так. И вообще имеет ли право на жизнь этот код.

Думаю, модуль будет многим полезен.

Спасибо.

[quote name='a_tsvetkov' timestamp='1427408607' post='209213']

Здравствуйте Даниил.

Начал делать модуль который генерирует код товара и seo_name по определенным правилам. Срабатывание кода после контроллера products.update.



Начал с seo_name. Создал папку, файл addon.xml, настройку типа конструктора {название} - {код}.



Если не сложно, посмотрите что не так. И вообще имеет ли право на жизнь этот код.

Думаю, модуль будет многим полезен.

Спасибо.

[/quote]



Я боюсь, что к моменту срабатывания post контроллера, данные о SEO имени уже сохранятся.



Найдите в модуле SEO , какой хук или функцию он использует, для сохранения в базу , ищите по INSERT или REPLACE .

[quote name=‘densvi’ timestamp=‘1427400207’ post=‘209209’]

:(((( help me please

[/quote]



Давайте детальное описание, что нужно сделать.



Как будет выглядеть блок, где он будет расположен, какие расчёты нужны. Картинки рулят.

Даниил, спасибо вам.



В карточке товара есть цена, справа от нее вот такую надпись добавил “Узнайте, как купить дешевле”.







Это ссылка, по клику по ней появляется всплывающее окно:







Они сделано по примеру их документации, а именно:


[CODE]

Узнайте, как купить дешевле



Для того, чтобы купить этот товар дешевле:

1) Зарегистрируйтесь у нас на сайте.
В этом случае мы вам дадим скидку 5% и товар вам обойдется в {$product.price*0.95} руб.

2) Оплатите покупку наличными.
Мы дадим вам скидку еще 3%. В этом случае товар вам обойдется в {$product.price*0.95*0.97} руб.

Это ваша гарантированная цена {$product.price*0.95*0.97} руб.

А если вы купите этот товар в свой день рождения, то мы вам предоставим дополнительную скидку в 3%, тогда стоимость этого товара для вас составит всего {$product.price*0.95*0.97*0.97} руб.




[/CODE]

[b]Вот в этом коде вместо $product.price нужно использовать какую-то переменную, которая обновляется при выборе опции и происходит перерасчет. Также хотел вставить вместо надписи "Узнайте, как купить дешевле" на первом рисунке сразу надпись "Узнайте как купить за XXXX руб" вместо XXXX должна быть итоговая цена со всеми скидками, которая должна также меняться при изменении опции. Вот как-то так.[/b]

[url="http://hostingkartinok.com/show-image.php?id=3dee5c825e58f60de0371c5202257a4a"][img]http://s7.hostingkartinok.com/uploads/images/2015/03/3dee5c825e58f60de0371c5202257a4a.jpg[/img][/url]

На этом рисунке я поменял опцию и поменялась цена, однако во всплывающем окне так соответственно все и осталось, т.к. используется цена по умолчанию без учета опции.

[quote name='densvi' timestamp='1427447390' post='209241']

Даниил, спасибо вам.



На этом рисунке я поменял опцию и поменялась цена, однако во всплывающем окне так соответственно все и осталось, т.к. используется цена по умолчанию без учета опции.

[/quote]



Вот так понятно. Ща гляну.