Всего 125 988 комментариев

Павел Романов
17 ноября 2021, 16:42
0
Так у Вас msOptionsPrice перебивает плагин — он же тоже на msOnBeforeAddToCart висит. Попробуйте поменять приоритет или повесить свой плагин на событие самого msOptionsPrice, например, на msopOnAfterGetCost.
Дмитрий Беляков
17 ноября 2021, 16:19
0
здесь значения быстро появляется новое и сразу жек сбрасывается на старое dropmefiles.com/5kudR
Дмитрий Беляков
17 ноября 2021, 16:16
0
Нефига. В консоле значение передается другое все равно. смотрите скрин dropmefiles.com/Q8AV1
Павел Романов
17 ноября 2021, 16:04
0
Код неправильный. Input — одинарный тег и его не нужно открывать/закрывать.
То есть именно так:
<input type="hidden" name="calc_price" value="" />

А в js через
$('input[name="calc_price"]').val(***);
Павел Романов
17 ноября 2021, 15:45
0
Где-то ошиблись. Это 100% работает )
Точно число приходит в поле? Без пробелов?
Павел Романов
17 ноября 2021, 14:55
0
Сделайте в форме кнопки скрытое поле, куда передавайте JS-ом рассчитанное калькулятором значение:
<input type="hidden" name="calc_price" value="" />

Сделайте плагин на событие msOnBeforeAddToCart, где ловите его и подменяйте цену товара:

if(is_numeric($_POST['calc_price'])){
    $product->set('price', $_POST['calc_price']);
}
VictorVethon
17 ноября 2021, 13:10
0
Пошел по тому же пути тк дельного ответа не нашел. Сделал через скрипты)

это вставляем туда, где хотим отобразить город —
<div id="citylocation"></div>
а это куда-нибудь в html
<script>
    if ([[!+gl.current.city.id]] == 1) var citylocation = " [[!+gl.real.city.name_ru]] ";  
    else var citylocation = " [[!+gl.selected.city.name_ru]] "; 
    document.getElementById("citylocation").innerHTML = citylocation;
</script>
Теперь по умолчанию показывает real город, а после выбора города, меняется на выбранный
SYAN
17 ноября 2021, 12:46
0
Аналогичная дилемма, не могу «достучаться» до small и medium

