Всего 104 497 комментариев

Рушан
10 сентября 2020, 23:18
0
У вас есть скайп?
Я всё прописал всё сделал
при нажатии на кнопку пишет страница не найдена(
Александр Мельник
10 сентября 2020, 22:57
0
Вы правы, но я добавляю сам руками. Мне так спокойнее что ли.
Александр Мельник
10 сентября 2020, 22:54
0
здесь url не подойдет.
Здесь нужен абсолютный путь внутри операционной системы, которая установлена на вашем сервере.
Вы можете узнать этот путь разными путями, но проще всего создайте в корне сайта файл path.php c содержимым
<?php
echo $_SERVER['DOCUMENT_ROOT'];
и обратитесь к нему через браузер ваш сайт/path.php
То что увидите это и есть абсолютный путь к корню вашего сайта
require 'то что увидели/index.php';
Андрей
10 сентября 2020, 22:50
0
Сниппет ajaxForm сам добавляет класс если не указан, никогда с этим проблем не было.
// Add selector to tag form
if (preg_match('#<form.*?class=(?:"|\')(.*?)(?:"|\')#i', $content, $matches)) {
    $classes = explode(' ', $matches[1]);
    if (!in_array($formSelector, $classes)) {
        $classes[] = $formSelector;
        $classes = preg_replace(
            '#class=(?:"|\')' . $matches[1] . '(?:"|\')#i',
            'class="' . implode(' ', $classes) . '"',
            $matches[0]
        );
        $content = str_ireplace($matches[0], $classes, $content);
    }
} else {
    $content = str_ireplace('<form', '<form class="' . $formSelector . '"', $content);
}
Рушан
10 сентября 2020, 22:49
0
А как указать url для этого пункта?
require 'путь к файлу в корне сайта/index.php';
Александр Мельник
10 сентября 2020, 22:48
0
логи сервера не имеют отношения к сайту и не могут (ну по крайней мере не должны) лежать в его директориях.
Все зависит исключительно от того какой у вас сервер (apache, nginx) от того настраивали его вы сами или специалисты хостинга.
Вы можете либо сами имея доступ ssh к серверу посмотреть файлы конфигурации вебсервера или же написать в службу поддержки хостинга.
Андрей
10 сентября 2020, 22:46
0
Это зависит от вашего хостинга, везде по разному. Если не найдёте сами, можете задать вопрос в техподдержку.
Александр Мельник
10 сентября 2020, 22:32
0
Сложно будет пояснить. С javascript вы тоже не знакомы?
Можно привязать это к ссылке, но зачем? в вашем случае это вызовет необходимость разбираться еще в куче технологий. Используйте вместо ссылки форму
<form action="путь до snippet.php" method="POST">
        <input type="text" hidden value="идентификатор ресурса" name="id">
        <input type="submit" value="Удалить ресурс">
    </form>
и с помощью css стилизуйте так как посчитаете нужным.
Как прописывать путь тоже вопрос неоднозначный. Мой вам совет, чтобы сейчас не вникать в теорию относительных, абсолютных путей, разницы между url и uri просто расположите файл в корне сайта, а в форме вызывайте его
<form action="snippet.php" method="POST">
Вам необязательно делать этот код отдельным файлом, вы можете в админке сайта создать новый сниппет, в него вписать такой же код, только даже проще
<?php
    $id = $_POST['id'];
    $res = $modx->getObject('modResource',$id);
    $template = $res->get('template');

    if($template==5){
        $res->set('published',0);
    $res->save();
    }
, расположить вызов этого сниипета на какой-то странице, к примеру с идентификатором 6
Тогда в форме в атрибуте action можете указать [[~6]] или {6|url} если используете синтаксис шаблонизатора fenom
Евгений
10 сентября 2020, 22:24
0
а где он лежит не подскажите? я смотрел в core/cache/logs
Рушан
10 сентября 2020, 22:20
0
И ещё стыдно даже спросить не разу не дела такое только вот сталкнулся(
А как указывается путь к снипету?
<form action="путь до snippet.php" method="POST">
И последнее как подвязать кнопке всё это дело например ссылке
<a href="">Удалить ресурс</a>
Евгений
10 сентября 2020, 22:19
0
проблема была не в закрытом html теге, видать аякс не отрабатывал до конца
Александр Мельник
10 сентября 2020, 22:09
0
Ну и кстати, мне не раз здесь говорили на форуме знающие люди, что не нужно добавлять форме класс ajax_form? но я всегда добавляю и это часто решает много проблем. попробуйте и вы
<form action="" id="commentForm" method="post" class="cmxform ajax_form">
Александр Мельник
10 сентября 2020, 22:05
0
Я вижу тут два пути
— проверять к какой группе относиться user и показывать форму в шаблоне только при соблюдении условия, мол если пользователь в такой-то группе то покажем кнопку — снять с публикации
— или же в сниппете проверять какой пользователь сейчас авторизован в контексте web, какая у него группа и там уже решать.
Но раз вы пишите, что «Да я ограничил показ формы доступен только группе users» то значит вы пошли по первому пути и проблем быть не должно.
Рушан
10 сентября 2020, 22:01
0
Да я ограничил показ формы доступен только группе users и есть личный кабинет.
Можно ли сделать так, что бы только определённая группа могла снять с публикации.
Хорошо что сказали мне про это)
Александр Мельник
10 сентября 2020, 22:00
0
Как так — страница обновляется и не проходит валидацию.
Раз вы вызываете ajaxform значит отправка формы должна проходить без перезагрузки страницы.
Попробуйте открыть консоль браузера и смотреть ошибки js, у вас явно что с jquery, может у вас крутой проект на vuejs а ajaxform требует jquery насколько я помню.
Лично мне не нравится что у вас в вызове ajaxform не переданы параметры — отправитель письма и имя отправителя. очень много раз встречался что если эти параметры не переданы, письма просто не доходят, но раз вы говорите что письмо приходит, то ройте только в ошибки со стороны js.
Андрей
10 сентября 2020, 21:55
0
Дубликаты ресурсов это в логе modx вероятно. А нужно смотреть именно серверный лог на хостинге.
Александр Мельник
10 сентября 2020, 21:46
0
Тут нужно исходить из логики вашего приложения, понимать зачем вообще вы это делаете.
Возможно право снимать ресурс с публикации нужно давать не всем? А только определенным пользователям. Тогда нужно ограничить показ этой формы на фронтедне только если пользователь авторизован на сайте и это пользователь определенной группы — к примеру менеджер
Или по крайней мере делать проверку в файле snippet.php что это за ресурс с таким id. например проверять его шаблон и разрешать отключать только ресурсы с определенным шаблоном.
<?php

    /**
     * Подключение объекта modx
     */
    define('MODX_API_MODE', true);
    require 'путь к файлу в корне сайта/index.php';
    
    $id = $_POST['id'];
    $res = $modx->getObject('modResource',$id);
    $template = $res->get('template');

    if($template==5){
        $res->set('published',0);
    $res->save();
    }
?>
Так у пользователей будет возможность отключить ресурсы только если их шаблон имеет идентификатор 5.
Рушан
10 сентября 2020, 21:40
0
А как сделать что бы такого не случилось?
Хоть буду знать)
Александр Мельник
10 сентября 2020, 21:37
0
Но в целом, идея позволять пользователям сайта снимать ресурсы с публикации, так себе идея.
Кто-то откроет код сайта в браузере, заменит идентификатор ресурса на число 1, отправит форму и отключит главную страницу сайта например.