Karpunin Alexey

Karpunin Alexey

С нами с 15 января 2013; Место в рейтинге пользователей: #909

Импорт в MODX Tickets из Wordpress

В очередной раз понадобилось перенести блог из Вордпресса в MODX. Раньше я для этого пользовался хитрым костылём с Articles. Сейчас он не работает, поэтому пришлось чинить. Доделывать мне его лень, так что это опять костыль. Но у меня он сработал.

Скачиваем файл, создаём новый сниппет, например, wpimport, вставляем в него текст из файла, и настраиваем всё параметры прямо в коде (я предупреждал — костыль!)

  • На 20-й строке указываем путь к файлу, экспортированному из WP.
  • На 100-й строке появляется функция, которая расставляет теги абзаца, которых в файле WP нет.
  • 115-я строка — ID родителя (куда будем импортировать?)
  • 119-я — ID шаблона для постов.
  • На 126 устанавливается class_key Tickets. Если хотите, можете сделать ModResource.
  • Со 132-й строки пробуем скопировать все изображения из WP в папку, указанную на 152-й строке. Попутно меняем css классы у картинок на bootstrap.
  • На 180-й строке пытаемся поменять href у ссылок, внутри которых были картинки.
  • 199 – Сохраняем в интротекст всё, что перед катом.
  • 209,210 — вызываем функции, которые сохраняют description и keywords в соответстующие ТВ, если в WP вы использовали All In One SEO Pack. ТВ для сохранения указаны в самом конце.
  • ТВ для тегов на 339-й строке.
Денис Дыранов
21 марта 2017, 12:39
modx.pro
9
2 534
+12

После перехода на PHP7 ошибка pdoTools

MODX Revolution 2.5.5
pdoTools 2.8.2

Перешел на PHP7, при обновление кеша сайта появляется ошибка:
PHP warning: include(/core/cache/includes/elements/modplugin/3.include.cache.php): failed to open stream: No such file or directory
PHP warning: include(/core/cache/includes/elements/modplugin/3.include.cache.php): failed to open stream: No such file or directory
PHP warning: include(): Failed opening '/core/cache/includes/elements/modplugin/3.include.cache.php' for inclusion (include_path='.:')
[OnSiteRefresh] Plugin pdoTools failed!
Сергей
15 марта 2017, 11:25
modx.pro
1
4 568
0

Данные о получателе в письме менеджеру в minishop2

Доброго времени суток!
Вопрос следующий:
Как передать данные получателя (заказчика) в письме менеджеру?

Т.е, следующие значения:

e-mail
получатель
телефон
вариант доставки,
адрес доставки

необходимо передать в шаблоне tpl.msEmail.new.manager.

Натыкался на этот топик с похожей проблемой, но он морально устарел:
modx.im/blog/questions/3331.html

Версия Minishop — 2.4.8-pl2 (т.е. последняя на текущий момент).

Благодарю!
Константин
28 февраля 2017, 12:22
modx.pro
1
2 454
0

Проблема с msGallery

При выводе каталога товаров в minishop2 возникла проблема с msGallery.
Товары на страницу выводятся сниппетом msProducts,
но в каталоге нужно выводить не одно картинку товара, а первые две из галереи.
Поэтому в шаблоне вывода товара есть вызов сниппета msGallery и выводятся первые две картинки
Вывод каталога:
[[!msProducts?
  &parents=`10`
  &depth=`1`
  &limit=`10`
  &tpl=`tpl.msProducts.row`
]]
шаблон товара tpl.msProducts.row:
<li>
	<div class="item">
		<a href="" class="img_wrap">
            [[!msGallery? &product=`[[+id]]` &tpl=`tpl.msProductImages`]]
		</a>
	</div>