{'!pdoPage' | snippet : [
	'element' => 'msProducts',
	'parents' => '840',
	'limit' => '5',
	'offset' => '0',
	'depth' => '10',
	'tvPrefix' => '',
	'select' => 'pagetitle, id, small, medium'
	'includeThumbs' => 'small, medium',
	'tpl' => '@INLINE id={$id} sm={$small} med={$medium} th={$thumb}
',
	'showLog' => '1'
]}
id=1270 sm= med= th=/assets/images/gallery/1270/small/scale-1200.jpg
id=1271 sm= med= th=/assets/images/gallery/1271/small/maxresdefault-(1).jpg
id=1272 sm= med= th=/assets/images/gallery/1272/small/fffff1.jpg
id=1276 sm= med= th=/assets/images/gallery/1276/small/0-02-05-5d02719d25c310d2fab855d57d513acfe4d9210fc4cacd93b04859c68b064021-ba4aa39157e0f880.jpg
id=1278 sm= med= th=/assets/images/gallery/1278/small/image-17-05-21-06-53.jpg
0.0002019: pdoTools loaded.
0.0067320: Conditions prepared
0.0000679: xPDO query object created
0.0003850: leftJoined msProductData as Data
0.0002551: leftJoined msVendor as Vendor
0.0035899: leftJoined msProductFile as small
0.0002770: leftJoined msProductFile as medium
0.0000079: Grouped by msProduct.id, `small`.url, `medium`.url
0.0000529: Added selection of msProduct: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `alias_visible`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
0.0000269: Added selection of msProductData: `article`, `price`, `old_price`, `weight`, `image`, `thumb`, `vendor`, `made_in`, `new`, `popular`, `favorite`, `tags`, `color`, `size`, `source`
0.0000231: Added selection of msVendor: `name` AS `vendor.name`, `resource` AS `vendor.resource`, `country` AS `vendor.country`, `logo` AS `vendor.logo`, `address` AS `vendor.address`, `phone` AS `vendor.phone`, `fax` AS `vendor.fax`, `email` AS `vendor.email`, `description` AS `vendor.description`, `properties` AS `vendor.properties`
0.0000350: Added selection of msProductFile: url as `small`
0.0000160: Added selection of msProductFile: url as `medium`
0.0012341: Processed additional conditions
0.0018170: Added where condition: class_key=msProduct, msProduct.parent:IN(840,1278,1279,1280), OR:msProduct.id:IN(1270,1271,1272,1276,2445,2674,3319,3326,3327,3360,3361), msProduct.published=1, msProduct.deleted=0
0.0001121: Sorted by msProduct.id, ASC
0.0000029: Limited to 5, offset 0
0.0004950: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `msProduct`.`id`, `msProduct`.`type`, `msProduct`.`contentType`, `msProduct`.`pagetitle`, `msProduct`.`longtitle`, `msProduct`.`description`, `msProduct`.`alias`, `msProduct`.`alias_visible`, `msProduct`.`link_attributes`, `msProduct`.`published`, `msProduct`.`pub_date`, `msProduct`.`unpub_date`, `msProduct`.`parent`, `msProduct`.`isfolder`, `msProduct`.`introtext`, `msProduct`.`richtext`, `msProduct`.`template`, `msProduct`.`menuindex`, `msProduct`.`searchable`, `msProduct`.`cacheable`, `msProduct`.`createdby`, `msProduct`.`createdon`, `msProduct`.`editedby`, `msProduct`.`editedon`, `msProduct`.`deleted`, `msProduct`.`deletedon`, `msProduct`.`deletedby`, `msProduct`.`publishedon`, `msProduct`.`publishedby`, `msProduct`.`menutitle`, `msProduct`.`donthit`, `msProduct`.`privateweb`, `msProduct`.`privatemgr`, `msProduct`.`content_dispo`, `msProduct`.`hidemenu`, `msProduct`.`class_key`, `msProduct`.`context_key`, `msProduct`.`content_type`, `msProduct`.`uri`, `msProduct`.`uri_override`, `msProduct`.`hide_children_in_tree`, `msProduct`.`show_in_tree`, `msProduct`.`properties`, `Data`.`article`, `Data`.`price`, `Data`.`old_price`, `Data`.`weight`, `Data`.`image`, `Data`.`thumb`, `Data`.`vendor`, `Data`.`made_in`, `Data`.`new`, `Data`.`popular`, `Data`.`favorite`, `Data`.`tags`, `Data`.`color`, `Data`.`size`, `Data`.`source`, `Vendor`.`name` AS `vendor.name`, `Vendor`.`resource` AS `vendor.resource`, `Vendor`.`country` AS `vendor.country`, `Vendor`.`logo` AS `vendor.logo`, `Vendor`.`address` AS `vendor.address`, `Vendor`.`phone` AS `vendor.phone`, `Vendor`.`fax` AS `vendor.fax`, `Vendor`.`email` AS `vendor.email`, `Vendor`.`description` AS `vendor.description`, `Vendor`.`properties` AS `vendor.properties`, `small`.url as `small`, `medium`.url as `medium` FROM `modx_site_content` AS `msProduct` LEFT JOIN `modx_ms2_products` `Data` ON `msProduct`.`id` =  `Data`.`id` LEFT JOIN `modx_ms2_vendors` `Vendor` ON Data.vendor=Vendor.id LEFT JOIN `modx_ms2_product_files` `small` ON `small`.product_id = msProduct.id AND `small`.rank = 0 AND `small`.path LIKE '%/small/%' LEFT JOIN `modx_ms2_product_files` `medium` ON `medium`.product_id = msProduct.id AND `medium`.rank = 0 AND `medium`.path LIKE '%/medium/%' WHERE  ( `msProduct`.`class_key` = 'msProduct' AND  ( `msProduct`.`parent` IN (840,1278,1279,1280) OR `msProduct`.`id` IN (1270,1271,1272,1276,2445,2674,3319,3326,3327,3360,3361) )  AND `msProduct`.`published` = 1 AND `msProduct`.`deleted` = 0 )  GROUP BY msProduct.id, `small`.url, `medium`.url ORDER BY msProduct.id ASC LIMIT 5 "
0.0307870: SQL executed
0.0004852: Total rows: 14
0.0001588: Rows fetched
0.0002320: Returning raw data
0.0039260: Checked the active modifiers
0.0100322: Created inline "modChunk" with name "155f451b34a1811dc72be7d50b156266"
0.0091128: Compiled Fenom chunk with name "modchunk/155f451b34a1811dc72be7d50b156266"
0.0147741: Time to load products options
0.0754728: Total time
4 194 304: Memory usage
Игорь
17 ноября 2021, 12:01
0
Да, конечно, читал… но меня смутило то, что в настройках modx у меня отключен показ ошибок, связанных с «deprecated» методами.
Павел Романов
17 ноября 2021, 10:17
+1
В форму добавления товара добавьте текстовое поле с name=«options[имя_поля]»:
<form method="post" class="ms2_form">
    ...
    <input type="text" name="options[fieldname]" value=""/>
    ...
