17 июня 2020, 23:40 1. <strong> и </strong> нужно везде убрать и заменить id на ваши 2. файлы и не будут создаваться никакие, 3.общий файл — это документ из пункта 1 (его ссылку нужно вставлять в вебмастер) 4.pdoTools должен быть установлен Вопросы / Товары minishop2 для турбо страниц XML яндекс 13 0
01 мая 2020, 10:58 Попробуйте добавить условие Для вашего варианта с pdoResources &where=`{ "class_key":"msProduct" }`или &where=`{ "isfolder":"0" }` Вопросы / pdoResources дочерние ресурсы без родителя 9 -1
01 мая 2020, 10:43 В чанке используете? что в чанке «mat»? Вопросы / pdoResources дочерние ресурсы без родителя 9 -1
01 мая 2020, 10:11 Это называется — Видишь дерево? — Нет. — И я не вижу, а оно — есть Вопросы / Товары minishop2 для турбо страниц XML яндекс 13 -1
01 мая 2020, 09:50 [[pdoMenu? &parents=`16` &level=`2` &sortdir=`ASC` &sortby=`menuindex` &tplOuter=`@INLINE [[+wrapper]]` &tpl=`mat` &includeTVs=`img` &countChildren=`0` ]] Вопросы / pdoResources дочерние ресурсы без родителя 9 -1
01 мая 2020, 09:28 Нет, её не обязательно обновлять, оно и так работает, но вы можете прописать <yml_catalog date="[[!+nowdate:default=`now`:strtotime:date=`%Y-%m-%d %R`]]"> про пункт, согласен, идеально. Вопросы / Товары minishop2 для турбо страниц XML яндекс 13 -1
01 мая 2020, 09:23 Ну первое что пришло в голову, там дерево и не нужно, ты прав, что дерева не будет, будет обычный список Но мне это решение быстрее всего пришло в голову, так как XML, дерево строится по parentid Если есть решение получше, напишите его Вопросы / Товары minishop2 для турбо страниц XML яндекс 13 -1
01 мая 2020, 06:20 в кеш я не записываю, можете написать своё условие записи контента в кеш, сейчас работает на лету, но фотки кешируются, работает быстро Вопросы / Как обернуть фотки в микроразметку (решение) 2 0
01 мая 2020, 06:15 1. Скачиваем библиотеку phpQuery Кидаем её куда-нибудь, я залил в /assets/phpQuery Так же потребуется phpthumbon 2. Создаем плагин с названием imageSrc вешаем событие OnWebPagePrerender Содержимое <?php switch ($modx->event->name) { case 'OnWebPagePrerender': if ( $modx->context->get( 'key' ) == 'mgr') return; // Условия для каких шаблонов мы будем это делать, у меня ID 3 - это статейные шаблоны $templates_allow = array(3); // класс обертки контента, где нужно искать фотки $wrapper_class = 'about-content'; // Ваша ширина контента $wrapper_width = 866; $img_wrapper_min_width = 100; // минимальная ширина фотки для обертки $img_wrapper_min_width_fancybox = 1000; // минимальная ширина фотки для обертки в fancybox $img_wrapper_min_height_fancybox = 300; // минимальная высота фотки для обертки в fancybox $template = $modx->resource->get('template'); $resource_id = $modx->resource->get('id'); $cache_key = md5($resource_id); $file = MODX_BASE_PATH . 'resourcecache/u/prep_' . $cache_key . '.txt'; if(!in_array($template,$templates_allow)) return; $output = &$modx->resource->_output; if(is_file($file)){ if(!empty($cache)){ // здесь у меня дополнительная обертка кеша $string = preg_replace('|<div class="'.$wrapper_class.'">(.*)</div>|isU', '<div class="'.$wrapper_class.' about-cache">'.$cache.'</div>',$output); $output = $string; return; break; } } include_once MODX_ASSETS_PATH . 'phpQuery/phpQuery.php'; // здесь я удаляю пустые теги $output = str_replace(array('<h2> </h2>','<h3> </h3>','<h1> </h1>'),'<p> </p>',$output); $html = phpQuery::newDocument($output); // получаю картинки с условием $img = $html->find('.'.$wrapper_class." img:not(.aggregate__img):not(.gallery__img)"); $i = 0; foreach($img as $value){ $src = $value->getAttribute('src'); $img_path = MODX_BASE_PATH.ltrim($src, "/"); if(file_exists($img_path)){ $img_size = getimagesize($img_path); $width = $img_size[0]; $height = $img_size[1]; $attr_width = $value->getAttribute('width'); $attr_height = $value->getAttribute('height'); // пропускаю фотки которые больше px if($width >$img_wrapper_min_width && (isset($attr_width) && $attr_width > $img_wrapper_min_width)){ if($width >$wrapper_width){ $i++; $w = 'w='.((isset($attr_width) && $attr_width < $wrapper_width) ? $attr_width :$wrapper_width); $new_src = $modx->runSnippet('phpthumbon',array('input'=>$src,'options'=>$w.'&q=60&bg=ffffff')); $img_mew_path = MODX_BASE_PATH.ltrim($new_src, "/"); $new_img_size = getimagesize($img_mew_path); $new_width = $new_img_size[0]; $new_height = $new_img_size[1]; $src = $modx->runSnippet('phpthumbon',array('input'=>$src,'options'=>'q=100&f=png&bg=ffffff')); $value->setAttribute('src',$new_src); $value->setAttribute('data-src',$src); if((isset($attr_width) && $attr_width > $wrapper_width)){ $value->setAttribute('width',$wrapper_width); $value->setAttribute('height',$new_height); }else{ $value->setAttribute('width',$new_width); $value->setAttribute('height',$new_height); } $name = $value->getAttribute('alt'); if(!$name){ $value->setAttribute('alt',($name ? $name : $modx->resource->get('pagetitle'))); } $value = pq($value); $new_html = $value; if($new_height > $img_wrapper_min_height_fancybox && $width > $img_wrapper_min_width_fancybox || (isset($attr_width) && $attr_width!=$width) && ((isset($new_height) && $new_height!=$height && $height >$img_wrapper_min_height_fancybox))){ // здесь я оборачиваю большие фотки, что бы их можно было показать при помощи fancybox $new_html = '<a href="'.$src.'" class="article__image" data-fancybox="article-'.$i.'">'.$new_html.'</a>'; } $new_html .='<meta itemprop="name" content="'.($name ? $name : $modx->resource->get('pagetitle')).'">'; $new_html .='<meta itemprop="width" content="'.$width.'">'; $new_html .='<meta itemprop="height" content="'.$height.'">'; $new_html .='<meta itemprop="contentUrl" content="'.$src.'">'; $new_html = $value->wrap('<span itemscope="" itemtype="http://schema.org/ImageObject">'.$new_html.'</span>'); $value->replaceWith($new_html); }else{ $i++; $new_src = $src; $value->setAttribute('itemprop','contentUrl'); $name = $value->getAttribute('alt'); if(!$name){ $value->setAttribute('alt',($name ? $name : $modx->resource->get('pagetitle'))); } $value = pq($value); $new_html = $value; $new_html .='<meta itemprop="name" content="'.($name ? $name : $modx->resource->get('pagetitle')).'">'; $new_html .='<meta itemprop="width" content="'.$width.'">'; $new_html .='<meta itemprop="height" content="'.$height.'">'; $new_html = $value->wrap('<p itemscope="" itemtype="http://schema.org/ImageObject">'.$new_html.'</p>'); $value->replaceWith($new_html); } } } } $html = $html->html(); $output = $html; return; break; }Внимание! Требует доработок под ваши настройки с шириной контента, ещё я добавил туда обёртку для fancybox, так же можете изменить на другую Вопросы / Как обернуть фотки в микроразметку (решение) 2 +1
30 апреля 2020, 16:05 3.4 ID Главной категории 3.5 Свойства записывайте в параметр <param name="Вес">[[+weight]]</param> например как это делаете в карточке товара и тег strong поубирайте, где вставлять айдишники нужно Вопросы / Товары minishop2 для турбо страниц XML яндекс 13 0
30 апреля 2020, 08:59 1. Создаём новый документ с типом содержимого XML 2. В поле «Содержимое» вставляем [[!msProducts? &parents=`<strong>ЗДЕСЬ ID КАТЕГОРИЙ ЧЕРЕЗ ЗАПЯТУЮ</strong>` &limit=`0` &tplWrapper=`tpl.xml.msProduct.wrapper` &tpl=`tpl.xml.msProduct.row` &includeContent=`1` ]] 3. Создаем 5 чанков 3.1 tpl.xml.msProduct.wrapper <?xml version="1.0" encoding="UTF-8"?> <yml_catalog date="2019-11-01 17:22"> <shop> <name>[[++site_name]]</name> <company>[[++site_name]]</company> <url>[[++site_url]]</url> <email>[[++emailsender]]</email> <currencies> <currency id="RUR" rate="1"/> <currency id="USD" rate="80"/> </currencies> <categories> [[!pdoMenu? &parents=`<strong>ЗДЕСЬ ID ГЛАВНОЙ КАТЕГОРИИ</strong>` &displayStart=`1` &tplStart=`tpl.xml.category` &level=`0` &templates=`<strong>ЗДЕСЬ ID ШАБЛОНА КАТЕГОРИЙ</strong>` &showUnpublished=`1` &tplWrapper=`tpl.xml.categoryWrapper` &tplOuter=`@INLINE [[+wrapper]]` &tpl=`tpl.xml.category` ]] </categories> <offers> [[+output]] </offers> </shop> </yml_catalog> 3.2 tpl.xml.categoryWrapper [[+output]] 3.3 tpl.msGalleryListMini medium — это размер фотки, от минишопа {if $files} {foreach $files as $key => $file} <picture>{$file['medium']}</picture> {/foreach} {/if} 3.4 tpl.xml.category потребуется fenom, ну можете условия написать на modx <category id="[[+id]]"{if $parent && $parent!=<strong>ЗДЕСЬ ID ШАБЛОНА КАТЕГОРИЙ</strong>} parentId="[[+parent]]"{/if}>[[+menutitle:default=`[[+pagetitle]]`]]</category>[[+wrapper]] 3.5 tpl.xml.msProduct.row самое главное, это оффер товара, сюда можете вписывать условия из документации турбо страниц напишу в комментах, если нужно будет, либо сами попробуйте, ну как в карточке выводите, так и сюда, через foreach наверно <offer id="[[+id]]"> <price>[[+price:replace=` ==`]]</price> <currencyId>RUR</currencyId> <categoryId>[[+parent]]</categoryId> {$_modx->runSnippet('msGallery', ['tpl' => 'tpl.msGalleryListMini','product' => $id])} <store>false</store> <pickup>true</pickup> <delivery>true</delivery> <name>[[+pagetitle]]</name> <!-- можно написать условие для очистки контента, или вставить description--> <description><![CDATA[ [[+content]] ]]> </description> <url>[[++site_url]][[+uri]]</url> <delivery-options> <!-- общие условия курьерской доставки --> </delivery-options> </offer> ну и всё, ссылка на xml это тот документ, который мы создавали вначале Вопросы / Товары minishop2 для турбо страниц XML яндекс 13 +1
10 июня 2018, 23:52 Там мультиселект не работает, есть решение? Вопросы / Зависимые поля в админке 5 0
04 июня 2018, 21:18 Никто не знает? Вопросы / DynamicDropdownTV - ошибка в dynamicdropdown_multiple 3 0
gtsAPI 1.1.7 — таблицы на TanStack, инлайн-редактирование как в Excel Prime Vue datatable тупит на 200+ строк и в виртуальном скролинге высота полей фиксирована. Вот нам в итоге и не подошло. Директор сказал расчет должен сразу показываться без пагин...
mxApi — быстрый внешний API для MODX Revolution • зафиксировать публичный контракт EndpointInterface / метаданных по semver, чтобы наш провайдер не ломался на обновлениях;Фактически это уже так, beta стоит просто на всякий случа...
YaSmartCaptcha - защитите ваши формы от спама умной капчей от Яндекс Вообще не понял о чем речь) В системной настройке service_js сейчас указана ссылка smartcaptcha.cloud.yandex.ru/captcha.js Я предложил очистить эту настройку, тогда компонент н...
mxBackup — обезличенные копии MODX в пару кликов Ещё нет, я там разом почти полтора десятка пакетов выложил модератор, вероятно, а шоке.
Gallery3x 3.4.0 - вставка галерей прямо из визуального редактора (CKEditor и TinyMCE RTE) Здравствуйте. Есть консольный скрипт Вот почитайте: docs.ivan345.com/books/gallery3x/page/import-ms2galleryphp
[mSync] Новая версия синхронизации с 1С Всем привет. В какой то момент начали сыпаться ошибки: Error 23000 executing statement: INSERT INTO `modx_msync_products` (`product_id`, `uuid_1c`) VALUES ...
2. файлы и не будут создаваться никакие,
3.общий файл — это документ из пункта 1
(его ссылку нужно вставлять в вебмастер)
4.pdoTools должен быть установлен
Для вашего варианта с pdoResources
или
что в чанке «mat»?
— Видишь дерево?
— Нет.
— И я не вижу, а оно — есть
&parents=`16`
&level=`2`
&sortdir=`ASC`
&sortby=`menuindex`
&tplOuter=`@INLINE [[+wrapper]]`
&tpl=`mat`
&includeTVs=`img`
&countChildren=`0`
]]
про пункт, согласен, идеально.
Но мне это решение быстрее всего пришло в голову, так как XML, дерево строится по parentid
Если есть решение получше, напишите его
Кидаем её куда-нибудь, я залил в /assets/phpQuery
Так же потребуется phpthumbon
2. Создаем плагин с названием imageSrc
вешаем событие OnWebPagePrerender
Содержимое
Внимание! Требует доработок под ваши настройки с шириной контента, ещё я добавил туда обёртку для fancybox, так же можете изменить на другую
ID Главной категории
3.5
Свойства записывайте в параметр
например
как это делаете в карточке товара
и тег strong поубирайте, где вставлять айдишники нужно
2. В поле «Содержимое» вставляем
3. Создаем 5 чанков
3.1 tpl.xml.msProduct.wrapper
3.2 tpl.xml.categoryWrapper
3.3 tpl.msGalleryListMini
medium — это размер фотки, от минишопа
3.4 tpl.xml.category потребуется fenom, ну можете условия написать на modx
3.5 tpl.xml.msProduct.row
самое главное, это оффер товара, сюда можете вписывать условия из документации турбо страниц
напишу в комментах, если нужно будет, либо сами попробуйте, ну как в карточке выводите, так и сюда, через foreach наверно
ну и всё, ссылка на xml это тот документ, который мы создавали вначале