</li>
tpl.msProductImages:
<img src="{$files[0]['235x390']}" alt="" title="">
<img src="{$files[1]['235x390']}" alt="" title="">
однако как только добавляю в шаблон товара сниппет msGallery все ломается и в каталог выводится только одна строка с товаром, а дальше вместо каждого товара вот такой код
<img src="" alt="" title="">
<img src="" alt="" title="">
Подскажите, пожалуйста, что делаю не так? В чем может быть ошибка?
Такое впечатление что msProducts после первой строки забывает, что его шаблон для вывода товаров это tpl.msProducts.row, и берет в качестве шаблона чанк из msGallery -> tpl.msProductImages
Greza
24 февраля 2017, 17:41
modx.pro
2
4 427
0

ms2Gallery и fenom, как заставить верно работать?

Решил научиться на феноме писать чанки и шаблоны…

Есть список ресурсов и в чанке выводится первое фото из этого ресурса со ссылкой на этот ресурс, вызывал раньше так
<a href="[[~[[+id]]]]" title="[[+longtitle]]">
	[[!ms2Gallery?
	&tplRow=`@INLINE <img src="[[+360x270]]" alt="[[*longtitle]]">`
	&tplOuter=`@INLINE [[+rows]]`
	&tplEmpty=`@INLINE <img src="img/theme/logo.png">`
	&resources=`[[+id]]`
	&limit = `1`
	]]
</a>
но пытаюсь переделать на феном и не получается

<a href="[[~[[+id]]]]">
      {$_modx->runSnippet('!ms2Gallery', [
        'parents' => '0',
        'tplRow' => '@INLINE <img src="{$small}" alt="">'
    	'resources' => '{$id}'
    	'limit' => '1'
      ])}
    </a>
Как у href подставить верный ид и как в снипете вызывать правильно параметры?
'resources' => '{$id}' не срабатывает, если вручную подставлять ид, то ок.
'tplRow' => '@INLINE ' — вообще не работает, чтобы я тут не указывал.
UDAV
18 февраля 2017, 06:56
modx.pro
1
2 856
0

Передать значение tv в корзину

Добрый день. В обновленном minishiop2 есть возможность передать значение tv параметра в корзину для каждого товара свое, при добавлении товара в корзину?
Oleg Pimanov
05 февраля 2017, 12:16
modx.pro
1
1 168
0

Вывод заказов пользователя и товаров заказа

Нужна была возможность вывода заказов клиента и товаров в этих заказах. Велосипедов много, мой один из них.

1) Снипет для вывода заказов:
<?php
// снипет выводит заказы текущего пользователя

$user_id = $modx->user->get('id');
$tpl = $modx->getOption('tpl',$scriptProperties,'tpl.order');

// подхватываем заказы текущего пользователя
$q = $modx->newQuery('msOrder', array('user_id' => $user_id));
$results = $modx->getCollection('msOrder', $q);

// выводим или чанками или предупреждением что заказов пока нет
foreach ($results as $result) {
  if ( $result ) {
    $resultArray = $result->toArray();
    $output .= $modx->getChunk($tpl,$resultArray);
  } else {
    $output = 'У вас пока еще нет заказов.';
  }
}
return $output;
и соответственно чанк tpl.order (на феноме):
<div>
  <div> Заказ <span>{$_pls['num']}</span> от <span>{$_pls['createdon']}</span> года</div>
  <div>
    {$_modx->runSnippet('!msOrdersProducts', ['order'=>$_pls['id']])}
  </div>
</div>

2) Снипет вывода товаров заказа:
<?php
// выводит товары заказа.
$tpl = $modx->getOption('tpl',$scriptProperties,'tpl.order_cell'); // если товар найден
$tpl_empty = $modx->getOption('tpl',$scriptProperties,'tpl.order_cell_empty'); // если товар не найден

// ищем товар по id заказа
$q = $modx->prepare("SELECT * FROM ".$modx->getOption('table_prefix')."ms2_order_products WHERE order_id=".$order);
$q->execute();
$results = $q->fetchAll(PDO::FETCH_ASSOC);

