Код сниппета:
<?php
function clearCache() {
global $modx;
$modx->clearCache();
include_once MODX_BASE_PATH . 'manager/processors/cache_sync.class.processor.php';
$sync = new synccache();
$sync->setCachepath(MODX_BASE_PATH . "assets/cache/");
$sync->setReport(false);
$sync->emptyCache();
}
function CreateNewFAQ(&$fields){ // Массив $fields будет содержать данные всех полей формы
global $modx;
// проверка на заполненность скрытого поля
if ($fields['descbot'] != "") {
echo ("Отправка запроса невозможна из-за автоматического заполнения полей формы<br />
Registration is not possible because of the automatic form filling");
return false;
}
// Создания документа с описанием.
require_once('assets/libs/document.class.inc.php');
$doc = new Document(); // создаем документ
$doc->Set('parent',$fields['category']); // определяем в какую папку положить
$doc->Set('template',9); // задаем шаблон
$doc->Set('hidemenu','1'); // устанавливаем поле скрыть из меню = 1
$doc->Set('published','0'); // устанавливаем поле публикации = 0
$doc->Set('pub_date', time());
$doc->Set('content',$fields['ask_question']);
// Далее пойдут параметры
$doc->Set('tvname',$fields['ask_name']);
$doc->Set('tvemail',$fields['ask_reply_email']);
/*
// множественные категории
if (!empty($fields['categories'])){
$categories_separated = implode("||", $fields['categories']);
$doc->Set('tvcategory',$categories_separated);
foreach($fields['categories'] as $value){
$result = $modx->getTemplateVarOutput(array('pagetitle'),$value);
$categoriesarr[] = $result['pagetitle'];
}
$categories_str = implode(", ", $categoriesarr);
}*/
$doc->Save(); // сохраняем
$idt = $doc->fields['id']; // получаем id докумета
$doc = new Document($idt); // редактируем документ
$doc->Set('pagetitle','FAQ#'.$idt);
$doc->Set('menuindex', $idt);
// составление URL
// menuindex папки, в которую вкладываем, например, 03
$resultParent = $modx->getTemplateVarOutput(array('menuindex','pagetitle'),$fields['category']);
// menuindex порядкового документа, например, 100.
$resultIndex = $modx->getAllChildren($fields['category'], 'menuindex','DESC', 'menuindex');
if (!empty($resultIndex)) {
$curremt_menuindex = $resultIndex[0]['menuindex'] + 1;
} else { $curremt_menuindex = 1; }
// результат ../03-100.html
$aliasUrl = str_pad($resultParent['menuindex'], 2, '0', STR_PAD_LEFT).'-'.str_pad($curremt_menuindex, 2, '0', STR_PAD_LEFT);
$doc->Set('menuindex', $curremt_menuindex);
$doc->Set('alias', $aliasUrl);
// Загрузка фотографий (мультизагрузка)
$photoes = array();
$counter=1;
foreach($_FILES as $file_row){
if ($file_row['name'] and $file_row['tmp_name']) {
$target_path = "assets/images/uploads/";
$name_path = basename($file_row['name']);
$path_parts = pathinfo($name_path);
$target_path = $target_path."faq".$idt."_pic".$counter.".". $path_parts['extension'];
$counter++;
if (move_uploaded_file($file_row['tmp_name'], $target_path)) {
$photoes[] = '["'.$target_path.'","","",""]';
$photoarr[] = $target_path;
}
}
}
// запись файлов
if(!empty($photoes)) {
$photoes_separated = implode(",", $photoes);
$doc->Set('tvphotos', '['.$photoes_separated.']');
}
$doc->Save(); // сохраняем
clearCache(); //очистка кэш
$body = $modx->getChunk('report_FaqAsk');
$table_fields = $fields;
$table_fields['categories_str'] = $resultParent['pagetitle'];
foreach($table_fields as $search_row=>$table_field_row) {
$search = '[+'.$search_row.'+]';
$replace = $table_field_row;
$body = str_replace($search, $replace, $body);
}
//////////////////////////////MAIL MODxMailer//////////////////////////////////
/////////////////////$emailsender = $modx->getConfig('emailsender');
$from = 'mail@mail.me';
$mailto = 'mail@mail.me';
$subject = $fields['subject'];
$replyto = $fields['ask_reply_email'];
include_once 'manager/includes/extenders/modxmailer.class.inc.php';
$modx->loadExtension('MODxMailer');
$modx->mail->IsHTML(true);
$modx->mail->From = $from;
$modx->mail->FromName = 'MAMAplastic';
$modx->mail->Subject = $subject;
$modx->mail->Body = $body;
$modx->mail->AddAddress($mailto);
if(!empty($photoarr)) {
foreach ($photoarr as $photorow) {
$contentType = "application/octetstream";
$pertfile = explode('/', $photorow);
$numFile = count($pertfile) - 1;
$FileName = $pertfile[$numFile] ;
$modx->mail->AddAttachment($photorow,$FileName,"base64",$contentType);
}
}
///////////////////////////SEND&&REPORT///////////////////////////////
$modx->mail->send();
}
?>
</pre>
Код вызова сниппета и вызов eForm:
[!FaqAsk!][!eForm? &formid=`wf-form-Add-review` &tpl=`tpl_FaqAskNew` &requiredClass=`required` &report=`` &vericode=`0` &noemail=`1` &protectSubmit=`1` &eFormOnBeforeMailSent=`CreateNewFAQ` &thankyou=`thanks_FaqAsk`!]
Все срабатывает и на почту письмо приходит и ресурс создается, в ресурс вставляются имя [+ask_name+], почта [+ask_reply_email+], а поле [+content+] не вставляется
Dmitry Barinovsky 11.09.2018 18:13 #
так: $doc->Set('content’,’I love bitcoin '.$fields['ask_question']);
Если оно есть то надо еще проверить бы чтоже всетаки в этой строке выполняется наприме
р
или если его нет то надо добавить или поменять название)