Klike
С нами с 14 января 2015; Место в рейтинге пользователей: #42Покупка товара в один клик
            Привет всем. На сайте всего несколько товаров и хочется реализовать покупку в один клик без корзины.
То есть человек нажал на кнопку купить и сразу перешёл в платёжную систему.
Возможно это реализовать через Minishop2 или разумнее написать свой сниппет.
Подскажите разумный подход в решении этой задачи.
        
        
        
    То есть человек нажал на кнопку купить и сразу перешёл в платёжную систему.
Возможно это реализовать через Minishop2 или разумнее написать свой сниппет.
Подскажите разумный подход в решении этой задачи.
Три языка на сайте
            Добрый день! 
У Василия есть замечательное решение переключения контекстов мультиязычного сайта.
И есть сниппет для вывода ссылок на переключение:
Подскажите, пожалуйста?
        
        
        
    У Василия есть замечательное решение переключения контекстов мультиязычного сайта.
И есть сниппет для вывода ссылок на переключение:
<?php
$tplRu = '<a href="[[+link]]">ru</a>';
$tplEn = '<a href="[[+link]]">en</a>';
$tplRuActive = '<span>ru</span>';
$tplEnActive = '<span>en</span>';
$output = '';
if ($modx->context->key == 'web') {
	$output .= $tplRuActive . ' | ' . $tplEn;
	$link = 'en/';
	if ($modx->getOption('site_start') != $modx->resource->id && $modx->getCount('modResource', array('uri' => $modx->resource->uri, 'context_key' => 'en'))) {
		$link .= $modx->resource->uri;
	}
}
else {
	$output .= $tplRu . ' | ' . $tplEnActive;
	$link = '/';
	if ($modx->getOption('site_start') != $modx->resource->id && $modx->getCount('modResource', array('uri' => $modx->resource->uri, 'context_key' => 'web'))) {
		$link .= $modx->resource->uri;
	}
}
return str_replace('[[+link]]', $link, $output);Но вот как реализовать переключение ТРЁХ контекстов – никак не додумаю) Слабоват в PHP.Подскажите, пожалуйста?
Очистка карточки товара от старых фото
            Добрый день! 
Давно стоит вопрос массовой чистки старых фото товаров на сайте. Можно вручную, но свыше 3000 товаров… времени уйдёт немерено)
Настроена синхронизация с 1С, через компонент mSklad (mSync), в 1С где нет фото стоит заглушка. И при синхронизации все заглушки закидываются в карточку товара.
Вопрос: как можно массово удалить все заглушки в товарах? В идеале – запретить синхронизировать их, но этот вопрос больше к разработчикам дополнения, в поддержке просто говорят, что такого функционала нет.
Схема думаю простая, пробежаться по всем товарам, сравнить картинки с исходной, если совпадает – удалить. НО как это реализовать… может кто подскажет?)
        
        
        
    Давно стоит вопрос массовой чистки старых фото товаров на сайте. Можно вручную, но свыше 3000 товаров… времени уйдёт немерено)
Настроена синхронизация с 1С, через компонент mSklad (mSync), в 1С где нет фото стоит заглушка. И при синхронизации все заглушки закидываются в карточку товара.
Вопрос: как можно массово удалить все заглушки в товарах? В идеале – запретить синхронизировать их, но этот вопрос больше к разработчикам дополнения, в поддержке просто говорят, что такого функционала нет.
Схема думаю простая, пробежаться по всем товарам, сравнить картинки с исходной, если совпадает – удалить. НО как это реализовать… может кто подскажет?)
Простой вывод погоды на сайте
            Спасибо Ивану за помощь в написании сниппета        
        
        
        
    Фильтрация в mFilter2
            Добрый вечер!
Возникла проблема такого характера: есть каталог с фильтрацией с помощью mFilter2. Одна группа фильтров почему-то перебивает остальные. Если выбран один фильтр из этой группы, то выборка остальных никак не влияет на результат — страница перезагружается, а результаты не меняются. В чем может быть проблема?
Спасибо!
UPD:
Спасибо за отклики, но проблему удалось решить самостоятельно.
Естественно опишу ее решение здесь.
У меня в ресурсах находилась таблица MIGX из 7 строк, где каждая строка это определенный тип товара со своими характеристиками (название типа было первым элементом каждой строки). Фильтрация ресурсов необходима была по типам товаров. Опираясь на данный вариант bezumkin.ru/modx/minishop2/msearch2/1805/ мной был написан свой класс фильтрации для таблицы:
Дело оказалось в одной переменной, которая была пропущена по неопытности — $ids. Она содержала в себе ресурсы, выборка которых происходит по другим фильтрам. Соответственно мне надо было находить пересечение массива $ids с результатом работы моего фильтра. Иначе у меня выводился результат работы только моего фильтра, без учета предыдущих:
Всем спасибо!
        
        
        
    Возникла проблема такого характера: есть каталог с фильтрацией с помощью mFilter2. Одна группа фильтров почему-то перебивает остальные. Если выбран один фильтр из этой группы, то выборка остальных никак не влияет на результат — страница перезагружается, а результаты не меняются. В чем может быть проблема?
