R2m0x94 (Vasily)

R2m0x94 (Vasily)

С нами с 07 мая 2018; Место в рейтинге пользователей: #324
R2m0x94 (Vasily)
18 октября 2021, 15:31
0
Делал по инструкциям, но результат один и тот же:
Local time: Mon 2021-10-18 15:28:28 MSK
  Universal time: Mon 2021-10-18 12:28:28 UTC
        RTC time: Mon 2021-10-18 15:24:27
       Time zone: Europe/Moscow (MSK, +0300)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: yes
      DST active: n/a

Warning: The system is configured to read the RTC time in the local time zone.
         This mode can not be fully supported. It will create various problems
         with time zone changes and daylight saving time adjustments. The RTC
         time is never updated, it relies on external facilities to maintain it.
         If at all possible, use RTC in UTC by calling
         'timedatectl set-local-rtc 0'.
Есть ли решение, как активировать NTP enabled: no в NTP enabled: yes?
тобс: в Network time on: yes и NTP synchronized: yes
R2m0x94 (Vasily)
18 октября 2021, 14:52
0
Тоже не понял, как настройка server_offset_time сможет включить NTP синхронизацию? Пробовал -3 и 3, результата не дало на минус и плюс 3 часа по гринвичу.
<?php
print shell_exec(escapeshellcmd('timedatectl'));
R2m0x94 (Vasily)
10 июня 2021, 14:44
0
Т.е сначала вызываю msProducts
&where=`{ "id:IN":[{$_modx->resource['dopid']}]}`

Далее
{'!msProductKits' | snippet : [
    'tplWrapper' => 'outerTpl',
    'mode' => 'owner',
    'tpl' => 'tpl.msProductKits.Item2',
    'sortby' => 'id',
    'sortdir' => 'asc',
]}
Хороший компонент. Спасибо :)
R2m0x94 (Vasily)
09 июня 2021, 18:05
0
В моём случае мне хватило вывести так (в tv на админке для возможных значений в списке):
<?php
// [[!tvLabelnameCountry? &tvVal=`[[+tv.vendor_address]]`]]
$tvArr = explode('||', $tvVal);

foreach($tvArr as $n => $v) {
   echo strstr($v, '=', true);
}

А, так как задача с поставщиками и производителями перешла на ms2 в связке с ресурсами, то пришёл к такому результату, так как с id-шниками не стал заморачиваться, но потребовалось просто вывести страну [[+vendor.country]]:
<?php
/**
 * Получаем страну производителя из настроек ms2 по имени $name. 
 * Если используется для поставщика, то имя может отсутствовать, поэтому ничего не выводим.
 * Если же необходимо получить по id, то 'name' заменить на 'id' (Тodo: Кастумизация)
 * 
 * $page = $modx->getObject('modResource', ['id' => 13]);
 * $output = $page->get('pagetitle');
 * 
 * return $output;
 * 
 * Пример вызова:
 * [[!msVendorCountry? &name=`{$purveyor | resource : "pagetitle"}`]]
 * {'!msVendorCountry' | snippet : ['name' => $purveyor | resource : "pagetitle"]}
 * 
 */

//$name = 'Sony';
$vendor = $modx->getObject('msVendor', ['name' => $name]);
if (!is_object($vendor)) {
    return '';
}
$output = ', '.$vendor->get('country');
return $output;

Код чанка в чанке с mFilter2:
{if $_pls['tv.purveyor']!= ''}
   {foreach $key as $purveyor index=$index}
        {$purveyor | resource : "pagetitle"}{'!msVendorCountry' | snippet : ['name' => $purveyor | resource : "pagetitle"]}
    {/foreach}
{/if}
R2m0x94 (Vasily)
12 апреля 2021, 18:50
0
Возможно, что версия библиотеки не подходит, хотя возможно, что ссыль ссылается не на корень сайта, а на корневую директорию сервера
<script>
$.ajax({
  type: m_method, // "GET",
  url: m_action, // "assets/components/x.php",
  data: $('#connect_table').serialize() // m_data
}).done(function(result){
  $('#connect_table').html(result);
});
return false;
</script>
R2m0x94 (Vasily)
30 декабря 2020, 01:16
0
Но при добавлении к товару, когда после перейти в пакет msProductKits, там пусто :'( печалька…
R2m0x94 (Vasily)
30 декабря 2020, 00:59
0
Алексей, Спасибо. Тоже делал такой функционал, но только через тв. перечислял id дополнительных, но тут почувствовал гибкость исполнения. Только поставил и смотрю чанк. Предлагаю заменить на такой
{var $item_name = $product | resource : 'pagetitle'}
<tr>
    <td style="width: 40%;">
        {if $product > 0}
        <strong><a href="{$product | url}">{$item_name}</a></strong>
        {else}
        <strong>{$name}</strong>
        {/if}
    </td>
    <td style="width: 50%;"><small>{$description}</small></td>
    <td style="width: 10%; text-align: center;">
        <small>{$count} шт.</small>
    </td>