$output;
// перебором либо выводим нужный заказ, либо оповещаем что его уже нет
foreach ($results as $result) {
  $res = $modx->getObject('modResource', array('pagetitle'=>$result[name]));
  
  if ($res) {
    $resArray = $res->toArray();
    $output .= $modx->getChunk($tpl,$resArray);
  } else {
    $prodName = $modx->setPlaceholder('name', $result[name]);
    $output .= $modx->getChunk($tpl_empty);
  }
}
return $output;
и соответственно чанк tpl.order_cell (на феноме):
<div>
  <span><a href="{$id | url}">{$pagetitle}</a></span>
  <span>{$price} Р</span>
</div>
и чанк в том случае если товара уже нет tpl.order_cell_empty:
<div>
  <span>{$_pls['name']}</span>
  <span>не найден</span>
</div>

Писал потому как, во первых учусь писать, во вторых быстрее написать чем искать подходящее решение и допиливать его. Буду рад советам и исправлениям. Пригодились бы советы по поводу:
1) сырого SQL:
$q = $modx->prepare("SELECT * FROM ".$modx->getOption('table_prefix')."ms2_order_products WHERE order_id=".$order);
$q->execute();
$results = $q->fetchAll(PDO::FETCH_ASSOC);
2) Первоначально хотел все в первом снипете вывести вот тут (далее в коде), но не получилось. Если кто подскажет буду рад.
// выводим или чанками или предупреждением что заказов пока нет
foreach ($results as $result) {

  // думал тут подхватить товары, но что с ними дальше так и не придумал...

  if ( $result ) {
    $resultArray = $result->toArray();
    $output .= $modx->getChunk($tpl,$resultArray);
  } else {
    $output = 'У вас пока еще нет заказов.';
  }
}
Всем успехов.
Юрий Фомин
27 января 2017, 15:51
modx.pro
15
3 667
+2

Сортировка значений опций товара

Добрый день.
Ситуация такая — создал опции для товара:
Лента 1250х50 мм
Лента 1250х75 мм
Лента 1250х100 мм
Но после сохранения товара они изменили порядок и стало так
Лента 1250х75 мм
Лента 1250х50 мм
Лента 1250х100 мм
А это не правильно с той точки зрения, что опции нужно выводить в порядке возрастания их цены. Есть конечно вариант сделать только цифры, например 50, 75, 100, но так не всем покупателям понятно и лучше выводить полное название.
Подскажите, как можно отсортировать опции в нужном порядке.
Пользователь Володя подсказал вариант с
github.com/vgrish/miniShop2/blob/7d60279388e7301b31fd9ad5f9862881d7ec7721/core/components/minishop2/elements/snippets/snippet.ms_options.php
и с github.com/bezumkin/miniShop2/pull/248#issuecomment-252066243
Но смешанные данные у меня не отсортировались — там где и строка и числа…
Андрей
11 декабря 2016, 16:01
modx.pro
7
7 340
0

Необходимо дописать Modextra или написать новый

14 3 000
Доброго дня!
Необходимо дописать (например modextra или др. дополнение — возможно приобрести) или написать компонент конкурса. Конкурс турнирная таблица.
9 этапов 1,2 — отбор, остальные парные этапы.
Админку как вижу, я заскринил.
PS: Возможность участников перетаскивать (формировать пары на этапах)
Выручайте!
Пишите, предлагайте варианты.
В январе хотим запустить конкурс. И видео и аудио (битмейкер)
Связь: rais-ja@yandex.ru
Vitaliy
18 ноября 2016, 18:55
modx.pro
1
928
0

Один ресурс в нескольких категориях. Как лучше?

Всем привет. Делаю небольшой каталог статей, нужно что бы 1 статья могла находиться в разных категориях.
В принципе трудностей никаких, мог сделать через теги, но в образовательных целях, хотелось бы спросить у профессионалов как бы вы решили эту задачу?

Мне видится ещё вариант через дополнительный ТВ в виде кастомного списка с автодополнением или просто текстовое поле, со списком id нужных рубрик и потом sql запросом выбирать нужные.

MODx вообще удивителен разнообразием костылей которые можно изобрести :))
Михаил
11 ноября 2016, 08:39
modx.pro
2
1 364
0