Спасибо!
UPD:
Спасибо за отклики, но проблему удалось решить самостоятельно.
Естественно опишу ее решение здесь.
У меня в ресурсах находилась таблица MIGX из 7 строк, где каждая строка это определенный тип товара со своими характеристиками (название типа было первым элементом каждой строки). Фильтрация ресурсов необходима была по типам товаров. Опираясь на данный вариант bezumkin.ru/modx/minishop2/msearch2/1805/ мной был написан свой класс фильтрации для таблицы:
<?php
class myCustomFilter extends mse2FiltersHandler {
    public function buildTypeWFilter(array $values, $name = '') {
        if (count($values) < 2 && empty($this->config['showEmptyFilters'])) {
            return array();
        }
        $results = array();
        foreach ($values as $value => $ids) {
            $items = json_decode($value, true);
            foreach($items as $key => $value2){
                $results[$value2['type']] = array(
                    'title' => $value2['type'],
                    'value' => $value2['type'],
                    'type' => 'typeW',
                    'resources' => $ids
                );
            }
        }
        ksort($results);
        return $results;
    }
    public function filterTypeW(array $requested, array $values, array $ids) {
        $matched = array();
        foreach ($requested as $value) {
            foreach ($values as $vkey => $val){
                $fil = json_decode($vkey, true);
                foreach ($fil as $t) {
                    if (trim($t['type']) === trim($value)) {
                        $matched[] = $val[0];
                    }
                }
            }
        }
        return $matched;
    }
}Фильтрация работала, но при этом если выбран элемент из моего фильтра, то выбор в других группах фильтров никак не влиял на результат. Дело оказалось в одной переменной, которая была пропущена по неопытности — $ids. Она содержала в себе ресурсы, выборка которых происходит по другим фильтрам. Соответственно мне надо было находить пересечение массива $ids с результатом работы моего фильтра. Иначе у меня выводился результат работы только моего фильтра, без учета предыдущих:
return array_intersect($matched, $ids);Если это кому-то помогло — я рад)Всем спасибо!
Удаление дубликатов/старых изображений товара
            Добрый день! 
На сайте настроена синхронизация с 1С УТ, если в 1С обновлены изображения товара, после синхронизации оба изображения (старое и новое) остаются в карточке.
Также в 1С есть картинка-заглушка, если нет фото товара. И после синхронизации на хостинге куча картинок-заглушек.
Два вопроса:
p.s. Всех с наступающим 9 мая!
        
        
        
    На сайте настроена синхронизация с 1С УТ, если в 1С обновлены изображения товара, после синхронизации оба изображения (старое и новое) остаются в карточке.
Также в 1С есть картинка-заглушка, если нет фото товара. И после синхронизации на хостинге куча картинок-заглушек.
Два вопроса:
- Можно ли как-то удалять старое(все изображения) при синхронизации товара?
 - Как сравнить хэш картинки-заглушки и не синхронизировать её, либо удалять. Чтобы подставлялась заглушка по умолчанию, как, к примеру, изначально подставляется логотип miniShop2.
 
p.s. Всех с наступающим 9 мая!
Разные цифры в пункте ПРОСМОТРЫ
            На сайте есть блок с популярными статьями. Сортировка самая примитивная(топ популярных статей):
В одном – 20, 28, 30, 8.
В другом – 20, 14, 10, 4.
Странная математика) В чём может быть дело?
        
        
        
    [[!getTickets?
        &leftJoin=`{
        		"View": {
        			"class": "TicketView",
        			"on": "Ticket.id = View.parent"
        		}
        	}`
        &select=`{
        		"Ticket": "*",
        		"View": "COUNT(View.parent) as views"
        	}`
        &groupby=`Ticket.id`
        &sortby=`views`
        &tpl=`tpl.Tickets.popular`
        &limit=`4`
        &parents=`14`
    ]]В разных браузерах разные цифры показывает. В одном – 20, 28, 30, 8.
