Vladimir

Vladimir

С нами с 25 июня 2021; Место в рейтинге пользователей: #285

pdoSitemap ошибка карта начинается со 2й строки, как исправить?

Вызов 1 на странице, отступов нет
<?php
$output = $modx->runSnippet('pdoPage',array(
    'element' => 'pdoSitemap',
    'parents' => 0,
    'context' => $modx->context->key,
    'depth' => 10,
    'limit' => 100,
    'showHidden' => 0
));
return $output;
Тип страницы xml, шаблон пустой, когда всё установил она работала, но через время появилась вот эта ошибка!

в контенте страницы на первой строке вызов снипетта
{'!pars' | snippet}
больше ничего там нет
Vladimir
15 августа 2023, 09:27
modx.pro
429
0

Не устанавливается кастомная кнопка подгрузки pdopage mfilter2

minishop2 => 2.9.3
msearch2 => 1.10.2
pdoTools => 2.13.2

Вызов
[[!mFilter2?
	&element=`msProducts`
	&parents=`[[*id]]`
	&limit=`9`
	&depth=`0`
	&ajaxMode=`button`
	&tpl=`productTpl`
	&pageLimit=`3`
	&sortby=`{ "parent":"DESC", "menuindex":"DESC" }`
	&includeTVs=`productTitle,productHoverImage`
	&ajaxElemWrapper=`#pdopage`
	&ajaxElemRows=`#pdopage .rows`
	&ajaxElemMore=`#pdopage .btn_more`
	&ajaxTplMore=`@INLINE <button class="btn_more objs-btn def-btn wired-btn">Показать еще</button>`
]]
Устанавливается стандартная кнопка
<button class="btn btn-default btn_more">Загрузить еще</button>
Она работает всё подгружает, но это не та кнопка что я установил
Vladimir
14 августа 2023, 13:06
modx.pro
348
0

Как удалить загруженный файл через fastuploadtv?

Есть кнопка удалить и заменить, по идеи кнопка удалить, ДОЛЖНА УДАЛЯТЬ, но оно не удаляет, сам файл находится в assets папке, как мне сделать так чтобы оно удалялось?

В core пакета я не нашёл процессор или триггер для функции удаления, кто-нибудь уже решал эту проблему?
Vladimir
29 июня 2023, 12:02
modx.pro
1
446
0

Как прикрепить к письму файл что был сгенерирован в хуке в ajaxForm/Formit?

В форме нет файла(так же нет в приципе инпута, и указания мультипарта), но в хуке перед отправкой создаётся файл, как его прикрепить к письму?
Vladimir
01 июня 2023, 07:58
modx.pro
4
464
0

Как обрабатывать каждое торговое предложение? msync

Количество товара находится в торговом предложении, но событие «mSyncBeforeProductOffers» обрабатывается буквально 1 торговое предложение, а нужно снять с публикации если кол-во товара 0, так как обработать каждое торговое предложение?

Или нужно будет менять экспорт в 1с чтобы кол-во товара засунуть в свойства товара?
Vladimir
12 мая 2023, 12:54
modx.pro
1
492
0

Как автоматом указать характеристики только те что есть в товарах для категории?

Как в категории указать все характеристики что используются в товарах этой категории? в minishop2

[РЕШЕНО]

Суть в том чтобы в админке появились только те характеристики у товара которые есть, это значит поставить все уникальные характеристики для категории, нужно было именно такое решение, сделал сам. А если не нужно их указывать в админке для редактирования, то да проще будет вывести их список через pdoResources указав класс msCategoryOption

Буду рад кто исправит это код(КОД РАБОЧИЙ), чтобы был чище, так как делался на быструю руку решить задачу, а так же не было знаний для реализации этой задачи.

<?php

function prepareSqlQuery($sqlQuery){
	global $modx;
	return $modx->query($sqlQuery);
}


function extractResultsFromQueryObject($sqlQueryResult, $itemsToRetreive, $multiDimensionRetreive=false){
	global $modx;
	$results = array();

	if (is_object($sqlQueryResult)) {
		while ($row = $sqlQueryResult->fetch(PDO::FETCH_ASSOC)) {
			if($multiDimensionRetreive){
				foreach($itemsToRetreive as $key => $value){
					array_push($results, $row[$key], $row[$value]);
				}	    		
			} else {
				foreach($itemsToRetreive as $itemToRetreive){
					array_push($results, $row[$itemToRetreive]);
				}
			}
		}
	}
	return $results;
}


$prepareSqlQueryOfRetreiveCategories = prepareSqlQuery('SELECT modx_site_content.id FROM `modx_site_content` WHERE modx_site_content.class_key = "msCategory"');
$categoriesIds = extractResultsFromQueryObject($prepareSqlQueryOfRetreiveCategories, array('id'));

