Karpunin Alexey
С нами с 15 января 2013; Место в рейтинге пользователей: #909Импорт в MODX Tickets из Wordpress
В очередной раз понадобилось перенести блог из Вордпресса в MODX. Раньше я для этого пользовался хитрым костылём с Articles. Сейчас он не работает, поэтому пришлось чинить. Доделывать мне его лень, так что это опять костыль. Но у меня он сработал.
Скачиваем файл, создаём новый сниппет, например, wpimport, вставляем в него текст из файла, и настраиваем всё параметры прямо в коде (я предупреждал — костыль!)
Скачиваем файл, создаём новый сниппет, например, 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-й строке.
После перехода на PHP7 ошибка pdoTools
MODX Revolution 2.5.5
pdoTools 2.8.2
Перешел на PHP7, при обновление кеша сайта появляется ошибка:
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!
Данные о получателе в письме менеджеру в minishop2
Доброго времени суток!
Вопрос следующий:
Как передать данные получателя (заказчика) в письме менеджеру?
Т.е, следующие значения:
e-mail
получатель
телефон
вариант доставки,
адрес доставки
необходимо передать в шаблоне tpl.msEmail.new.manager.
Натыкался на этот топик с похожей проблемой, но он морально устарел:
modx.im/blog/questions/3331.html
Версия Minishop — 2.4.8-pl2 (т.е. последняя на текущий момент).
Благодарю!
Вопрос следующий:
Как передать данные получателя (заказчика) в письме менеджеру?
Т.е, следующие значения:
получатель
телефон
вариант доставки,
адрес доставки
необходимо передать в шаблоне tpl.msEmail.new.manager.
Натыкался на этот топик с похожей проблемой, но он морально устарел:
modx.im/blog/questions/3331.html
Версия Minishop — 2.4.8-pl2 (т.е. последняя на текущий момент).
Благодарю!
Проблема с msGallery
При выводе каталога товаров в minishop2 возникла проблема с msGallery.
Товары на страницу выводятся сниппетом msProducts,
но в каталоге нужно выводить не одно картинку товара, а первые две из галереи.
Поэтому в шаблоне вывода товара есть вызов сниппета msGallery и выводятся первые две картинки
Вывод каталога:
Такое впечатление что msProducts после первой строки забывает, что его шаблон для вывода товаров это tpl.msProducts.row, и берет в качестве шаблона чанк из msGallery -> tpl.msProductImages
Товары на страницу выводятся сниппетом 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
ms2Gallery и fenom, как заставить верно работать?
Решил научиться на феноме писать чанки и шаблоны…
Есть список ресурсов и в чанке выводится первое фото из этого ресурса со ссылкой на этот ресурс, вызывал раньше так
'resources' => '{$id}' не срабатывает, если вручную подставлять ид, то ок.
'tplRow' => '@INLINE ' — вообще не работает, чтобы я тут не указывал.
Есть список ресурсов и в чанке выводится первое фото из этого ресурса со ссылкой на этот ресурс, вызывал раньше так
<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 ' — вообще не работает, чтобы я тут не указывал.
Передать значение tv в корзину
Добрый день. В обновленном minishiop2 есть возможность передать значение tv параметра в корзину для каждого товара свое, при добавлении товара в корзину?
Вывод заказов пользователя и товаров заказа
Нужна была возможность вывода заказов клиента и товаров в этих заказах. Велосипедов много, мой один из них.
1) Снипет для вывода заказов:
2) Снипет вывода товаров заказа:
Писал потому как, во первых учусь писать, во вторых быстрее написать чем искать подходящее решение и допиливать его. Буду рад советам и исправлениям. Пригодились бы советы по поводу:
1) сырого SQL:
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 = 'У вас пока еще нет заказов.';
}
}
Всем успехов. Сортировка значений опций товара
Добрый день.
Ситуация такая — создал опции для товара:
Подскажите, как можно отсортировать опции в нужном порядке.
Пользователь Володя подсказал вариант с
github.com/vgrish/miniShop2/blob/7d60279388e7301b31fd9ad5f9862881d7ec7721/core/components/minishop2/elements/snippets/snippet.ms_options.php
и с github.com/bezumkin/miniShop2/pull/248#issuecomment-252066243
Но смешанные данные у меня не отсортировались — там где и строка и числа…
Ситуация такая — создал опции для товара:
Лента 1250х50 ммНо после сохранения товара они изменили порядок и стало так
Лента 1250х75 мм
Лента 1250х100 мм
Лента 1250х75 ммА это не правильно с той точки зрения, что опции нужно выводить в порядке возрастания их цены. Есть конечно вариант сделать только цифры, например 50, 75, 100, но так не всем покупателям понятно и лучше выводить полное название.
Лента 1250х50 мм
Лента 1250х100 мм
Подскажите, как можно отсортировать опции в нужном порядке.
Пользователь Володя подсказал вариант с
github.com/vgrish/miniShop2/blob/7d60279388e7301b31fd9ad5f9862881d7ec7721/core/components/minishop2/elements/snippets/snippet.ms_options.php
и с github.com/bezumkin/miniShop2/pull/248#issuecomment-252066243
Но смешанные данные у меня не отсортировались — там где и строка и числа…
Необходимо дописать Modextra или написать новый
14 3 000
Доброго дня!
Необходимо дописать (например modextra или др. дополнение — возможно приобрести) или написать компонент конкурса. Конкурс турнирная таблица.
9 этапов 1,2 — отбор, остальные парные этапы.
Админку как вижу, я заскринил.
PS: Возможность участников перетаскивать (формировать пары на этапах)
Выручайте!
Пишите, предлагайте варианты.
В январе хотим запустить конкурс. И видео и аудио (битмейкер)
Связь: rais-ja@yandex.ru
Необходимо дописать (например modextra или др. дополнение — возможно приобрести) или написать компонент конкурса. Конкурс турнирная таблица.
9 этапов 1,2 — отбор, остальные парные этапы.
Админку как вижу, я заскринил.
PS: Возможность участников перетаскивать (формировать пары на этапах)
Выручайте!
Пишите, предлагайте варианты.
В январе хотим запустить конкурс. И видео и аудио (битмейкер)
Связь: rais-ja@yandex.ru
Один ресурс в нескольких категориях. Как лучше?
Всем привет. Делаю небольшой каталог статей, нужно что бы 1 статья могла находиться в разных категориях.
В принципе трудностей никаких, мог сделать через теги, но в образовательных целях, хотелось бы спросить у профессионалов как бы вы решили эту задачу?
Мне видится ещё вариант через дополнительный ТВ в виде кастомного списка с автодополнением или просто текстовое поле, со списком id нужных рубрик и потом sql запросом выбирать нужные.
MODx вообще удивителен разнообразием костылей которые можно изобрести :))
В принципе трудностей никаких, мог сделать через теги, но в образовательных целях, хотелось бы спросить у профессионалов как бы вы решили эту задачу?
Мне видится ещё вариант через дополнительный ТВ в виде кастомного списка с автодополнением или просто текстовое поле, со списком id нужных рубрик и потом sql запросом выбирать нужные.
MODx вообще удивителен разнообразием костылей которые можно изобрести :))