Николай

Николай

С нами с 06 марта 2013; Место в рейтинге пользователей: #94
Николай
21 октября 2014, 05:37
0
В том примере я не заполняю [[+old_price]]. Значение в корзине подставляется туда автоматический. До тех пор, пока цена за товар в корзине равна цене за товар в карточке товара, [[+old+price]] пустой, если мы меняем цену в корзине на любую другую, отличную от цены в карточке товара, в [[+old_price]] автоматический записывается цена за товар, реальная. Вы же изначально как я понял в карточке товара заполняете old_price.
Николай
20 октября 2014, 17:46
0
Ссылка s424.h2.simpledream.ru доступна в течении суток. Если что.
Николай
20 октября 2014, 06:02
0
Использовал old_price, потому что как раз нужно было, чтобы цена зачеркивалась.
Если у товара будет заполнена цена, а мы в классе корзине ее изменим — появится нужная перечеркнутая цена. То есть товар 1 имеет стоимость 500 рублей. В файлике mscarthandler мы у товара меняем цену на 400 рублей. В этом случае [[+old_price]] станет автоматический 500 рублей.
s424.h2.simpledream.ru/ Накидал пример. У товара цена 500р, в классе корзине
$price = '300';
tpl.msCart.row
<td class="price"><span>[[+price]]</span> [[%ms2_frontend_currency]][[+old_price]]</td>
Да, у вас на сайте нормально работает. Но ведь переменная $product не определена, откуда берется ее значение в change? Если добавить $product = $doc, то все ок.
Извиняюсь, не заметил и не весь код дал. У меня там действий больше (как можно увидеть на сайте большой набор цен хранящийся в JSON). Да, действительно нужно в функции change дописать
global $modx;
$product = $modx->getObject('modResource',$this->cart[$key]['id']);
Николай
19 октября 2014, 23:03
0
Да, чтобы динамический менялись цены, находящиеся в плейсхолдере [[+price]] нужно дорабатывать js часть корзины, или же перейти на главную страницу сообщества и опустить глаза на 4 топик, решающий вашу проблему.
Использовать old_price как по мне это не очень красивое решение. Не понял, на функцию изменения было добавлено всего 2 строчки? Хотя странно что не сработал.
shop.plugingrid.com/ Тут все достаточно работоспособно крутится.
Николай
17 октября 2014, 18:19
0
У меня несколько десятков сайтов на сервере, в которых есть транспортные пакеты. Скажи что нужно и я скину в облако тебе файлы.
Николай
13 октября 2014, 17:14
1
+3
К документу цепляем обычный текстовый TV, в котором будет храниться оптовая цена. Назовем ее «opt».
/core/components/minishop2/model/minishop2/mscarthandler.class.php
Ищем там строчку
$price = $product->getPrice();

В функции add
Далее меняем ее на:
global $modx;
$doc = $modx->getObject('modResource',$id);
$opt = $doc->getTVValue('opt');