В другом – 20, 14, 10, 4.
Странная математика) В чём может быть дело?
[Решено] Изменить вид ссылки
            Добрый день!
Есть блог на Tickets, где один раздел и все статьи, соответственно, в нём.
У каждой статьи есть TV категории и Теги. То есть одна статья может быть в нескольких категориях.
Вывод статей конкретной категории реализован с помощью фильтра по TV и pdoPage по такому принципу:
site.ru/blog?category=значение
Можно ли сделать вывод категорий такого вида: site.ru/blog/category/значение?
Подозреваю, что можно реализовать, используя дополнение VirtualPage, но не совсем понимаю, как оно работает.
        
        
        
    Есть блог на Tickets, где один раздел и все статьи, соответственно, в нём.
У каждой статьи есть TV категории и Теги. То есть одна статья может быть в нескольких категориях.
Вывод статей конкретной категории реализован с помощью фильтра по TV и pdoPage по такому принципу:
site.ru/blog?category=значение
Можно ли сделать вывод категорий такого вида: site.ru/blog/category/значение?
Подозреваю, что можно реализовать, используя дополнение VirtualPage, но не совсем понимаю, как оно работает.
[mSklad] Удаление старых фото при синхронизации
            Добрый день! 
Искал решение, но не нашёл. Быть может плохо искал.
На сайте используется одно фото товара. Настроена синхронизация с 1С с помощью компонента mSklad.
При каждой синхронизации фото товаров добавляются в ресурс. Хотелось бы сделать так, чтобы старые удалялись, то есть заменялись новыми, если таковые есть.
Может кто-то уже сталкивался с данным моментом?
p.s. И ещё, в 1С у товаров, в которых нет фото, стоит заглушка. Можно ли как-то не синхронизировать её?)
        
        
        
    Искал решение, но не нашёл. Быть может плохо искал.
На сайте используется одно фото товара. Настроена синхронизация с 1С с помощью компонента mSklad.
При каждой синхронизации фото товаров добавляются в ресурс. Хотелось бы сделать так, чтобы старые удалялись, то есть заменялись новыми, если таковые есть.
Может кто-то уже сталкивался с данным моментом?
p.s. И ещё, в 1С у товаров, в которых нет фото, стоит заглушка. Можно ли как-то не синхронизировать её?)
xPDO vs pdoFetch
            Решил затестить чистый xPDO на скорость и противопоставить ему pdoFetch.
Ничего не имею против первого или второго. Напротив. Второе использую в работе регулярно. Однако, как я понял, изучение и применение чистого xPDO в своих разработках серьёзно поможет снизить нагрузку на сервер, ведь верно?
P.S.: Тестировалось на ахеренно быстром хостинге для MODX REVO — modhost.pro.
        
        
        
    Ничего не имею против первого или второго. Напротив. Второе использую в работе регулярно. Однако, как я понял, изучение и применение чистого xPDO в своих разработках серьёзно поможет снизить нагрузку на сервер, ведь верно?
P.S.: Тестировалось на ахеренно быстром хостинге для MODX REVO — modhost.pro.
pdoFetch:
<?
$pdoFetch = $modx->getService('pdoFetch');
$setConfigArray = array(
		'return'	=> 'data',
		'parent'	=> '0',
		'limit'		=> '2000',
		'select'	=> 'id,pagetitle,uri,content',
	);
$pdoFetch->setConfig($setConfigArray);
$resources = $pdoFetch->run();
for($i=0; $i<count($resources); $i++)
{
	print $resources[$i]['pagetitle'];
}
print '<pre>'; print_r($pdo->getTime()); print '</pre>';Результаты:
1ый запуск:
0.0118151: Total time
12 058 624: Memory usage
2ой запуск:
0.0111890: Total time
12 058 624: Memory usage
xPDO:
<?
$pdo = $modx->getService('pdoTools');
$q = $modx->newQuery('modResource');
$q->select( array("id","uri","pagetitle","content") );
$q->limit(2000);
$s = $q->prepare();
$s->execute();
while($row = $s->fetch(PDO::FETCH_ASSOC)) {
	print $row['pagetitle'];
}
print '<pre>'; print_r($pdo->getTime()); print '</pre>';Результаты:
1ый запуск:
0.0021060: Total time
3 932 160: Memory usage
2ой запуск:
0.0016491: Total time
4 194 304: Memory usage