Код о снятии с публикации ресурса?
Здравствуйте!
Помогите реализовать код о снятии с публикации ресурса miniShop2 при нажатии на кнопку.
Можно переделать вот этот код?
Помогите реализовать код о снятии с публикации ресурса miniShop2 при нажатии на кнопку.
Можно переделать вот этот код?
<?php
$res = $modx->getObject('modResource',$id);
$createdby = $res->get('createdby');
$user = $modx->user->getOne('Profile');
$profile = $user->get('id');
if($createdby == $profile){
if($_GET['user'] == $profile ) {
$unid = $_GET['id'];
$resource = $modx->getObject('modResource', $unid );
$resource->set('published',1);
$resource->save();
}
}
Заранее благодарю за помощь! Комментарии: 17
$resource->set('published',0);
Прошу прощения за тупизм я в php вообще ноль. Я только вникаю во всё это. Прошу не ругать сильно.
Прошу помочь в обучении в данной задаче.
Как подключить снипет к кнопке, что бы реагировал на клик?
Прошу помочь в обучении в данной задаче.
Как подключить снипет к кнопке, что бы реагировал на клик?
зачем вы беретесь за сайт на php если в нем вообще ноль.
Где находится ваша кнопка, нажатие на которую снимает с публикации ресурс?
В админке? На фронтенде?
Примерно порядок действий такой.
У вас есть форма html у которой есть кнопка и скрытое поле в котором лежит идентификатор ресурса. Вам нужно обработать отправку этой формы (или просто указав в атрибуте формы action путь к файлу php или же на js отловить событие отправки формы, получить с нее данные и отправить ajax запрос на файл php)
Далее в этом файле php вы должны через основной объект $modx получить ресурс с тем идентификатором, что предан из формы, установить значение его свойства published в 0 и сохранить.
Примерно так
Где находится ваша кнопка, нажатие на которую снимает с публикации ресурс?
В админке? На фронтенде?
Примерно порядок действий такой.
У вас есть форма html у которой есть кнопка и скрытое поле в котором лежит идентификатор ресурса. Вам нужно обработать отправку этой формы (или просто указав в атрибуте формы action путь к файлу php или же на js отловить событие отправки формы, получить с нее данные и отправить ajax запрос на файл php)
Далее в этом файле php вы должны через основной объект $modx получить ресурс с тем идентификатором, что предан из формы, установить значение его свойства published в 0 и сохранить.
Примерно так
$res = $modx->getObject('modResource',$id);
$res->set('published',0);
$res->save();
На фронтенде кнопка.
Файл snippet.php
<?php
/**
* Подключение объекта modx
*/
define('MODX_API_MODE', true);
require 'абсолютный путь к файлу в корне сайта/index.php';
$id = $_POST['id'];
$res = $modx->getObject('modResource',$id);
$res->set('published',0);
$res->save();
?>
Форма где то в шаблоне<form action="путь до snippet.php" method="POST">
<input type="text" hidden value="идентификатор ресурса" name="id">
<input type="submit" value="снять с публикации">
</form>
Да
Но в целом, идея позволять пользователям сайта снимать ресурсы с публикации, так себе идея.
Кто-то откроет код сайта в браузере, заменит идентификатор ресурса на число 1, отправит форму и отключит главную страницу сайта например.
Кто-то откроет код сайта в браузере, заменит идентификатор ресурса на число 1, отправит форму и отключит главную страницу сайта например.
А как сделать что бы такого не случилось?
Хоть буду знать)
Хоть буду знать)
Тут нужно исходить из логики вашего приложения, понимать зачем вообще вы это делаете.
Возможно право снимать ресурс с публикации нужно давать не всем? А только определенным пользователям. Тогда нужно ограничить показ этой формы на фронтедне только если пользователь авторизован на сайте и это пользователь определенной группы — к примеру менеджер
Или по крайней мере делать проверку в файле snippet.php что это за ресурс с таким id. например проверять его шаблон и разрешать отключать только ресурсы с определенным шаблоном.
Возможно право снимать ресурс с публикации нужно давать не всем? А только определенным пользователям. Тогда нужно ограничить показ этой формы на фронтедне только если пользователь авторизован на сайте и это пользователь определенной группы — к примеру менеджер
Или по крайней мере делать проверку в файле 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.
Да я ограничил показ формы доступен только группе users и есть личный кабинет.
Можно ли сделать так, что бы только определённая группа могла снять с публикации.
Хорошо что сказали мне про это)
Можно ли сделать так, что бы только определённая группа могла снять с публикации.
Хорошо что сказали мне про это)
Я вижу тут два пути
— проверять к какой группе относиться user и показывать форму в шаблоне только при соблюдении условия, мол если пользователь в такой-то группе то покажем кнопку — снять с публикации
— или же в сниппете проверять какой пользователь сейчас авторизован в контексте web, какая у него группа и там уже решать.
Но раз вы пишите, что «Да я ограничил показ формы доступен только группе users» то значит вы пошли по первому пути и проблем быть не должно.
— проверять к какой группе относиться user и показывать форму в шаблоне только при соблюдении условия, мол если пользователь в такой-то группе то покажем кнопку — снять с публикации
— или же в сниппете проверять какой пользователь сейчас авторизован в контексте web, какая у него группа и там уже решать.
Но раз вы пишите, что «Да я ограничил показ формы доступен только группе users» то значит вы пошли по первому пути и проблем быть не должно.
И ещё стыдно даже спросить не разу не дела такое только вот сталкнулся(
А как указывается путь к снипету?
А как указывается путь к снипету?
<form action="путь до snippet.php" method="POST">
И последнее как подвязать кнопке всё это дело например ссылке <a href="">Удалить ресурс</a>
Сложно будет пояснить. С javascript вы тоже не знакомы?
Можно привязать это к ссылке, но зачем? в вашем случае это вызовет необходимость разбираться еще в куче технологий. Используйте вместо ссылки форму
Как прописывать путь тоже вопрос неоднозначный. Мой вам совет, чтобы сейчас не вникать в теорию относительных, абсолютных путей, разницы между url и uri просто расположите файл в корне сайта, а в форме вызывайте его
Тогда в форме в атрибуте action можете указать [[~6]] или {6|url} если используете синтаксис шаблонизатора fenom
Можно привязать это к ссылке, но зачем? в вашем случае это вызовет необходимость разбираться еще в куче технологий. Используйте вместо ссылки форму
<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
А как указать url для этого пункта?
require 'путь к файлу в корне сайта/index.php';
здесь url не подойдет.
Здесь нужен абсолютный путь внутри операционной системы, которая установлена на вашем сервере.
Вы можете узнать этот путь разными путями, но проще всего создайте в корне сайта файл path.php c содержимым
То что увидите это и есть абсолютный путь к корню вашего сайта
Здесь нужен абсолютный путь внутри операционной системы, которая установлена на вашем сервере.
Вы можете узнать этот путь разными путями, но проще всего создайте в корне сайта файл path.php c содержимым
<?php
echo $_SERVER['DOCUMENT_ROOT'];
и обратитесь к нему через браузер ваш сайт/path.phpТо что увидите это и есть абсолютный путь к корню вашего сайта
require 'то что увидели/index.php';
У вас есть скайп?
Я всё прописал всё сделал
при нажатии на кнопку пишет страница не найдена(
Я всё прописал всё сделал
при нажатии на кнопку пишет страница не найдена(
А куда идёт этот путь просто главной странице?
require 'то что увидели/index.php';
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.