MODx Revo: Редактирование ресурса из фронтенда сайта
Добрый день, друзья! Представляю вам вторую часть видео по созданию доски объявлений на MODx REVO.
По-моему, я делаю успехи по крайней мере, на этот раз картинка получилась лучше. Вообще, мне очень понравилось это занятие, и я планирую записать еще как минимум одну серию видеороликов, о создании сайтов на MODx REVO. Если вам интересная эта тема, не забудьте подписаться на обновления блога.
Напомню, что в прошлый раз мы создали два новых сниппета, и настроили публикацию объявлений и загрузку файлов из фронтенда.
В этом ролике я расскажу, как создать сниппет, который позволит пользователям редактировать объявления на сайте, и что сделать, чтобы посетители могли изменять только свои ресурсы.
<?php if (isset($_GET['resId'])){ if ($doc=$modx->getObject('modResource',array('id'=>$_GET['resId']))){ $docarray=$doc->toArray(); $fields = explode(',',$scriptProperties['resource2formitfields']); $fields[] = 'id'; foreach ($fields as $field){ if ($doc->getFieldName($field) === null) { /* if field isnt defined, look for TV value */ $tvValue = $doc->getTVValue($field); if ($tvValue !== null) { $hook->setValue($field,$tvValue); } } else { /* otherwise get field value */ $hook->setValue($field,$docarray[$field]); } } } } return true;
[[!FormIt? &hooks=`formit2file,formit2resource,redirect` &preHooks=`resource2formit` &resource2formitfields=`parent,pagetitle,ваши-TV-параметры-через-запятую,content,createdby` &redirectTo=`2` &template=`2` &validate=`nospam:blank, pagetitle:required, content:required:stripTags`]]
<p>[[+fi.error.error_message]]</p> <form class="form" action="/edit.html&resId=[[+fi.id]]" method="post" enctype="multipart/form-data" > <input name="nospam:blank" type="hidden" /> <input name="resource_id" type="hidden" value="[[+fi.id]]" /> <input id="parent" name="parent" type="hidden" type="text" value="[[+fi.parent]]" /> <div> <label>Заголовок:</label> <span class="error">[[+fi.error.pagetitle]]</span> <input name="pagetitle" type="text" value="[[+fi.pagetitle]]" /> </div> <div> <label>Телефон:</label> <span class="error">[[+fi.error.phone]]</span> <input id="price" name="phone" type="text" value="[[+fi.phone]]" /> </div> <div> <label>Город:</label> <span class="error">[[+fi.error.city]]</span> <input id="price" name="city" type="text" value="[[+fi.city]]" /> </div> <div> <label>Текст объявления:</label> <span class="error">[[+fi.error.content]]</span> <textarea id="content" cols="55" rows="7" name="content">[[+fi.content]]</textarea> </div> <div> <div class="label">Фото</div> <br /> <span class="error">[[+fi.error.img]] <input id="file" name="img" type="file" value="[[+fi.img]]" maxlength="100000" /> </div> <br class="clear" /> <div class="form-buttons"> <input type="submit" value="Отправить на модерацию" />
[[!+fi.createdby:is=`[[!+modx.user.id]]`:then=`[[$form_edit]]`:else=`Вы не можете редактировать эту запись`]]
[[*createdby:is=`[[!+modx.user.id]]`:then=`<div class="edit">Редактировать</div>`]]
Надеюсь, информация будет вам полезна, если появятся вопросы, можно задать их в комментариях.