Всего 125 975 комментариев

Николай Савин
04 февраля 2022, 09:50
0
Здравствуйте. Компонент Tickets не работает с MODX3.
biper
04 февраля 2022, 09:46
0
Собираю сайт на Modx revo: pdoTools 3.0.0-beta, tickets-1.13.0-pl, php – 7.4 Modx revo — 3.0.0-beta2
После того, как включаю в шаблон страницы вызов стандартного сниппета [[!TicketComments? &allowGuest=1]] страница с этим шаблоном выдает ошибку 500

логи вот
[03-Feb-2022 14:26:50 Europe/Moscow] PHP Notice: Undefined index: modUser in /home/s/shevam00/prodlenka-club.ru/wisky/core/vendor/xpdo/xpdo/src/xPDO/xPDOMap.php on line 44
[03-Feb-2022 14:26:50 Europe/Moscow] PHP Notice: Indirect modification of overloaded element of xPDO\xPDOMap has no effect in /home/s/shevam00/prodlenka-club.ru/wisky/core/components/tickets/model/tickets/metadata.mysql.php on line 26
[03-Feb-2022 14:26:50 Europe/Moscow] PHP Fatal error: Uncaught Error: Call to a member function setConfig() on null in /home/s/shevam00/prodlenka-club.ru/wisky/core/components/tickets/model/tickets/tickets.class.php:1415
Stack trace:
#0 /home/s/shevam00/prodlenka-club.ru/wisky/core/components/tickets/model/tickets/tickets.class.php(100): Tickets->loadPdoTools()
#1 /home/s/shevam00/prodlenka-club.ru/wisky/core/cache/includes/elements/modx/revolution/modsnippet/52.include.cache.php(23): Tickets->initialize('web', Array)
#2 /home/s/shevam00/prodlenka-club.ru/wisky/core/src/Revolution/modScript.php(88): include('/home/s/shevam0...')
#3 /home/s/shevam00/prodlenka-club.ru/wisky/core/src/Revolution/modParser.php(505): MODX\Revolution\modScript->process(NULL)
#4 /home/s/shevam00/prodlenka-club.ru/wisky/core/components/pdotools/src/Parsing/Parser.php(273): MODX\Revolution\modParser->processTag(Array, true)
#5 /home/s/shevam00/prodlenka-club.ru/wisky/core/src/Revolution/modParser.php(218): ModxPro\PdoTools\Parsing\Parser->processTag(Array, true)
#6 /home/s/shevam00/prodlenka-club.ru/wisky/core/components/pdotools/src/Parsing/Parser.php(70): MODX\Revolution\modParser->processElementTags('', '<!doctype html>...', true, false, '[[', ']]', Array, 9)
#7 /home/s/shevam00/prodlenka-club.ru/wisky/core/src/Revolution/modResource.php(521): ModxPro\PdoTools\Parsing\Parser->processElementTags('', '<!doctype html>...', true, false, '[[', ']]', Array, 10)
#8 /home/s/shevam00/prodlenka-club.ru/wisky/core/src/Revolution/modResource.php(469): MODX\Revolution\modResource->parseContent()
#9 /home/s/shevam00/prodlenka-club.ru/wisky/core/src/Revolution/modResponse.php(72): MODX\Revolution\modResource->prepare()
#10 /home/s/shevam00/prodlenka-club.ru/wisky/core/src/Revolution/modRequest.php(154): MODX\Revolution\modResponse->outputContent(Array)
#11 /home/s/shevam00/prodlenka-club.ru/wisky/core/src/Revolution/modRequest.php(138): MODX\Revolution\modRequest->prepareResponse()
#12 /home/s/shevam00/prodlenka-club.ru/wisky/core/src/Revolution/modX.php(1495): MODX\Revolution\modRequest->handleRequest()
#13 /home/s/shevam00/prodlenka-club.ru/public_html/index.php(55): MODX\Revolution\modX->handleRequest()
#14 {main}
thrown in /home/s/shevam00/prodlenka-club.ru/wisky/core/components/tickets/model/tickets/tickets.class.php on line 1415

получается что сбой при обработке вот этого выражения (1411-1419)

public function loadPdoTools()
{
if (!is_object($this->pdoTools) || !($this->pdoTools instanceof pdoTools)) {
$this->pdoTools = $this->modx->getService('pdoFetch');
$this->pdoTools->setConfig($this->config);
}

return !empty($this->pdoTools) && $this->pdoTools instanceof pdoTools;
}
Не понимаю что происходит и как побороть, не хватает образования ? я ить в большей мере художник… Помогите, чем можете :)
Наумов Алексей
03 февраля 2022, 14:11
+1
Да, если это так — правда неоднозначная ситуация.
Стоит изучить логи сервера (nginx к примеру, имею ввиду), посмотреть, есть ли там такие «двойные» запросы. Возможно, стоит фильтровать по UserAgent, если это почтовый сервер (робот) — не активировать пользователя.