if(count($categoriesIds) <= 0){
	return 'Have no categories';
}


foreach($categoriesIds as $categoryId){

	$productsQueryObject = prepareSqlQuery('SELECT modx_site_content.id FROM `modx_site_content` WHERE modx_site_content.class_key = "msProduct" AND modx_site_content.parent = "'.$categoryId.'"');
	$productsIds = extractResultsFromQueryObject($productsQueryObject, array('id'));

	if(count($productsIds) <= 0) continue;

	$productsIds = implode(",", $productsIds);

	$distinctProductOptionsSqlQuery = prepareSqlQuery('SELECT DISTINCT modx_ms2_product_options.key FROM `modx_ms2_product_options` WHERE modx_ms2_product_options.product_id IN ('.$productsIds.")");
	$distinctProductOptions = extractResultsFromQueryObject($distinctProductOptionsSqlQuery, array('key'));

	if(count($distinctProductOptions) <= 0) continue;

	$uniqueOptions = "";
	$uniqueOptionsLength = count($distinctProductOptions);
	foreach ($distinctProductOptions as $idx => $value) {
		if($idx >= $uniqueOptionsLength - 1){
			$uniqueOptions .= "'$value'";
		} else{
			$uniqueOptions .= "'$value',";
		}
	}


	$uniqueOptionsIdsSqlQuery = prepareSqlQuery('SELECT modx_ms2_options.id,modx_ms2_options.key FROM `modx_ms2_options` WHERE modx_ms2_options.key IN ('.$uniqueOptions.')');
	$uniqueOptionsIds = extractResultsFromQueryObject($uniqueOptionsIdsSqlQuery, array('id'));

	if(count($uniqueOptionsIds) <= 0) continue;

	/* #################################### ##################################### */
	foreach($uniqueOptionsIds as $idx => $uniqueOptionId){
		if (!$cop = $modx->getObject('msCategoryOption', array('option_id' => $uniqueOptionId, 'category_id' => $categoryId))) {
			$table = $modx->getTableName('msCategoryOption');
			$sql = "INSERT INTO {$table} (`option_id`,`category_id`,`active`) VALUES ({$uniqueOptionId}, {$categoryId}, 1);";
			$stmt = $modx->prepare($sql);
			$stmt->execute();
		} else {
			$q = $modx->newQuery('msCategoryOption');
			$q->command('UPDATE');
			$q->where(array('option_id' => $uniqueOptionId, 'category_id' => $categoryId));
			$q->set(array('active' => 1));
			$q->prepare();
			$q->stmt->execute();
		}            
		
	}
	/* #################################### ##################################### */

	echo 'Done';
}
Vladimir
06 апреля 2023, 09:35
modx.pro
1
431
0

Не создаётся база данных при чистой установки modx 3, как исправить?

При переходе на шаг с подключением к бд, подключается проверяет, но не создаёт, как исправить?
prnt.sc/Lczge2CqSJFD
Почему не создаёт не выдаёт ошибку
Vladimir
31 марта 2023, 18:21
modx.pro
651
0

При выводе 2 блоков xlike, при клике на лайк или дизлайк, изменяется оба значения на кликнутое, как исправить?

Я вывел 2 раза так как по дизайну у меня есть 4 оценочных блока, выводил так.

{'!xLike' | snippet : [
    'guest' => true,
    'mode' => 'db',
    'tpl' => 'tpl.xLike',
    'likes' => $_modx->resource['greatNews'],
    'dislikes' => $_modx->resource['goodNews']
]}
{'!xLike' | snippet : [
    'guest' => true,
    'mode' => 'db',
    'tpl' => 'tpl.xLike',
    'likes' => $_modx->resource['notReallyNews'],
    'dislikes' => $_modx->resource['whatIsAboutThisNews']
]}
Кликаю на дизлайк в 1 блоке, всё отображается правильно, но при перезагрузке оба значения лайков или дизлайков становятся одинаковыми, хотя кликал на 1
Vladimir
28 марта 2023, 09:23
modx.pro
1
860
0

Есть ли аналог FastUploadTv для modx3?

FastUploadTv на Modx3 он не работает, и по все видимости переводить данный пакет никто не будет, есть ли уже аналог для modx3?
Vladimir
25 марта 2023, 13:47
modx.pro
528
0

Как узнать почему сохранение товара ведёт к бесконечному сохранение?

Кто-то до меня сделал что обычную страницу как товар, то есто страница допустим с политикой конфиденциальности это товар, и когда ы пытаюсь сменить на тип документ, илил вообще любое какое-нибудь там изменение оно уходит в бесконечное сохранение. Со временем в консоли разработчика пишет 500 ошибку и всё
Vladimir
02 марта 2023, 13:24
modx.pro
421
0