Всего 123 794 комментария

OlegSh
25 июля 2023, 16:16
0
Добрый день.
в header так:

!--&element=`current_weather`-->
!--&cacheExpires=`7200`-->
!--&cacheElementKey=`weather`-->
!--&cacheKey=`dg_cache`]]-->

а сам чанк так:
//<?php
//$json = file_get_contents('https://api.openweathermap.org/data/2.5/weather?q=Moscow&mode=json&lang=ru&units=metric&APPID=d0e3687ac0b25562f0e995c81580f565');

 //$weather=$modx->fromJSON($json);

 //echo (intval($weather['main']['temp'])>0?"+".round($weather['main']['temp']):round($weather['main']['temp']))." <img src='https://openweathermap.org/img/w/".$weather['weather'][0]['icon'].".png'>";
Артур Шевченко
25 июля 2023, 16:04
0
Нет, там же вполне определенные тэги, только переписывать.
Дмитрий
25 июля 2023, 15:16
0
Добрый день! Обычный XML не подойдет? Только YML?
Кровельный
25 июля 2023, 14:51
1
0
Как из свойств товара-ресурса записать в одну опцию товара?
Например если 2-3 значения, а 1 ключ, конечно можно использовать вариант в свойствах если там уже есть данные json, как многомерный массив, но мы сделаем тестовую опцию множественный выбор.
  1. Назовём опцию made_from
  2. Заведём в опцию значения (В настройках minishop2), чтобы получились значения:
    • Металла
    • Дерева

    • Вторсырья
    • Текстиля
    • Пластика

    * — не программно, вручную (если программно, то дописывайте код)
  3. Далее выполним:
    <?php
    $key = 'made_from'; // имя опции товара
    $resource = $modx->getObject('modResource', 44);
    $product = $modx->getObject('msProduct', $resource->id);
    //$arr = $resource->get('properties')['technicals']['Детали изготовлены из'];
    $arr = ['Пластика','Вторсырья'];
    $options = $product->loadData()->get('options');
    foreach ($arr as $k => $v) {
        $options[$key][$k] = $arr[$k];
    }
    $product->set('options', $options);
    $product->save();
  4. Готово. Теперь mFilter2 сможет фильтровать по опции. Если необходимо записать или обновить товары, то необходимо завернуть всё в getCollection
biper
25 июля 2023, 14:36
0
ибо вроде как масло масляное получается в нем…
biper
25 июля 2023, 14:20
0
ни фига…: (
логику вроде понимаю… а сам вызов не нужно ничего менять?
<div class="container-fluid">
     <hh>ГАЛЕРЕЯ наших работ</hh><hr>
         <div class="row" style="margin: 0;">
            
[[!GalleryAlbums? &toPlaceholder=`GalleryAlbums` &limit=`0` &albumCoverSort=`rank` &prominentOnly=`1`
&rowTpl=`galAlbumRowWithCoverTpl`&thumbWidth=`400` &thumbHeight=`266` &thumbTpl=`GalItemThumb1` &imageWidth=`900` &imageHeight=`900`]]

[[!Gallery? &album=`[[*galery_name]]` &limit=`0` &checkForRequestTagVar=`1`&sortby=`{"publishedon":"ASC"}`  &toPlaceholder=`Gallery` 
&useCss=`0` &containerTpl=`GalleryAlbumTpl` itemCls=`carousel-item` activeCls=`carousel-item active` &thumbWidth=`400` &thumbHeight=`266` 
&thumbTpl=`GalItemThumb1` &imageWidth=`900` &imageHeight=`900`]]

[[+Gallery:isnot=``:then=`<div class="carousel-inner gallery_pic">[[+Gallery]]</div>`:else=`<ul class="carousel-inner gallery_pic">

[[+GalleryAlbums]]</ul>`]]
           
         </div>
        <p class="con">
         </p>
      </div>
Dan
Dan
25 июля 2023, 13:07
0
В карусели или нет — это никак не влияет. Я бы конечно сделал ajax-подгрузку, но там писанины больше.
biper
25 июля 2023, 13:04
0
спасибо, попробуую :) несколько омрачает что галерея находится в карусели, видимо оттого не совсем получается… постараюсь разобраться
Dan
Dan
25 июля 2023, 12:40
1
0
Если не хотите использовать ajax, то можно сделать так немного закостылить:
1) Немного правите ваш текущий чанк galAlbumRowWithCoverTpl
[[!Gallery?
    &album=`[[+id]]`
    &toPlaceholder=`photos`
    &thumbTpl=`tpl.gallery.image`
]]
<a href="[[+url:is=``:then=`[[+image]]`:else=`[[+url]]`]]" [[+link_attributes]] class="gallery-preview" data-photos="[[+photos:commaSeparate]]">
    [[+image:notempty=`<img src="[[+image]]" [[+cls:notempty=`class="[[+cls]]"`]] alt="[[+title]]" />`]]
