vit

vit

С нами с 03 июня 2022; Место в рейтинге пользователей: #172
vectorserver
17 ноября 2023, 20:13
1
+1
Создаешь сниппет mod_image
<?php

/* @var modX $modx*/
/* @var $input*/


// Создаем объект DOMDocument
$dom = new DOMDocument();


// Загружаем HTML-код
$html = $input;
//$dom->loadHTML($html);
$dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));


// Получаем все элементы <img>
$xpath = new DOMXPath($dom);
$images = $xpath->query("//img");

foreach ($images as $image) {
    // Получаем старый путь из атрибута 'src'
    $oldSrc = $image->getAttribute('src');
    $new_path = $modx->runSnippet('phpthumbof',['input'=>$oldSrc,'options'=>'w=0&h=800&zc=0']);
    // Заменяем значение атрибута 'src'
    $image->setAttribute('src', $new_path);


    // Получаем родительский элемент <a> и добавляем атрибут 'href' с значением $oldSrc
    $parentLink = $image->parentNode;
    if ($parentLink->nodeName === 'a') {
        $parentLink->setAttribute('href', $oldSrc);
    } else{

        // Создаем тег a
        $a = $dom->createElement('a');
        $a->setAttribute('href', $oldSrc);

        $a->setAttribute('data-fancybox', 'gal');
        $a->setAttribute('class', 'pointer img-fluid');
        $image->parentNode->replaceChild($a, $image);
        $a->appendChild($image);
    }

    if(!$image->getAttribute('title')){
        $image->setAttribute('title', 123);
        $image->setAttribute('alt', 'Рисунок');
    }

}

// Получаем обновленный HTML-код
$content_new = $dom->saveHTML();


return $content_new;
и потом используй
{$_modx->resource.content | replace : '<h3>' : '<h3 class="title-dec">' | mod_image}
Dan
Dan
22 июня 2023, 16:48
1
+1
А ссылка находится вне формы что ли? Просто если она внутри, то почему бы не сделать обычную submit-кнопку? Ну а вообще обычный код:
var form = document.getElementById('id_формы');
document.getElementById('finish').addEventListener('click', function() {
   form.submit();
});
Артур Шевченко
29 января 2023, 20:01
1
0
Ты сам решил что так можно или видел где? Если где-то увидел, больше там не смотри. Вот тебе проверенные материалы от надёжного автора.
Антон Тарасов
11 октября 2022, 18:55
1
0
Вы собрали все в переменную $name, теперь ее делаете плейсхолдером и выводите.
Антон Тарасов
11 октября 2022, 18:43
1
0
foreach ($result as $data) {
    $name .= "<input type='radio' id='fullname' name='fullname' value='$data["name"]'><label for='fullname'>$data["name"]</label>"
    }
Антон Тарасов
11 октября 2022, 18:23
1
0
Конкатенацией, например, так:
$name .= $data['name'];
или с каким-либо разделителем, как они должны в итоге выглядеть, через запятую, или каждый на новой строке?
Антон Тарасов
11 октября 2022, 18:04
1
0
переменная $name в итоге получает только значение имени последнего клиента, убедитесь, что оно непусто(ну и есть такой столбец конечно).
Сам сниппет-то вызывается(можно попробовать вызывать некешированным !snippet)? Добавьте больше отладочных сообщений.