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

Stepan
02 января 2023, 10:10
0
А как быть с редиректом 401
у меня вместо 401 404 ошибку выдает
Антон Тарасов
02 января 2023, 09:54
0
Покажите, какие настройки контекстов? Как указаны эти контексты в системных настройках?
Владимир
01 января 2023, 12:51
1
0
Почему-то в коде этого сниппета вообще не выполняется проверка оценки. Т.е. такая Рекапча будет блокировать только ботов, не умеющих в js.

Чтобы добавить проверку оценок, надо условие на 21 строке:
if ($data->success) {…
поменять на:
if ($data->success && $data->score >= 0.5) {…

Где $data->score — это возвращаемая пороговая оценка от 0.0 до 1.0, где 1.0 — скорее всего человек, а чем меньше, чем вероятнее, что это бот.
Konstantin
31 декабря 2022, 22:46
0
Пардоньте, так точно, все есть!
Prihod
31 декабря 2022, 20:58
+1
Смотри внимательно они должны быть, просто они добавляются не в месте вызова сниппета, а в конце тега head
Konstantin
31 декабря 2022, 17:20
0
Подскажите как вывести канонические ссылки на страницах?
В документации нет примера использования, я пытался так [[PolylangCanonical]] не получается, сказано что нужно использовать параметр $tpl с чанком, можете написать пример такого чанка?
R2m0x94 (Vasily)
31 декабря 2022, 16:11
0
А если скрипт отрабатывает дольше по времени, какой вариант настроен по умолчанию?
а) Скрипт блокируется и доходит до конца, но как только скрипт отработал по окончанию вновь запускается не создавая нагрузку
б) Скрипт запускается независимо от того запущен или нет

Предусмотрено в компоненте остановка скрипта, если отладки?
R2m0x94 (Vasily)
31 декабря 2022, 15:27
0
Запиши видео в upd поста или полный обзор, хоть посмотреть как работает. Похвастайся :)
Konstantin
31 декабря 2022, 11:25
0
Спасибо за ссылку на отличную статью которая расширила мое понимание.
Но добиться нужного результата в запросе так и не смог, пришлось собирать все значения и затем через foreach сравнивать и получать нужные данные…

<?php
  $tag = 1; // 1 аренда или 2 продажа; 


$query = $modx->newQuery('modTemplateVarResource');
$query->select(
  array('tmplvarid','contentid','value')
);
$query->sortby('FIELD(tmplvarid,7,11,13,9,12,14,15)'); // нужный порядок
$query->where(array(
    'tmplvarid:IN'=> array(7,11,13,9,12,14,15) // получим значения всех тв в кучу
));
$resources = $modx->getIterator('modTemplateVarResource',$query);

$AparttagTVs = [];
$TVs = [];
$text = '';

// 7 поле которое отвечает за вывод всех полей
// из результата запроса создаю массив только по этому полю
foreach ($resources as $apt) {
    if ($apt->get('tmplvarid') == 7) {
        $AparttagTVs[$apt->get('contentid')] =  $apt->get('value');
        // $output .= '<p>tmplvarid:'.$apt->get('tmplvarid').' $apt: '.$apt->get('contentid').' = '.$apt->get('value').'</p>';
    }
}

// перебираю весь результат запроса и создаю новый массив только с теми значениями полей у ресурсов которых в поле 7 задано аренда или продажа
foreach ($resources as $resource) {
    if ($AparttagTVs[$resource->get('contentid')] == $tag ) {
        $TVs[$resource->get('tmplvarid')][] =  $resource->get('value');
        // $output .= '<p>tmplvarid:'.$resource->get('tmplvarid').' $resource: '.$resource->get('contentid').' = '.$resource->get('value').'</p>';
    }
}

// вывожу все поля 
foreach ($TVs as $key => $v ) {
    $TVs[$key] = array_unique($TVs[$key]);
    
    if ($key !== 7) {
        
            $text .= '
                    <select name="name'.$key.'">
                        <option value="">Field-'.$key.'</option>';
            
                        foreach ($TVs[$key] as $k => $val) {
                            $text .=  '<option value="'.$val.'">'.$val.'</option>';
                        }
            $text .= '</select>';
        
          
        
    // $output .= '<p>'.$val.'-'.$text.'</p>';
        
    }
}

// echo '<pre>';
// echo print_r($AparttagTVs);
// echo '</pre>';
// echo '<pre>';
// echo print_r($TVs);
// echo '</pre>';
// echo $output;

