Klike
С нами с 14 января 2015; Место в рейтинге пользователей: #40Покупка товара в один клик
Привет всем. На сайте всего несколько товаров и хочется реализовать покупку в один клик без корзины.
То есть человек нажал на кнопку купить и сразу перешёл в платёжную систему.
Возможно это реализовать через 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