Всего 123 788 комментариев

Andrew
25 мая 2023, 22:37
0
Могу ошибаться, но где-то читал что так
<a href="[[+uri]]">Подробнее</a>
нужно делать в EVO, а вот так
<a href="[[~[[+id]]]]">Подробнее</a>
в REVO. Не судите строго могу ошибаться.
Andrew
25 мая 2023, 22:20
0
Может быть я что то не так делаю, т.к. с модх только начал знакомиться.
Создал чанк vnewstpl с содержимым
<section class="news">
    <div class="container">
        <div Class="News-one-post">
            <div class="news-title">
                
                    <div class="news-data"><i class="icon-calendar">[[+publishedon:date=`%d.%m.%Y`]]</i>
                    </div>
                        <div class="news-media">
                          [[+tv.videonewsTV:phpthumbof=`w=120&h=120`]]"
                            <div class="news-one-news"><a href="[[~[[+id]]]]">[[+pagetitle]]</a>
                    
                            </div>
                    
                                <p><a href="[[~[[+id]]]]">[[+introtext]]</a> </p>
                        </div>
               
                    <div class="mask-image"><a class="info" href="[[~[[+id]]]]">подробнее</a>
                    </div>
            </div>
        </div>
    </div>

</section>
Создал доп поле videonewsTV
Сделал шаблон Видео:
[[$HEAD]]
<body>

[[$HEADER]]
[[$nav_item]]
<!-- Страница новостей-->

[[pdoResources?
	&tpl=`vnewstpl`
	&parents=`3`
	&depth=`0`
	&includeTVs=` videonewsTV`
	&includeContent=`2`
]]
[[$FOOTER]]
Присвоил ресурсу Видео шаблон видео и в настройках обозначил его как контейнер.
Создал в разделе видео несколько документов. Теперь по ссылке Видео отображается лента новостей, но при переходе в подробно все равно отображается лента новостей, а не новость детально.
Andrew
25 мая 2023, 22:12
0
<section class="news">
    <div class="container">
        <div Class="News-one-post">
            <div class="news-title">
                
                    <div class="news-data"><i class="icon-calendar">[[+publishedon:date=`%d.%m.%Y`]]</i>
                    </div>
                        <div class="news-media">
                          [[+tv.newsTV:phpthumbof=`w=120&h=120`]]"
                            <div class="news-one-news"><a href="[[~[[+id]]]]">[[+pagetitle]]</a>
                    
                            </div>
                    
                                <p><a href="[[~[[+id]]]]">[[+introtext]]</a> </p>
                        </div>
               
                    <div class="mask-image"><a class="info" href="[[~[[+id]]]]">подробнее</a>
                    </div>
            </div>
        </div>
    </div>

</section>
При переходе в детальную новость меняется ссылка, но содержимое страницы тоже самое.
Страница с новостями trksever/videonews/
При переходе на детальную trksever/videonews/v2.html. Но содержимое тоже все новости лентой.
Andrew
25 мая 2023, 22:04
0
Ни так ни так не работает. Открывает страницу со всеми новостями. Причем изменяя адрес ссылки.
Павел Романов
25 мая 2023, 19:04
0
Используйте вставку кода, а то теги съедает:


