Станислав

Станислав

С нами с 25 марта 2017; Место в рейтинге пользователей: #256
Василий Наумкин
21 февраля 2020, 12:46
1
+3
Это делает pdoPage, которому можно указать &setMeta=`0`
Станислав
17 сентября 2019, 18:58
1
0
Добрый вечер!
а как использовать тв в списке заказов из товара?
Ann
Ann
08 сентября 2019, 05:04
2
+1
Было решено написанием плагина, сохраняющим артикулы модификаций в аннотацию при сохранении товара.
$eventName = $modx->event->name;
switch($eventName) {
    case 'OnDocFormSave':

        $modpar = array(
          'rid' => $id
        );

        $mod = $modx->getCollection('msopModification', $modpar);
    
        $datamod = array();

        if ($mod){
          foreach ($mod as $v){
            $qi = ['mid' => $v->get('id')];
            $opt = $modx->getObject('msopModificationOption', $qi);
            $val = '';
            if ($opt){
              $val .= $v->get('article');
            }
            $datamod[] = $val;
            $intro = implode(",", $datamod);
          };
            $res = $modx->getObject('modResource', $id);
            $res->set('introtext', $intro);
            $res->save();  
        }
        break;
}
Для обновления существующих товаров:
if(!$docs = $modx->getCollection('modResource', array(
    'template' => 7
))){return;}
foreach($docs as $doc){
    $q = $doc->get('id');
    $modpar = array(
      'rid' => $q
    );

    $mod = $modx->getCollection('msopModification', $modpar);

    $datamod = array();

    if ($mod){
      foreach ($mod as $v){
        $qi = ['mid' => $v->get('id')];
        $opt = $this->modx->getObject('msopModificationOption', $qi);
        $val = '';
        if ($opt){
          $val .= $v->get('article');
        }

        $datamod[] = $val;
        $intro = implode(",", $datamod);
      };

        $doc->set('introtext',$intro);
        $doc->save();
    }
}
Игорь Гришанов
23 марта 2019, 16:33
3
+2
Павел абсолютно прав) Только что делал таким образом

Порядок действий такой
1) Находишь файл core/components/minishop2/model/minishop2/msorderhandler.class.php
2) находишь там функцию getCost и заменяешь ее тем что в приведенной Павлом ссылке
3) добавляешь скрипт из той же ссылки на страницу Оформления заказа в самом низу
4) выводишь ссылку в нужном месте
<span id="deliveryprice">Стоимость доставки: <span id="ms2_delivery_cost"></span> руб.</span>

это будет цена доставки
5) если еще надо цену заказа БЕЗ доставки то добавляешь в скрипт в функцию miniShop2.Callbacks.Order.getcost.response.success
такие строки например
var cartcost = response.data['cost'] - rdc;
    $('#ms2_cost').text(cartcost);
тогда ссылка на цену без доставки будет так
<span  id="ms2_cost"></span>
Петр Синечёв
22 февраля 2019, 09:31
1
+1
Теперь работает только на событие OnDocFormSave OnBeforeDocFormSave
Руслан Алеев
22 февраля 2019, 01:00
1
+1
У вас в плагине переменная $id не указана, может из-за этого?
$id = $resource->get('id');
Константин
09 февраля 2019, 23:38
1
0
Евгений, Вы немного не поняли мой вопрос. Хотя, то что Вы написали мне пригодится.

Попробую объяснить еще раз, что я хочу. Накидал я, например, в корзину несколько товаров, а затем перешел туда для оформления заказа. В корзине, напротив каждого товара есть поле Количество. Я хочу в одном из товаров поменять количество, допустим с 1 на 100. Ввожу с клавиатуры компьютера/телефона число 100 и мне нужно, чтобы при вводе итоговая сумма всей корзины сразу же пересчитывалась.
Dmitry Rodionov
09 февраля 2017, 22:36
4
0
Прошу прощения за некромантию, но может кому-то пригодится решение без модификации сниппета, на вышеуказанном примере, без использования leftJoin:
&optionFilters=`{
	"ps_target:!=":"",
	"ps_type:!=":""
}`
&where=`["
	(ps_target.value='Витрины и мебель' OR ps_target.value='Ландшафт' OR ps_target.value='Автомойки') AND 
	(ps_type.value='Модульный' OR ps_type.value='Ландшафтный' OR ps_type.value='Карданный')
"]`
по сути optionFilters подключает нужные таблицы и дает не противоречащие условия, а все остальное прописывает внутри where
Наумов Алексей
26 января 2017, 15:24
3
+1
Нужен плагин, примерно такой:

<?php
if ($modx->event->name == 'OnLoadWebDocument') {
  $request = $_SERVER['REQUEST_URI'];
  $params = '';
  if (strpos($request, '?') !== false) {
  	list($request, $params) = explode('?', $request);
  }
  $uri = $request;
  if(!empty($uri) && strpos($uri, '.') === false && substr($uri, -1, 1) != '/') {
    $uri .= '/';
    if (!empty($params)) {
      $uri .= '?' . $params;
    }
    $modx->sendRedirect($uri, array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
  }
}