Роман Воропаев (Volk)

Роман Воропаев (Volk)

С нами с 03 декабря 2015; Место в рейтинге пользователей: #80

Где хранятся непрочитанные комментарии?

Мне нужно вывести в личном кабинете пользователя количество непрочитанных им комментариев в разных разделах.

Где хранится информация о непрочитанных комментариях? Что-то не могу найти в таблицах базы…
Василий Столейков
02 августа 2016, 08:27
modx.pro
5
1 666
0

Догенерация изображений

Столкнулся с такой проблемой.

Имеется сайт, на котором порядка 10гб (порядка 70000 записей в modx_ms2_resource_files — и это только оригиналы) занимают только оригиналы фотографий в ms2gallery.
Появилась необходимость перенести все файлы в облако и добавить новые размеры превью.

Воспользовался таким скриптом
<?php
define('MODX_API_MODE', true);
require 'index.php';

$modx->getService('error','error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');

$modx->addPackage('ms2gallery', MODX_CORE_PATH . 'components/ms2gallery/model/');
$files = $modx->getIterator('msResourceFile', array('parent' => 0));
foreach ($files as $file) {
	$children = $file->getMany('Children');
	foreach ($children as $child) {
		$child->remove();
	}
	$file->generateThumbnails();
}

echo microtime(true) - $modx->startTime;
Само собой, скрипт запускал из консоли сервера.
Но ночью из-за внутреннего сбоя в selectel.ru — наш аккаунт был отключен и соответственно все пошло по @#$%^.

На данный момент аккаунт на selectel.ru включен и проблема устранена, но заново сгенерировать весь объем превью (~240000) уже не получается.

Отсюда вопрос, как генерировать превью без удаления записей из БД.

Как произвести догенерацию превью, не трогая ранее созданные записи в БД и файлы?
Ruslan Butakov
01 августа 2016, 10:03
modx.pro
2
1 064
0

mFilter2 и кастомные таблицы

Вчера начал делать фильтрацию таблицы с фирмами на mFilter2. Сначало я создал файл кастомного класса:

core/components/msearch2/custom/filters/custom.class.php со следующим содержимым:

<?php
class CustomFilter extends mse2FiltersHandler {
    
	function __construct(mSearch2 &$mse2,array $config = array()) {
        parent::__construct($mse2, $config);
        $this->modx->addPackage('spromo' ,MODX_CORE_PATH.'components/spromo/model/');
        $this->modx->addPackage('gl' ,MODX_CORE_PATH.'components/gl/model/');
        $this->modx->addPackage('voteforms' ,MODX_CORE_PATH.'components/voteforms/model/');
    }
    
	public function getSpromoCompaniesValues(array $fields, array $ids) {
		$filters = array();
		$no_id = false;
		if (!in_array('id', $fields)) {
			$fields[] = 'id';
			$no_id = true;
		}
		$q = $this->modx->newQuery('SpromoCompanies');
		$q->select(implode(',', $fields));
		$q->where(array('SpromoCompanies.id:IN' => $ids));
		$tstart = microtime(true);
		if ($q->prepare() && $q->stmt->execute()) {
			$this->modx->queryTime += microtime(true) - $tstart;
			$this->modx->executedQueries++;
			while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
				foreach ($row as $k => $v) {
					$v = trim($v);
					if ($k == 'category_id') {
						if ($row['parent'] == $v) {continue;}
						else {$k = 'parent';}
					}
					if ($v == '' || ($k == 'id' && $no_id)) {
						continue;
					}
					elseif (isset($filters[$k][$v])) {
						$filters[$k][$v][] = $row['id'];
					}
					else {
						$filters[$k][$v] = array($row['id']);
					}
				}
			}
		}
		else {
			$this->modx->log(modX::LOG_LEVEL_ERROR, "[mSearch2] Error on get filter params.\nQuery: ".$q->toSql()."\nResponse: ".print_r($q->stmt->errorInfo(),1));
		}

		return $filters;
	}
}
Андрей Копп
30 июля 2016, 12:49
modx.pro
4
2 822
+1

Выбор нескольких файлов через файловый менеджер

Делаю новостой блог, и нужно, чтоб к каждой новости можно было прикреплять картинки (5-25 шт).
Главное, чтоб не по одной выбирать (как через migx), и чтоб не вручную вписывать путя.
Данила Ермольчев
28 июля 2016, 14:25
modx.pro
2
2 138
0

Запретить добавление в корзину