if ($response['data']['count'] => 100) {
  $price = $opt;
} else {
  $price = $product->getPrice();
}
Далее ищем
public function change($key, $count) {
И немного изменяем ее.
После
$count = $response['data']['count'];
Дописываем код:
global $modx;
$doc = $modx->getObject('modResource',$this->cart[$key]['id']);
$opt = $doc->getTVValue('opt');

if ($response['data']['count'] => 100) {
  $this->cart[$key]['price'] = $opt;
} else {
  $this->cart[$key]['price'] = $product->getPrice();
}
Да грубо, но это работает. Извиняюсь перед Владимиром что возможно лишил его 2 000р. Я подобную задачу решал, и мне не жалко подсказать за бесплатно.
Николай
13 октября 2014, 15:56
3
+1
Да, все больше чем элементарно.
Вариантов решения несколько. Какой будет лучше конкретно вам — решайте сами.
1. В лоб редактирование класса корзины. Находится он тут:
/core/components/minishop2/model/minishop2/mscarthandler.class.php
Интересовать вас будет функция add, и строчка
$price = $product->getPrice();
Работаете непосредственно с ней.

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

3. Плагины. Вам нужно создать плагин, который на событие msOnBeforeAddToCart будет пересчитывать цену.
* Also you can modify $count and $options variables by add values to $this->modx->event->returnedValues
<?php
  if ($modx->event->name = 'msOnBeforeAddToCart') {
  $values = & $modx->event->returnedValues;
  $values['count'] = $count + 10;
  $values['options'] = array('size' => '99');
}
*
 * */
Пример взят из файла с классом корзины. Я лично использовал 1 способ, т.к делал для себя.
Николай
06 октября 2014, 15:05
0
Кстати говоря, у меня чистая ОС, буквально вчера накатил все все обновления. «2998527» нету, но админка виснет. Приходится в IE работать
Николай
28 сентября 2014, 17:36
+1
А зачем?
Николай
26 сентября 2014, 17:34
0
Мое дело предложить. Ваше дело решить использовать этот метод или же применить какой то другой.
Николай
26 сентября 2014, 16:06
0
Могу предложить велосипед, который однозначно проще в исполнении, чем доработка MS2.
У товара сделать 2 TV. Первое — это его цена, то самое значение, которое неизменно. Курс, который вы парсите держать в созданной настройке [[++curse]]. А далее просто доработать тот же крон скрипт, который после получения курса пробежится по товарам, возьмет 1 TV поле с неизменной ценой, умножит это на курс, который вы парсите, и сохранит значение во второе TV, по которому и будет идти фильтрация. По мне этот способ будет однозначно быстрее и проще чем дорабатывать mFilter.
Николай
17 сентября 2014, 22:34
0
Спасибо. А вызывать процессор из сниппета так?
<?php
$otherProps = array(
    'processors_path' => $modx->getOption('core_path') . '/model/modx/processors/my/'
);
$fields = '';

$response = $modx->runProcessor('my/test', $fields);
if ($response->isError()) {
return $modx->error->failure($response->getMessage());
}
print_r($response);
Сейчас ругается:
Fatal error: Cannot unset string offsets in /var/www/scripts/data/www/scripts.fvds.ru/core/model/modx/modprocessor.class.php on line 57
В файле это строчка
unset($properties['HTTP_MODAUTH']);
В функции
public function setProperties($properties) {
        unset($properties['HTTP_MODAUTH']);
        $this->properties = array_merge($this->properties,$properties);
    }
Николай
17 сентября 2014, 17:55
0
Там отправка писем запрещена.
Николай
09 сентября 2014, 10:08
+2
Меня СЕОшник с этим задолбал просто. Это называется «Оформить хлебные крошки в микроформате». Тогда например в гугле нашли что то у вас на сайте, высветится не просто ссылка на материал, а структурированный путь. Например

Вот ссылка на топик. Если были бы оформлены хлебные крошки в микроформате, то под заголовком была бы не ссылка (которая не кликабельна), а что то типа:
modx.pro /Блоги /Готовые решения"
Все 3 были бы ссылки, и вели на категории.
Николай
04 сентября 2014, 23:09
0
Если мне память не изменяет, то
1. Ты не добавил выборку tv metor
2. where=`{"":"","":""}`
Могу ошибаться
Николай
04 сентября 2014, 20:47
+2
Источники файлов, в настройках изменить фон из 000000 на ffffff
Николай
25 августа 2014, 10:09
0
Сработало, спасибо. Буду на будущее иметь ввиду.
Николай
24 августа 2014, 23:05
0
Оставлю несколько слов благодарности. На предыдущем сервере так ничего и не поехало, арендовал на fvds за 150р вдску, завелось все с полпинка. sendmail только не поехал, но пока не до него, позже посмотрю что не так. По поводу phpnyadmin — можно обойтись webmin'ом. Штука тоже удобная. Спасибо за инструкцию.
Николай
30 июля 2014, 12:39
0
Я кстати только хотел отправить вопрос в черновики. Вопрос задал — ответ получил, больше меня ничего интересовало…
Николай
29 июля 2014, 15:15
0
Пятым — 74 процента скорость загрузки сайта — повысить хотя бы до 85
От куда эти цифры?