return $text;
brioni
31 декабря 2022, 10:31
0
Огромная благодарность автору за качественное дополнение и оперативное обновление. Жаль, что из-за сложности с оплатой не получается протестировать Deepl, но с Яндекс.Клауд у меня полет отличный ?

Единственная просьба, при следующем обновлении добавить перевод атрибута alt=«название картинки» и title=«заголовок картинки» внутри тега (сейчас приходится переводить вручную). Спасибо. Всех с наступающим 2023!
Сергей Шлоков
31 декабря 2022, 08:05
0
AjaxForm на стреройдах
Наверно, имелось ввиду «на стероидах»?
Павел Романов
30 декабря 2022, 17:14
0
Сделайте сниппет и запускайте через CronManager
<?php
$content = $modx->runSnippet('pdoSitemap', array(
    'context' => 'web',
    'parents'=> 0,
    'forceXML' => 0
));
file_put_contents(MODX_BASE_PATH.'filename.xml', $content);
Vladimir
30 декабря 2022, 13:16
0
Решил с помощью данной статьи. modx.pro/solutions/22595

Теперь плагин такой.

<?php
switch($modx->event->name){
    case 'OnMODXInit':
    $map = array(
            'msOrder' => array(
                'fields' => array(
                    'regular_customer' => 0
                ),
                'fieldMeta' => array(
                    'regular_customer' => array(
                    'dbtype' => 'tinyint',
                    'precision' => 1,
                    'attributes' => 'unsigned',
                    'phptype' => 'boolean',
                    'null' => false,
                    'default' => 0,
                    ),
                ),
            ),
        );
        foreach ($map as $class => $data) {
            $modx->loadClass($class);

            foreach ($data as $tmp => $fields) {
                if ($tmp == 'fields') {
                    foreach ($fields as $field => $value) {
                        foreach (array('fields', 'fieldMeta', 'indexes') as $key) {
                            if (isset($data[$key][$field])) {
                                $modx->map[$class][$key][$field] = $data[$key][$field];
                            }
                        }
                    }
                } elseif ($tmp == 'composites' || $tmp == 'aggregates') {
                    foreach ($fields as $alias => $relation) {
                        if (!isset($modx->map[$class][$tmp][$alias])) {
                            $modx->map[$class][$tmp][$alias] = $relation;
                        }
                    }
                }
            }
        }
        break;
    
    case 'msOnManagerCustomCssJs':
        if ($page != 'orders') return;
        $modx->controller->addHtml("
            <script>
                Ext.ComponentMgr.onAvailable('minishop2-window-order-update', function(){
                    let orderTab = this.fields.items[0].items;
                    let obj = {
                        layout: 'column',
                        defaults: {
                            msgTarget: 'under',
                            border: false
                        },
                        anchor: '100%',
                        items: [
                            { 
                                columnWidth: 1,
                                layout: 'form',
                                items:[
                                    {
                                        title: 'Регулярный пользователь',
                                        xtype: 'xcheckbox',
                                        id: 'minishop2-regular-customer',
                                        labelAlign: 'top',
                                        name: 'regular_customer',
                                        fieldLabel: 'Регулярный пользователь',                                        
                                        autoHeight: true,
                                        inputValue: 1,
                                        border: false,
                                        anchor: '100%',
                                        value: this.record.regular_customer
                                    }
                                ]
                            }
                        ]
                    }
                    orderTab.push(obj);
                });                
            </script>");
    break;
}
Vladimir
30 декабря 2022, 12:49
0
Потому что задача стоит такая, чтобы если больше 5тя сделанных заказов, то должна галочка стоят в каждом заказе от этого пользователя. Нет какого-то функционала если больше 5ти заказов, это галочка чисто для менеджеров будет
Артур Шевченко
30 декабря 2022, 12:14
0
А почему нельзя просто проверять есть ли у этого пользователя 5 или более заказов и делать, то что нужно?
Наумов Алексей
30 декабря 2022, 08:01
0
У отзыва нет отдельной страницы. реализовать, естественно, это можно, вариантов реализации много.
Простой способ — передавать id отзыва через GET параметр при запросе к специальной странице «Читать отзыв». Ну и там далее получать этот отзыв из базы и выводить.
Михаил
30 декабря 2022, 03:05
0
Как сделать ссылку на страницу отзыва? Что то типа Читать отзыв подробнее (как на Отзовик.ру)
Артур Шевченко
30 декабря 2022, 00:12
0
Вообще, когда своих знаний маловато, используют готовые решения, для фильтрации это mSearch2. Но если хочется сделать самому, вот хорошая статья по составлению запросов в modx.