</tr>
R2m0x94 (Vasily)
17 декабря 2020, 19:26
+4
Когда пролистываешь вниз баг, оказываешься наверху. И такой баг уже довольно давно наблюдается. Спасибо
R2m0x94 (Vasily)
10 ноября 2020, 19:53
0
Было бы неплохо, да и посмотрел примеры vYLVjRz, ZEWJNRE, PoNjpYG — крутая тема, тут надо подумать как использовать её с getTables или с pdoTools. Так, как понимаю, что pdoTools вообще обновляться возможно не будет больше.
R2m0x94 (Vasily)
26 октября 2020, 21:15
0
Нет, он создаётся на время запроса, затем чистится и отследить сложно, поэтому в лог попадает последующий запрос, который кешируется и пишется в лог, потому что его уже нет и создался новый. Тут вариант допиливать инструкцию или комментировать например дописать условия отработки в лог
R2m0x94 (Vasily)
26 октября 2020, 19:03
0
Да ошибки так и не ушли, пока решил просто комментарием вывода этой ошибки в лог, но это не решение проблемы. Конечно можно отключить кэширование бд, но это тоже не решение проблемы. Если только частичное, но вопрос до сих пор ещё активный
R2m0x94 (Vasily)
11 октября 2020, 01:37
0
На фронте цена без success не обновляется, поэтому перезагрузка, пока как решить не знаю
R2m0x94 (Vasily)
11 октября 2020, 01:14
0
Возможно success не пишется из-за версии jQuery 3.4.1.., а на закуску рабочий вариант, правда с перезагрузкой :/
<script>
// Пришлось делать перезагрузку стр.
$(document).on('change','.autosave', function(){ 
    //$.post('assets/components/autosave/action.php', { product_id: $(this).data('product_id'), price: $(this).val()}).done(function(data) { 
    //    alert("Data Loaded: " + data);
    //});
    $.ajax({  
        type: "POST",  
        url: 'assets/components/autosave/action.php', 
        data: { product_id: $(this).data('product_id'), price: $(this).val()},
        success:  function(data) { 
            if (!data){
                miniShop2.Message.success('Успешно обновлена!' + data)
                location.reload(true);
                //setInterval('location.reload()', 444);
            } else{
                miniShop2.Message.error('Что-то пошло не так, попробуйте позже!');
                console.log($.post);
                console.log(data);
            }
        } 
    }); 
});

</script>
В чанке вывода mFilter2
<input type="number" name="price" class="autosave" data-product_id="{$id}" value="{$price | replace : ' ' : ''}"/>
А в action.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

define('MODX_API_MODE', true);
//require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/index.php';

/** @noinspection PhpIncludeInspection */
require dirname(dirname(dirname(dirname(__FILE__)))) . '/index.php';


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

if (!$modx->user->hasSessionContext('mgr')){
    echo 'Access denied';
    exit;
}

if((int)$_POST['product_id'] > 0){
    if($product = $modx->getObject('msProduct',(int)$_POST['product_id'])){
        $product->set('price',$_POST['price']);
        $product->save();
    }
}
R2m0x94 (Vasily)
11 октября 2020, 00:16
0
Работает, спасибо :)
У меня кэшировался mFilter2, от туда и непонятки были, но в уведомление data всё ровно не пишется :(
R2m0x94 (Vasily)
10 октября 2020, 23:44
0
<script>
$(document).on('change','.autosave',function(){ 
    $.post('assets/components/autosave/action.php', 
    { product_id: $(this).data('product_id'), value: $(this).val() })
      .done(function(data) { 
        alert("Data Loaded: " + data);
        console.log($.post);
      });
});
</script>
В пост отправляется
ƒ (a,c,d,e){return n.isFunction©&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}
R2m0x94 (Vasily)
10 октября 2020, 23:26
0
Спасибо, поправил, но сохранения не происходит, консоль пустой, data пустая, ошибок нет, единственное, что пишет консоль — предупреждение
[Violation] 'load' handler took 1776ms
И alert вылетает
Data Loaded:
R2m0x94 (Vasily)
10 октября 2020, 12:49
0
Спасибо, попробовал. /assets/components/autosave/action.php отдаёт 500 ошибку при смене цены и не сохраняет
R2m0x94 (Vasily)
10 октября 2020, 11:42
0
Ну не на всю продукцию править надо цены, а на некую часть. Да на счёт умножения я знаю как сделать, и к тому же msPre решает эту проблему, но вопрос в другом, про фронтенд