Андрей

Андрей

С нами с 28 февраля 2013; Место в рейтинге пользователей: #142
Андрей
23 июня 2017, 20:13
+1
Да он будет на всех страницах, но можете ограничить его поставив условие, например

//по id, parent, template или еще как-то

if ($modx->resource->id == 1) {
...
}

Сниппет вам не нужен будет скорее всего, раз вы в плагине все менять будете.
Андрей
23 июня 2017, 18:55
0
Посмотрите ошибки в консоли браузера, в логах модх и сервера. Возможно при создании коллекции вы что-нибудь не так указали.
Андрей
23 июня 2017, 18:52
0
Копать в параметры phpthumb которые у minishop2  задаются в его источнике файлов.
Андрей
23 июня 2017, 17:26
0
От 100 000 р, все будет зависеть от ТЗ, контакты в профиле.
Андрей
23 июня 2017, 15:16
0
mFilter2 либо свой велосипед, pdoPage c включенным ajax не будет работать через ajax
Андрей
23 июня 2017, 15:10
+2
Если я правильно понял, то сделайте плагин для события OnLoadWebDocument и перезаписывайте там на лету все что угодно

$modx->resource->pagetitle = 'новый pagetitle';
Андрей
23 июня 2017, 08:59
0
Добрый день, готов обсудить, все контакты в профиле, пишите в скайп или на почту.
Андрей
22 июня 2017, 08:32
+1
1. SimpleSearch не поддерживает Fenom, так что используйте обычный синтаксис

2. С картинками можно делать так
{set $image = 'phpthumbon' | snippet : [
	'input' => '/assets/userfiles/'~$item['image'],
	'options' => 'w=470&h=320&zc=1'
]}

<img class="img-fullwidth lazy" src="{$image}" alt="">
Андрей
20 июня 2017, 20:11
0
Посмотрите, есть ли ошибки в логах модх и сервера.
Андрей
20 июня 2017, 19:14
0
Просто, пропустите этот шаг

Плейсхолдер у вас тогда будет выглядеть так
<span class="ms2_total_count_position">[[+total_count_position]]</span>
Андрей
20 июня 2017, 18:13
1
+1
Да, сейчас проверил, в сниппете BabelLinks в начале пишете

$pdo = $modx->getService('pdoTools');

//далее в сниппете меняете в трех местах $babel->getChunk на $pdo->getChunk

И все, теперь сниппет поддерживает fenom
Андрей
20 июня 2017, 17:39
0
В BabelLinks вызывается стандартный парсер modx, а не pdoParser, поэтому и не работает, используйте стандартные плейсхолдеры [[+cultureKey]].

Либо в сниппете подключите сервис pdotools и всю обработку чанков производите через него.
Андрей
19 июня 2017, 08:17
0
pdoResources и отбор результатов по where не пойдет?

Как-нибудь так
[[pdoResources?
	&where=`{"city:LIKE":"%[[!#.get.city]]%","cafe:LIKE":"%[[!#.get.cafe]]%"}`
]]
Андрей
16 июня 2017, 15:14
0
В вашей задаче проще всего условие поставить в чанке/шаблоне как в первом комментарии вам написали. Для сниппета или плагина так же придется условие ставить.
Андрей
16 июня 2017, 14:43
+1
Чанк в сниппете getimagelist отрабатывает через стандартный парсер modx, а не через парсер pdoParser, поэтому не работает.

Если очень хочется что бы работал, то в сниппете надо вызвать сервис и поменять вызовы обработки чанков, должно работать
$pdo = $modx->getService('pdoFetch');

//далее везде заменить $modx->getChunk на $pdo->getChunk

Но смысла не вижу, т.к. через foreach удобнее, а почти все параметры можно с помощью условий сделать.
Андрей
16 июня 2017, 07:51
2
+1
Там стандартные опции color, size задаются так
$product->set('color', array('черный', 'белый'));

А те опции которые создаешь сам так
$options = array(
	'option1' => array('value1', 'value2'),
	'option2' => array('value1', 'value2')
);

$product->set('options', $options);
Андрей
15 июня 2017, 17:43
0
Попробуй rowTpl в чанк вынести, а не инлайном
Андрей
15 июня 2017, 17:41
0
В сниппете getimagelist нет, т.к. он не поддерживает fenom.

Но можно выводит используя fenom
{foreach $_modx->resource.tv_name | json_decode as $item}
	<div>{$item.title}</div>
{/foreach}
Андрей
15 июня 2017, 17:37
0
Тогда просто делаете аякс запрос к вашему контроллеру с параметрами — id товара, добавить/удалить лайк. А уже в контроллере ищете товар в вашей таблице по id и далее создаете/обновляете запись с количеством лайков.
Андрей
15 июня 2017, 17:32
2
0
Надо плагин сделать для минишопа как описано тут.

Работает это с версии минишоп 2.4 как я понимаю.

1. В папке /core/components/minishop2/custom/cart/ создаете файл mascarthandlerstatus.class.php который будет расширять класс корзины

2. В этом файле пишете
<?php

if(!class_exists('msCartInterface')) {
    require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/mscarthandler.class.php';
}

class msCartHandlerStatus extends msCartHandler implements msCartInterface{

    public function status($data = array())
    {
        $status = array(
            'total_count' => 0,
            'total_count_position' => 0,
            'total_cost' => 0,
            'total_weight' => 0
        );

        foreach ($this->cart as $item) {
            if (empty($item['ctx']) || $item['ctx'] == $this->ctx) {
                $status['total_count_position'] += 1;
                $status['total_count'] += $item['count'];
                $status['total_cost'] += $item['price'] * $item['count'];
                $status['total_weight'] += $item['weight'] * $item['count'];
            }
        }

        return array_merge($data, $status);
    }
}

3. В плагине Console (если его нет, то надо поставить) выполняем следующий код
if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->addService('cart', 'msCartHandlerStatus',
        '{core_path}components/minishop2/custom/cart/mascarthandlerstatus.class.php'
    );
}
Таким образом мы добавляем новый обработчик корзины

4. Далее идем в Системные настройки -> mimishop2 -> Класс обработчик корзины и указываем там msCartHandlerStatus

5. Теперь в плейсхолдере total_count_position будет отображаться количество позиций в корзине

6. Что бы все это и по аяксу обновлялось, в js в ваших скриптах или просто в конце страницы (главное что бы он был после подключения скрипта от минишопа) добавляем такой код
miniShop2.Cart.status = function (status) {
  if (status['total_count'] < 1) {
      location.reload();
  }
  else {
      var $miniCart = $(miniShop2.Cart.miniCart);
      if (status['total_count'] > 0 && !$miniCart.hasClass(miniShop2.Cart.miniCartNotEmptyClass)) {
          $miniCart.addClass(miniShop2.Cart.miniCartNotEmptyClass);
      }
      $(miniShop2.Cart.totalWeight).text(miniShop2.Utils.formatWeight(status['total_weight']));
      $(miniShop2.Cart.totalCount).text(status['total_count']);
      $(miniShop2.Cart.totalCost).text(miniShop2.Utils.formatPrice(status['total_cost']));
      $('.ms2_total_count_position').text(status['total_count_position']);
      if ($(miniShop2.Order.orderCost, miniShop2.Order.order).length) {
          miniShop2.Order.getcost();
      }
  }
};

7. Теперь в миникорзине или корзине можно писать так
<span class="ms2_total_count_position">{$total_count_position}</span>