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
[videoGallery] Видео галерея YouTube, Vimeo Невозможно установить пакет с подписью: videogallery-1.4.0-beta Ошибка установки Error в /core/packages/videogallery-1.4.0-beta/modCategory/7fc931a7772edc9752c16e9c41eb5e52.reso...
mxBoard: канбан-доска для команд, людей и ИИ-агентов в MODX 3 Привет, добавил пользователя в группу mxBoard(4), создал токен. Добавляю все в postman пишет: rest: { «success»: false, «message»: «Недействительный токен.», «data...
Релиз miniShop2 ver. 4.4.1 & 4.4.2 Подскажите пожалуйста, может я что-то не знаю или упустил. Но есть ли решение по глюку с radio? Указываешь свое radio c одинаковым name и в результате при переключении получаешь вс...
Плагин EnvBadge: визуальный индикатор окружения в админке MODX3 Расскажите пожалуйста как вы настраиваете сайт на MODX 3 чтобы был dev, prod, stage. Можете описать workflow? Допустим у меня 80% — это магазины, там клиенты, продажи, все онлай...
MaxNotify Обновление компонента 1.3.0-pl (22.07.2026) — добавлено автоматическое получение полей через msOrder->toArray(); — массивы и объекты безопасно пропускаются; — стандартные...
MyFavorites MyFavorites — 3.0.0-beta Первая версия для MODX Revolution 3.x — компонент полностью переписан с нуля (PHP >= 8.4, namespaced-ядро MODX 3, PSR-4, сервис-ориентированная архит...
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 это тот документ, который мы создавали вначале