Вывод ссылки в чанке должен быть таким:
<a href="[[+uri]]">Подробнее</a>
или таким:
<a href="[[~[[+id]]]]">Подробнее</a>
Dan
Dan
25 мая 2023, 14:18
0
Вывод чего? В контенте ресурса у меня просто рандомный набор слов и слова из words плагин удаляет внутри контента.
Евгений
25 мая 2023, 14:16
0
вывод через разделитель или по умолчанию?
Dan
Dan
25 мая 2023, 13:38
0
Я у себя протестил, такой код норм чистит. Вы после сохранения страницу ресурса обновите в админке и увидите, что слова удалились из контента.
<?php
switch ($modx->event->name) {
        case 'OnDocPublished':
        case 'OnBeforeDocFormSave':
        case 'OnDocFormSave':
        $res = $modx->getObject('modResource', 1);
        $words = json_decode($res->getTVValue('words'), true);
           
        $content = $resource->get('content');
        $pattern = '/(?:' . join('|', $words) . ')/i';
        $content = preg_replace($pattern, '', $content);
        
        $resource->set('content', $content);
        $resource->save();
        break;
              
}
Евгений
25 мая 2023, 12:47
0
рабочий плагин строка в нем выглядит так если слова руками вписывать
$words = array('word1,word2`)
Евгений
25 мая 2023, 11:36
0
<?php
switch ($modx->event->name) {
        case 'OnDocPublished':
        case 'OnBeforeDocFormSave':
        case 'OnDocFormSave':
            if ($resource->get('template') == 27 && !$resource->get('content')) $resource->set('published', 0);
$res = $modx->getObject('modResource', 11);
$words = $res->getTVValue('words');
$modx->log(1, print_r($words,1));
           
            $content = $resource->get('content');
            $pattern = '/(?:' . join('|', $words) . ')/i';
            $content = preg_replace($pattern, '', $content);
            
            $resource->set('content', $content);
            $resource->save();
        break;
              
}
вот так выводит, надо по и дее без ковычек и в ...
["testx","testy"]

ну и само собой слова не чистятся
на coloricker плагин ругался я его отключил

[2023-05-25 11:39:37] (ERROR @ /var/www/www-root/data/www/.ru/core/cache/includes/elements/modplugin/59.include.cache.php: 9) [«testx»,«testy»]
[2023-05-25 11:39:37] (ERROR @ /var/www/www-root/data/www/.ru/core/cache/includes/elements/modplugin/59.include.cache.php: 12) PHP warning: join(): Invalid arguments passed

12 строка — $pattern = '/(?:'. join('|', $words). ')/i';
Константин Ильин
25 мая 2023, 11:16
0
в вашем исходном коде, в название события есть пробел в начале, оно раньше не запускалось.
case ' OnBeforeDocFormSave':
так же строчка $words = $res->getTVValue('words'); может вернуть уже готовый массив и не надо его вытаскивать из json, как я ранее писал надо смотреть что там возвращает. Вот так:
$words = $res->getTVValue('words');
$modx->log(1, print_r($words,1));
Потом смотреть в журнале ошибок модх
Dan
Dan
25 мая 2023, 10:07
0
А у вас поле точно типа tvSuperSelect? Странно конечно. Если не разберитесь, можете мне в тг или в сообщения написать, смогу сегодня в обеду глянуть
Евгений
25 мая 2023, 09:48
0
ошибка выбивается сразу как я добавляю строку
$words = json_decode($res->getTVValue('words'), true);

а при такой $words = $res->getTVValue('words');
ее нет

в серверных логах ошибок нет
Dan
Dan
25 мая 2023, 09:42
0
Вы лог модх смотрите? Надо серверный, ибо ошибка 100% с кодом 5хх, скорее 500.
Евгений
25 мая 2023, 09:38
0
да, при сохранении выскакивает ошибка, но зависания нет, просто продолжаешь работать а сохранить не можешь :)

при этом для всех шаблонов хотя там в условиях указан конкретный
лог ошибок пуст
старый код плагина где я слова перечислял через запятую не вызывает проблем
Dan
Dan
25 мая 2023, 09:31
0
При сохранении ресурса имеете в виду? Просто зависает? Тогда скорее другой плагин что-то ломает. Надо смотреть логи, так сложно сказать.
Евгений
25 мая 2023, 09:25
0
<?php
switch ($modx->event->name) {
        case 'OnDocPublished':
        case 'OnBeforeDocFormSave':
        case 'OnDocFormSave':
            if ($resource->get('template') == 24 && !$resource->get('content')) $resource->set('published', 0);
$res = $modx->getObject('modResource', 11);
$words = json_decode($res->getTVValue('words'), true);
           
            $content = $resource->get('content');
            $pattern = '/(?:' . join('|', $words) . ')/i';
            $content = preg_replace($pattern, '', $content);
            
            $resource->set('content', $content);
            $resource->save();
        break;
              
}
когда делаю так получаю ошибку при сохранении… которую выше писал но на снипет colorpicker
Dan
Dan
25 мая 2023, 05:15
0
Ну вы хоть почитайте мой комментарий, я же в самом первом написал код, а вы снова по своему получаете, вот и не работает. tvSuperSelect тоже хранит json