Как можно запретить добавление в корзину?
miniShop2.Callbacks.add('Cart.add.before', 'restrict_cart', function() {
    miniShop2.Message.error('Добавление товаров в корзину запрещено!');

    return false;
});
не помогает (( товар все равно проходит, что делать может плагин какой можно на модиксе написать? но желательно все таки через джс
stas
27 июля 2016, 10:50
modx.pro
5
3 079
0

Свойства класса

Собственно вопрос прост: какие свойства у класса $order?
Т.е. имеем мы класс $order. Можем получить данные о пользователе $order->getOne('User'); А что и как мы можем еще получить?
Как вообще можно узнать свойства класса?
Роман
27 июля 2016, 04:42
modx.pro
1
792
0

Расширение полей заказа в админке Minishop2

Добрый день.
Необходимо поле «Получатель» разбить на два: Имя и Фамилия. Собственно, получилось сделать достаточно просто, для страницы заказа и страницы профиля, через настройки Minishop2. Но, как мне добавить еще одно поле на вкладку «Адрес» при просмотре заказа в админке?


Нагуглил такой способ, но он не работает с версией 2.4, на сколько я понимаю.
Nikita
26 июля 2016, 14:01
modx.pro
2
3 149
0

pdoResources разбивка результатов по блокам

Всем привет. Столкнулся с такой задачей, нужно на сайте вывести карусель с изображениями и сделать так чтобы в каждом блоке было по 4 изображения. Вот пример:

<div class="item active">
                    <div class="row">
                        <div class="col-sm-3 col-xs-6"><a href="#x"><img src="http://placehold.it/300x300" alt="Image" class="img-responsive"></a></div>
                        <div class="col-sm-3 col-xs-6"><a href="#x"><img src="http://placehold.it/300x300" alt="Image" class="img-responsive"></a></div>
                        <div class="col-sm-3 col-xs-6"><a href="#x"><img src="http://placehold.it/300x300" alt="Image" class="img-responsive"></a></div>
                        <div class="col-sm-3 col-xs-6"><a href="#x"><img src="http://placehold.it/300x300" alt="Image" class="img-responsive"></a></div>
                    </div>
                </div>
                <div class="item">
                    <div class="row">
                        <div class="col-sm-3 col-xs-6"><a href="#x col-xs-6" class="thumbnail"><img src="http://placehold.it/300x300" alt="Image" class="img-responsive"></a></div>
                        <div class="col-sm-3 col-xs-6"><a href="#x" class="thumbnail"><img src="http://placehold.it/300x300" alt="Image" class="img-responsive"></a></div>
                        <div class="col-sm-3 col-xs-6"><a href="#x" class="thumbnail"><img src="http://placehold.it/300x300" alt="Image" class="img-responsive"></a></div>
                        <div class="col-sm-3 col-xs-6"><a href="#x" class="thumbnail"><img src="http://placehold.it/300x300" alt="Image" class="img-responsive"></a></div>
                    </div>
                </div>
Тоесть блок с class=«item» должен повторяться через 4 добавленных изображения. Есть ли стандартное решение без велосипедов?

Вывод пока такой сделал:

[[!pdoResources?
                    &parents=`19,20,21,22,23`
                    &includeTVs=`image`
                    &tplWrapper=`@INLINE <div class="item "><div class="row">[[+output]]</div></div>`
                    &tpl=`@INLINE <div class="col-sm-3 col-xs-6"><a href="#x"><img src="http://placehold.it/300x300" alt="Image" class="img-responsive"></a></div>`
                ]]
SEQUEL.ONE
23 июля 2016, 20:00
modx.pro
2
3 196
0

Атака на miniShop2 или как добавить reCAPTCHA?!

Доброго утра!
Сегодня ночью наблюдал приключения с интернет-магазином, заказы падали каждую секунду,
Причём без товарных позиций. Как это возможно?!)

Началось всё в01:41 закончилось04:37. Всего было создано 2392(!!!) пустых заказа







Такое у меня впервые!) И я в некотором замешательстве. Как такое может быть, и что нужно сделать, чтобы такого не повторилось?
Klike
16 июля 2016, 02:57
modx.pro
5
2 817
+1

Авторизация пользователя при первом заказе

Всем привет.
Возник вопрос по miniShop2 — в документации сказанно что при формлении первого заказа когда пользователя ещё нет в системе класс обработчик регистрирует его со случайным паролем и авторизует, но где авторизует не сказано.
Проблема в следующем — заказ на сайте принимается без оплаты просто оформление, на финальной странице говорим пользователю спасибо и даём ссылку в личный кабинет где можно будет оплатить заказ, но переходя по ней он попадает на страницу авторизации, где надо вводить пароль — а он его не знает. Так вот не понятно где именно происходит авторизация при оформлении заказа нового пользователя, по идее он бы должен был авторизоваться в текущем контексте и без проблем перейдя по ссылке уже оказаться в личном кабинете, но так не случилось. Подскажите кто как решал данный вопрос.
Семён Кудрявцев
13 июля 2016, 08:51
modx.pro
1
1 705
0