Leo

Leo

С нами с 11 декабря 2015; Место в рейтинге пользователей: #634
Kirill
05 марта 2020, 08:15
1
0
спасибо. поправил в 3 файлах

components/faq/model/faq/mysql/faqitem.map.inc.php
components/faq/model/bd_faq/mysql/bd_faqitem.map.inc.php
components/faq/model/schema/faq.mysql.schema.xml

тип на string и все заработало
Александр Туниеков
04 марта 2020, 23:49
1
+1
Известная проблема :-)
В файле faq.mysql.schema.xml
<field key="question" dbtype="text" length="1023" phptype="text" null="false" default=""/>
phptype=«text» нет такого. Когда-то работало, а сейчас надо phptype=«string». Замените phptype=«text» на phptype=«string» везде в схеме и перегенируйте классы XPDO. Я с помощью migx это делаю. Создание таблиц через MIGX
Владимир
31 января 2019, 01:03
3
0
Спасибо, Евгений!
Может для шаблона кому пригодится(копи/паст):
{block 'title'}
    {'ms2_email_subject_new_manager' | lexicon : $order}
    <ul style="font-size: 15px;">
        <li>Покупатель: [[+address.receiver]]</li>
        <li>Телефон: [[+address.phone]]</li>
        <li>Почта: [[+user.email]]</li>
        <li>Адрес: [[+address.city]], [[+address.street]], [[+address.building]], [[+address.room]]</li>
        <li>Способ доставки: [[+delivery.name]]</li>
        <li>Тип оплаты: [[+payment.name]]</li>
        <li>Комментрарий: [[+address.comment]]</li>
    </ul>
    <hr>
{/block}
Плагин на событие OnFileManagerUpload
<?php
// проверяем нужное событие
if ($modx->event->name != 'OnFileManagerUpload') {return;}

// подключаем phpthumb
require_once MODX_CORE_PATH.'model/phpthumb/phpthumb.class.php';

// параметры загружаемого файла
$file = $modx->event->params['files']['file'];
$directory = $modx->event->params['directory'];

// получаем media source
$ms = $modx->event->params['source'];
if($ms == null){
	return;
}

// настройки media source
$msProperties = $ms->get('properties');
$directory = $msProperties['basePath']['value'].$directory;

// на всякий случай проверяем наличие // и заменяем на /
$directory = str_replace('//', '/', $directory);

// настройки плагина
$config = array(
        $directory => array(
		'src' => array('w' => 1280,'h' => 1024,'zc' => 0,'q' => 80, 'fltr' => 'wmi|/watermark/logo.png|BR|50|5'),
		),
);

// смотрим, что при загрузке не возникло ошибок
if ($file['error'] != 0) {
	//fwrite($handle,"Ошибка при загрузке файлов \n");
	return;
}

$name = $file['name'];
$extensions = explode(',', $modx->getOption('upload_images'));

// проверям, что наша категория задана в настройках плагина
if (array_key_exists($directory, $config)) {
	$config = $config[$directory];
} else {
	return;
}

// путь к файлу, имя файла, расширение
$filename = MODX_BASE_PATH.$directory.$name;
$def_fn = pathinfo($name, PATHINFO_FILENAME);

$ext = pathinfo($name, PATHINFO_EXTENSION);

// проверяем, что расширение файла задано в настройках MODX, как изображение
if (in_array($ext, $extensions)) {
	$sizes = getimagesize($filename);
	$format = substr($sizes['mime'],6);

	// бежим по всем полям массива с конфигом
	foreach($config as $imgKey =>$imgConfig){
		$options = '';
		if($imgKey == 'src'){
		  // для ключа src имя файла совпадает с исходным
		  $imgName = $filename;
		} else {
		// формируем имя файла
		  $imgName = MODX_BASE_PATH.$directory.$def_fn.$imgKey.'.'.$ext;
		}

		// создаем объект phpThumb..
		$phpThumb = new phpThumb();
		// ..и задаем параметры
		$phpThumb->setSourceFilename($filename);
		foreach ($imgConfig as $k => $v) {
			$phpThumb->setParameter($k, $v);
		}

		// генерируем файл
		if ($phpThumb->GenerateThumbnail()) {
			if ($phpThumb->RenderToFile($imgName)) {
			    //$source->renameObject($imgName, $newName);
				// устанавливаем права на файл, это опционально, зависит от сервера
				//chmod($imgName, 0666);
			}
		}
	}
} else { 
    return;
}
Этот плагин выкладывал Безумкин Василий, вот только не помню где.
Не забудьте поменять настройки плагина под ваши потребности. Там не только ватермарк накладывается но и ресайз изображения делается. Вы можете оставить только наложения ватермарка.
Андрей
06 декабря 2017, 14:17
1
0
Зачем вы отправляете письма на тот же адрес, с которого идёт отправка? Пишите любое название ящика, главное чтобы имя домена было прописано. Плюс ещё какие то несуществующие параметры появились — &fiarEmail=`emailsender`.

Попробуйте так:

[[!FormIt?
	&hooks=`spam,email,FormItAutoResponder,redirect`
	&emailTo=`olga@lingvo-lang.com`
	&emailSubject=`English! Английский по Skype`
	&emailFrom=`no-reply@lingvo-lang.com`
	&emailTpl=`ConfirmationTpl`
        &fiarFrom=`no-reply@lingvo-lang.com`
	&fiarSubject=`Спасибо за обращение!`
        &fiarFromName=`English! Английский по Skype`
	&fiarTpl=`autoResponseTpl`
	&validate=`name:required,email:email:required,phone:required,message:required`
	&validationErrorMessage=`В форме содержатся ошибки!`
	&successMessage=`Сообщение успешно отправлено`
	&redirectTo=`14`
]]
Сергей Кепкин
02 ноября 2017, 14:58
3
0
ну поискал бы тут на форуме!!! почему предлагаю это — я уже псыкал разжеванный ответ!!!
еще раз, ок))):
1. создаешь сниппет под названием yaSuperProger
<?php
//умолчальная сортировка по убыванию id
$DetectGetBy = 'id';
$DetectGetDir = 'desc';
//подсветка активного пункта
$DetectGetHL = 'default';
$DetectGetText = 'сначала новинки';

if (!empty($_GET['sort'])) {
	if ($_GET["sort"] == "price_up") { //сортировка по возрастанию цены
		$DetectGetBy = 'Data.price';
		$DetectGetDir = 'asc';
		$DetectGetHL = 'price_up';
		$DetectGetText = 'сначала подешевле';
	}
	if ($_GET["sort"] == "price_down") { //сортировка по убыванию цены
		$DetectGetBy = 'Data.price';
		$DetectGetDir = 'desc';
		$DetectGetHL = 'price_down';
		$DetectGetText = 'сначала подороже';
	}
}

$modx->setPlaceholder('DetectGetBy', $DetectGetBy);
$modx->setPlaceholder('DetectGetDir', $DetectGetDir);
$modx->setPlaceholder('DetectGetHL', $DetectGetHL);
$modx->setPlaceholder('DetectGetText', $DetectGetText);
2. в шаблон страницы категории вставляешь вызов этого сниппета и чанк с кнопками, или упрощенно без чанка так:
[[!yaSuperProger]]
<div class="row box-filter">
<div class="col-sm-12">
	<div class="btn-group">
		<button type="button" class="btn btn-default dropdown-toggle sort" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
							[[+DetectGetText]] <span class="caret"></span>
		</button>
		<ul class="dropdown-menu [[+DetectGetHL]]">
			<li class="first"><a class="sort_default" href="[[~[[*id]]]]">сначала новинки</a></li>
			<li><a  class="sort_price_up"href="[[~[[*id]]]]?sort=price_up">сначала подешевле</a></li>
			<li class="last"><a class="sort_price_down" href="[[~[[*id]]]]?sort=price_down">сначала подороже</a></li>
		</ul>
	</div>
</div>
</div>
[[!pdoPage?
	&element=`msProducts`
	&limit=`12`
	&depth=`0`
	&sortby=`[[+DetectGetBy]]` &sortdir=`[[+DetectGetDir]]`
	&ajaxMode=`default`
]]
Олег
19 апреля 2017, 16:33
1
+4
Я сделал такой компонент, но его нет в магазине.
Могу поделиться, если понравится.
Ответ осуществляется из админки.
Вот ссылка (пример работы): yaguar-m.ru/vopros-i-otvet
Вот так редактируется в админке:
joxi.ru/p27Wz9DHovRa72
Leo
Leo
16 декабря 2016, 13:38
3
0
рабочий вариант, проверено

<?php
define('MODX_API_MODE', true);
require 'index.php';		// Если файл лежит не в корне - здесь нужно указать верный путь
$modx->getService('error','error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_INFO);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');

if (!isset($parents)) {$parents = 0;}		// Можно указать список категорий для поиска товаров
if (!isset($resources)) {$resources = '';}	// Можно указать конкретный список товаров

$pdo = $modx->getService('pdoFetch');
$condition = array('parents' => $parents);
$files = $pdo->getCollection('msProduct',
	array(
		'msProduct.class_key' => 'msProduct',
	),
	array(
		'class' => 'msProduct',
		'parents' => $parents,
		'resources' => $resources,
		'innerJoin' => array(
			'msProductFile' => array(
				'alias' => 'msProductFile',
				'on' => array(
					'msProduct.id = msProductFile.product_id',
					'msProductFile.parent' => 0,
					'msProductFile.type' => 'image',
				)
			)
		),
		'select' => array(
			'msProductFile' => 'all'
		),
		'sortby' => 'msProduct.id'
	)
);

echo '<pre>';
echo $pdo->getTime();
foreach ($files as $row) {
	$file = $modx->newObject('msProductFile');	
	$file->fromArray($row, '', true, true);
	
	$children = $file->getMany('Children');
	foreach ($children as $child) {
		$child->remove();
	}
	$file->generateThumbnails();
	
	// Обновляем thumb и image товара
	if ($product = $file->getOne('Product')) {
		$product->updateProductImage();
	}
}

echo microtime(true) - $modx->startTime;
Илья
08 сентября 2015, 22:16
1
0
Для nginx:
if ($host = "www.example.com") {
  rewrite ^ $scheme://example.com$uri permanent;
}
location / {
  try_files $uri $uri/ @modx-rewrite;
}