</a>
2) Создаете чанк tpl.gallery.image
[[+image_absolute]],
3) Создаете сниппет commaSeparate
<?php
return rtrim($input, ',');
4) Пишете js-код:
$(document).ready(function() {
   $('.gallery-preview').click(function(e) {
        e.preventDefault();
        let photos = [];

        if ($(this).attr('data-photos') && $(this).attr('data-photos') != '') {
            let list = $(this).attr('data-photos').split(',');
            $.each(list,function(i){
                photos.push({href: list[i]});
            });
        }        
        
        $.fancybox.open(photos);
   });
});
OlegSh
25 июля 2023, 10:01
0
Добрый день, Николай! Точно! Была такая запись, удалил, надеюсь, что поможет. Огромное спасибо! Исчезла эта ошибка!
Может еще про погоду и валюту подскажите?! Коды курса валют и погоды на сайте в Header и в чанках закомментировал, кеш везде стоит 7200, но MODX генерирует ошибки: (ERROR @ /home/o/olegsh6w/dopross.ru/core/cache/includes/elements/modsnippet/35.include.cache.php: 51) getCache could not find requested element `current_weather`-->
Дмитрий
25 июля 2023, 09:24
0
У кого-нибудь работает обновление товаров по крону?
раньше были ошибки, прописал абсолютный путь к index.php, после этого пропали, но товары не экспортируются(
prnt.sc/nIKF9XajT9gJ
<?php

define('MODX_API_MODE', true);

$developmentConfig = dirname(dirname(dirname(dirname(dirname(dirname(__FILE__)))))) . '/core/config/config.inc.php';
$productionConfig = dirname(dirname(dirname(dirname(__FILE__)))) . '/config/config.inc.php';

if (file_exists($developmentConfig)) {
    /** @noinspection PhpIncludeInspection */
    require_once $developmentConfig;
} else {
    /** @noinspection PhpIncludeInspection */
    //require_once $productionConfig;
}
/** @noinspection PhpIncludeInspection */
require_once '/home/ert/public_html/index.php';

$modx->getService('error', 'error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
$modx->setLogTarget('FILE');
$modx->error->message = null;

/** @var Sync $Sync */
$Sync = $modx->getService('sync', 'Sync',
    $modx->getOption('sync_core_path', null,
        $modx->getOption('core_path') . 'components/sync/') . 'model/sync/');
$corePath = $modx->getOption('sync_core_path', null, $modx->getOption('core_path') . 'components/sync/');
$modx->lexicon->load('sync:default');

$params = array(
    'service'   => 'moysklad',
    'action'    => 'mgr/mscategory/export',
    'sync_step' => 'sync_init',
);

$response = $Sync->curlExec($params);

//var_dump($response);
Николай Савин
25 июля 2023, 08:33
1
0
Пройдите в системные настройки. Найдите там настройку extension_packages. Именно она отвечает за инициализацию пакетов. Скорее всего в ней осталась запись о пакете hybridauth. Отсюда и попытки инициировать отсутствующий пакет. Удалите оттуда запись — и будет вам счастье.
ВНИМАНИЕ. Там формат JSON. Удаляйте кусочек про hybridauth аккуратно, чтобы не сломать записи о других пакетах.
Алексей Шумаев
24 июля 2023, 20:24
0
Случайно наткнулся на старый запрос.
У кого такая ситуация будет — смотрите сразу таблицы базы данных: скорее всего при переносе сайта потеряны индексы и ключи таблиц. Отсюда все проблемы.
biper
24 июля 2023, 11:15
0
Спасибо, попробую :)