Ну а еще вариант — пусть ссылка ведет на страницу с формой и кнопочкой, которую робот нажимать не будет, а пользователь будет, и только при отправке формы (через post) активировать пользователя.
Александр Мельник
03 февраля 2022, 13:20
0
Какие родились у меня мысли.
Видимо почтовый сервис, делает какой-то предварительный запрос по ссылкам, указанным в письме.
С какой целью, понять сложно, может хотят убедиться что там не 404 или что там безопасно или ведут свою «слежку» за всем.
А уже потом человек кликает по ссылке и совершается второй запрос.
Только так я могу пояснить тот факт, что пользователь активируется, но человек перешедший по ссылке, видит надпись что такой пользователь не найден или уже был ранее активирован.
Это не приятно(
Андрей
02 февраля 2022, 23:22
2
+4
К товарам в MS не применимо?
Для расширения полей минишопа и так есть 2 компонента — msFieldsManager и msAddField
Денис Мижеревич
02 февраля 2022, 23:20
0
Спасибо. Предполагал, что js какой-то накладывает, но не был уверен
Aleksandr Huz
02 февраля 2022, 22:11
0
Данный компонент делает поля для всех шаблонов? Т.е. разделять по шаблонам нельзя?
Это будет в след. версии.

К товарам в MS не применимо?
К свойствам товара нет.
Артур Шевченко
02 февраля 2022, 22:09
0
Ну это тоже не проблема.
$products = $modx->getIterator('msProduct', array('published:!=' => 1));
foreach($products as $product){
$dir = MODX_CORE_PATH.'assets/images/products/'.$product->get('id').'/';
removeDirectory($dir);
$product->remove();
}

 function removeDirectory($dir) {
        if ($objs = glob($dir."/*")) {
            foreach($objs as $obj) {
                is_dir($obj) ? removeDirectory($obj) : unlink($obj);
            }
        }
        rmdir($dir);
    }
Игорь
02 февраля 2022, 22:00
0
так я уже так пробовал. меню закрывается, действия не происходило.

сейчас уже все работает. последние посты мои помогли мне.
Сергей Карпович
02 февраля 2022, 22:00
0
Данный компонент делает поля для всех шаблонов? Т.е. разделять по шаблонам нельзя?
К товарам в MS не применимо?
Андрей
02 февраля 2022, 21:59
+1
Мне нужно изменить эта маску на формат украинского номера телефона (+3(...)...)
Подскажите, где это редактировать?
В минишопе по умолчанию нет маски на поле телефона. Смотри подключенные js скрипты.
Сергей
02 февраля 2022, 21:19
0
Спасибо, я пробовал через консоль удалить, но у меня возникла проблема, фото не удаляются. в папках остаются фото оригиналов и ресайзы. И вроде 'published' => 0 можно так прописать)
Артур Шевченко
02 февраля 2022, 21:00
0
Вот так попробуй.
$products = $modx->getIterator('msProduct', array('published:!=' => 1));
foreach($products as $product){
$product->remove();
}
Александр Мельник
02 февраля 2022, 18:05
0
Ох страшное вы что то напридумали.
У вас проблема в том, что если вы находитесь на одной странице, кликаете на пункт меню, который содержит якорную ссылку на элемент на этой же странице, у вас не закрывается меню?
Почему не написать 3 строчки javascript которые при клике на ссылку в меню, кликнут по крестику закрывающему меню?
Игорь
02 февраля 2022, 16:53
0
Нашел такой кусок. работает во всех браузерах, но не нравится его обьем.

работает:
// Select all links with hashes
$('a[href*="#"]')
  // Remove links that don't actually link to anything
  .not('[href="#"]')
  .not('[href="#0"]')
  .on('click', function(event) {
    // On-page links
    if (
      location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') 
      && 
      location.hostname == this.hostname
    ) {
      // Figure out element to scroll to
      var target = $(this.hash);
      target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
      // Does a scroll target exist?
      if (target.length) {
        // Only prevent default if animation is actually gonna happen
        event.preventDefault();
        $('html, body').animate({
          scrollTop: target.offset().top
        }, 1000, function() {
          // Callback after animation
          // Must change focus!
          var $target = $(target);
          $target.trigger('focus');
          if ($target.is(":focus")) { // Checking if the target was focused
            return false;
          } else {
            $target.attr('tabindex','-1'); // Adding tabindex for elements not focusable
            $target.trigger('focus'); // Set focus again
          };
        });
      }
    }
  });

Укороченный вариант его, но не работает у меня…

$('a[href*="#"]').on('click', function() {
  $('html, body').animate({
    scrollTop: $($.attr(this, 'href')).offset().top
  }, 400);
  return false;
});
Алексей
02 февраля 2022, 16:46
0
можно компонентом Batcher отметить все неопубликованные и удалить
Игорь
02 февраля 2022, 16:40
0
браузеры оказывается поддерживают плавные скролы. но сафари не поддерживает

а так работает это кусок, кроме сафари:
<a href="site.ru/#steer">Бычок</a>

<style>
html {
  scroll-behavior: smooth; /* свойство scroll-behavior не наследуется, применяется к прокручиваемым блокам */ 
}
</style>

<h2 id="steer">Бычок</h2>
Может кто подскажет, как сделать для всех браузеров?
Игорь
02 февраля 2022, 16:19
0
Может кто подскажет как сделать и плавный скролл сразу к месту якоря?

e.preventDefault();
            var anchor = $(this).attr('href');
            $('html, body').stop().animate({
                scrollTop: $(anchor).offset().top - 60
            }, 800);

и так пробую
$('a').click(function() {
          
            var anchor = $(this).attr('href');
            $('html, body').stop().animate({
                scrollTop: $(anchor).offset().top - 60
            }, 800);
        });
Игорь
02 февраля 2022, 15:24
0
Решено! Короче сам додумался методом тыка. Якори работают, ссылки обычные открывает

<a id="section-posldedstviya"></a><!-- якорь в нужном месте //-->
ссылка в меню
<li><a href="[[~1]]#section-posldedstviya" class="ps-4">Последствия</a></li>
в javascript.js:
$('a').click(function(){
    // Здесь пишем код, который будет закрывать меню
    $(slide_wrp).css({ "right": -$(slide_wrp).outerWidth() + 'px' }); // скрываем меню
    setTimeout(function() {
        $(slide_wrp).removeClass('active'); // remove active class 
    }, 50);
    $(overlay).css({ "opacity": "0", "width": "0" });
})