Евгений Webinmd

Евгений Webinmd

С нами с 07 января 2013; Место в рейтинге пользователей: #23
Евгений Webinmd
03 января 2017, 00:49
0
есть зарезервированный link, или pdoMenu устанавливает параметр этот, не помню, попробуйте переименовать link и перезаполнить, чтобы значения вписались в новоё имя

Есть еще вариант, в pdoPage вписать в includeTVs имя TV migx links и в чанке links_category вызов поменять на
[[!getImageList?
  &value=`[[+tv.links]]` 
  &limit=`10`
  &sortby=`{"publishedon":"DESC"}`
  &tpl=`@CODE: <li>
                 <a href="[[+link]]" target=_blank>[[+caption]]</a>
                 <div class="descr">[[+descr]]</div>
               </li>`
]]
хотя есть сомнения что это повлияет как-то
и вроде как нет параметра sortby
Евгений Webinmd
03 января 2017, 00:24
0
попробуйте не кешированный вызов
то есть добавьте "!"
Евгений Webinmd
03 января 2017, 00:23
0
Подскажите, что я делаю не так? Спасибо!
Вы не приводите ни строчки кода.
Евгений Webinmd
30 декабря 2016, 13:23
+3
нужно сменить права. Из документации к Office
Обратите внимание, что мы должны дать группе (аноним) доступ Load only, чтобы они могли загрузить страницу, проверить права доступа и получить «403 Доступ запрещен». Если не дать им Load only, то страница для них не будет существовать, и анонимы получат «404 не найдено».
Евгений Webinmd
22 декабря 2016, 10:58
0
Да, действительно отличное решение
Евгений Webinmd
21 декабря 2016, 12:44
0
один раз да, а потом при создании нового товара всё равно необходим плагин
Евгений Webinmd
21 декабря 2016, 12:39
0
1) Создать поле для минишопа (либо создать TV поле) в котором будет храниться процент ваш

2) Написать плагин на событие OnDocFormSave
Привел пример и с полем minishop и с TV полем
<?php
if ( $modx->event->name != "OnDocFormSave" || $resource->get('class_key') != 'msProduct' ) return;

$id = $resource->get('id');
$res = $modx->getObject('msProduct', $id); // Получаем объект товара
$price = $res->get('price'); // Получаем цену
$old_price = $res->get('old_price'); // Получаем цену

$tvId = 12; // тут ID TV поля если используется оно

// тут уже ваши манипуляции и расчеты 
$price = str_replace(" ","",empty($price) ? 0 : $price);
$old_price = str_replace(" ","",empty($old_price) ? 0 : $old_price);

if($old_price > 0){

	$procent = number_format(round((($old_price - $price) / $old_price) * 100), 0, '.', ' ');

	// тут для минишопа сохранение 
	$res->set('field_procent', $procent); // Записываем процент в поле для минишопа (если создали его заранее)

	// тут вот для TV поля ()если используете его
	if ($tv = $modx->getObject('modTemplateVarResource', array('tmplvarid' => $tvId , 'contentid' =>$id))) {
        $tv->set('value', $procent); 
        $tv->save(); 
    }

    // сохраняем 
	$res->save();

}
И дальше уже в сниппете вывода сортируете как по обычному полю.

Для того чтобы не пересохранять ВСЕ товары можно написать скрипт и щапустить его в компоненте Console
<?php

$output = $modx->runSnippet('msProducts', array(
    'parents' => '0',
    'depth' => '5',
    'returnIds' => '1',
    'limit' => '3000',   
    ));

$arr = explode(',',$output); 

foreach($arr as $value){ 

    // а тут уже сами пишите получение цен и запись в поле, в зависимости от того что использовать будете TV или minishop поле, можно из плагина скопировать часть кода 
 
}

Павел, сорри, написал не обновляя, уже жалко удалять, но код писался на коленке, так что может и не работать
Евгений Webinmd
17 декабря 2016, 16:53
0
может есть компоненты которые работают уже с этим событием и перехватывает его
Евгений Webinmd
12 декабря 2016, 23:56
+1
некропост потомкам:
<form class="ajax_form" method="post" enctype="multipart/form-data"  > ... </form>
Евгений Webinmd
12 декабря 2016, 18:56
0
Обратите внимание на параметр class для сниппета + showLog
пример (необходимо указать класс вашей таблицы):
[[pdoResources?
&class=`myClass` 
&tpl=`tpl.chunk`
&sortby=`id`  
]]
Евгений Webinmd
12 декабря 2016, 16:02
0
Решение для моей ситуации (QuickView + bootstrap 4): Обновить bootstrap-dialog.min.js
Новый код взял отсюда:
github
Евгений Webinmd
10 декабря 2016, 13:00
0
можно написать плагин на событие сохранения формы чтобы брались значения цен и записывались ваши вычисления либо в TV поле либо в minishop поле и потом по этому полю сортировать, это и быстрее в итоге выйдет
Евгений Webinmd
10 декабря 2016, 00:49
0
Володя, добрый вечер
тут заказчик купил этот модуль, поставил, вывели у товара, кнопка появилась, но при нажатии в консоль такое вот сообщение вылезло:

jquery.min.js:4 Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check xhr.spec.whatwg.org/.send
@ jquery.min.js:4ajax
@ jquery.min.js:4getResponse
@ default2.js:110(anonymous function)
@ default2.js:45dispatch
@ jquery.min.js:3q.handle
@ jquery.min.js:3
bootstrap.min.js:6 Uncaught TypeError: Cannot call a class as a function(…)
default2.js — это я уже скопировал скрипт на всякий случай, но еще не ковырял его, он идентичен оригиналу
Есть подозрения что это из-за того что в верстке используется bootstrap 4 (хотя его полностью убирал) но всё равно непонятно.

Собственно вопрос, не тестировался ли компонент с новой версией bootstrap или не сталкивался ли с такой вот проблемой?

Как заказчик скинет доступы в кабинет modstore, напишу туда уже, если не получится разобраться.
Евгений Webinmd
09 декабря 2016, 18:22
0
Добрый день, очень удобный компонент, есть небольшой вопрос, не планируется ли добавление поля типа Изображение?
я поставил
{
    xtype: 'modx-combo-browser'
    ,fieldLabel: _('ms2_product_mytextfield')
    ,description: _('ms2_product_mytextfield_help')
    ,name: 'image'
    ,allowBlank:true
    ,anchor: '100%'
}
Как бы картинку выбрать можно, всё отлично, только вот renderer бы еще
Евгений Webinmd
06 декабря 2016, 11:39
0
покажите вызов msearch
Евгений Webinmd
18 ноября 2016, 17:24
0
не уверен, но попробуйте параметр
&prepareTVs=`opinion-partner`
или как там называется TV с картинкой
Евгений Webinmd
14 ноября 2016, 15:52
0
почитайте по этому дополнению, может подойдёт msOptionsPrice2
Евгений Webinmd
12 ноября 2016, 12:40
0
создаете плагин (код по ссылке выше), называете как угодно, вешаете на события:
OnWebPagePrerender
OnPageNotFound
OnHandleRequest

Сохраняете.
Чистите кеш.