</form>

Его значение в корзине и письмах выводите так:
{$product.options.fieldname}
Сергей Шлоков
17 ноября 2021, 08:17
0
Игорь, а Вы читали пост? Он же ведь не очень большой. И там по этому поводу всё написано — в следующей версии нельзя будет указывать путь для файловых элементов в параметрах сниппета. Он указывается в системной настройке администратором (!) и не должен переопределяться простым контент-менеджером.
Сергей Шлоков
17 ноября 2021, 08:12
+3
Кстати, если для основной части запросов ресурсы не нужны, то автозагрузку ресурсов можно отключить в соответствующей системной настройке. А для тех роутов, где ресурс нужен, подгружать его самостоятельно
$modx->resource = zoomx()->getResource($alias_or_id);
Константин
17 ноября 2021, 06:52
0
C Пользователем получилось, но пытаюсь по подобию пользователя вывести телефон — не получается.
$phone = $this->modx->newObject('modUserProfile', array('mobilephone' => $phone));
$pls['phone'] = $phone->get('mobilephone');
Не могу понять, то-ли логика нарушена, то ли опечатка в коде. Поле телефона стандартное.
Алексей Смирнов
16 ноября 2021, 22:57
0
Проблема в том что строка
document.location.reload();
стоит слишком рано. Исправленный вариант:
$(document).ready(function () {			
    $('.comparision__reset-list').click(function() {
        $('.comparison-row .comparison-head').each(function (index, element) {
	    $.ajaxSetup({
	        async: false
	    });
	    $.post(document.location.href, {
	        cmp_action: 'remove',
		list: $(this).data('list'),
		resource: $(element).attr('data-id')
	    }, function(response) {}, 'json');
	    $.ajaxSetup({
	        async: true
	    });
	});
     document.location.reload();
    });
});
Игорь
16 ноября 2021, 20:54
0
Всем привет! Спасибо автору за работу, однако…
Баг репорт! Версии: php — 7.3, Modx — 2.8.3, pdoTools 2.13.2 (последняя на данный момент).
При вызове pdoPage (ajax=scroll) вылазит ошибка
[pdoTools] The «tplPath» and «elementsPath» parameters are deprecated and will be removed in the next version.
, хотя все работает…
Андрей Степаненко
16 ноября 2021, 19:02
0
Спасибо)
Когда пробовал юзать, думал не учли)
Николай Савин
16 ноября 2021, 19:00
+3
Это не обязательно.
Если написать в начале контроллера вот так
zoomx()->autoloadResource(false);

то загрузка ресурса не потребуется.
Плюс если отправлять API запрос с заголовками (любым из них)
'Accept': 'application/json',
    'Content-Type': 'application/json'
то в этом случае также создание ресурса не потребуется.