вопрос
Подскажите, как вывести некоторые доп.поля при быстром редактировании.
Версия ДЛЕ 7.5, очень многое подогнано под себя, много модулей и пр., поэтому не обновляюсь... При этом кровь из носу, как нужно вывести некоторые из доп. полей при быстром редактировании.
В форме добавления поста я настроила вывод вместо {xfields} именно тех полей, которые нужны. Теперь пытаюсь проделать то же самое при редактировании.
Заранее огромное спасибо!
Версия ДЛЕ 7.5, очень многое подогнано под себя, много модулей и пр., поэтому не обновляюсь... При этом кровь из носу, как нужно вывести некоторые из доп. полей при быстром редактировании.
В форме добавления поста я настроила вывод вместо {xfields} именно тех полей, которые нужны. Теперь пытаюсь проделать то же самое при редактировании.
Заранее огромное спасибо!
Как вариант попробуйте ручками добавить функционал от 9.4
сделать нужно примерно так:
В целом не уверен будет ли работать (проверить негде), но функционал мы таким образом перенесли.
сделать нужно примерно так:
- Ищем запрос:
$row = $db->super_query("SELECT id, title, category, short_story, full_story, autor, allow_br, reason FROM " . PREFIX . "_post where id = '$id'");
Их два почти похожих, нам нужен первый.
Меняем его на:$row = $db->super_query( "SELECT id, title, category, short_story, full_story, xfields, autor, allow_br, reason FROM " . PREFIX . "_post where id = '$id'" );
Т.е. мы добавили xfields - Находим:
$row['title'] = $parse->decodeBBCodes($row['title'], false);
Ниже добавляем:$xfields = xfieldsload();
$xfieldsdata = xfieldsdataload ($row['xfields']);
$xfbuffer = "";
foreach ($xfields as $name => $value) {
$fieldname = $value[0];
if ( $xfieldsdata[$value[0]] ) $fieldvalue = $xfieldsdata[$value[0]]; else continue;
if( $row['allow_br'] AND !$config['allow_quick_wysiwyg'] ) {
$fieldvalue = $parse->decodeBBCodes( $fieldvalue, false );
} else {
if( $config['allow_quick_wysiwyg'] ) $fieldvalue = $parse->decodeBBCodes( $fieldvalue, true, "yes" );
else $fieldvalue = $parse->decodeBBCodes( $fieldvalue, true, "no" );
}
if ($value[3] == "textarea") {
if ( !$config['allow_quick_wysiwyg'] ) $params = "onclick=\"setNewField(this.id, document.ajaxnews{$id})\" "; else $params = "class=\"mceEditor\" ";
$xfbuffer .= "<div style=\"padding-top:5px;\">{$value[1]}:<br /><!--panel--><textarea name=\"xfield[{$fieldname}]\" id=\"xf_$fieldname\" style=\"width:98%; height:90px; border:1px solid #E0E0E0;margin: 0px 1px 0px 0px;padding: 0px;\" {$params}>{$fieldvalue}</textarea></div>";
} elseif ($value[3] == "text") {
$fieldvalue = str_replace('"', '"', $fieldvalue);
$fieldvalue = str_replace('&', '&', $fieldvalue);
$xfbuffer .= "<div style=\"padding-top:5px;\">{$value[1]}: <input type=\"text\" name=\"xfield[{$fieldname}]\" id=\"xfield[{$fieldname}]\" value=\"{$fieldvalue}\" style=\"width:250px;\" /></div>";
} elseif ($value[3] == "select") {
$fieldvalue = str_replace('&', '&', $fieldvalue);
$fieldvalue = str_replace('"', '"', $fieldvalue);
$xfbuffer .= "<div style=\"padding-top:5px;\">{$value[1]}: <select name=\"xfield[{$fieldname}]\">";
foreach (explode("\r\n", $value[4]) as $index => $value) {
$value = str_replace("'", "'", $value);
$xfbuffer .= "<option value=\"$index\"" . ($fieldvalue == $value ? " selected" : "") . ">$value</option>\r\n";
}
$xfbuffer .= "</select></div>";
}
} - Находим:
$news_txt = $parse->BB_Parse($parse->process(addslashes(convert_unicode($_POST['news_txt'], $config['charset']))), $use_html);
Ниже вставляем:if( $config['safe_xfield'] ) {
$parse->ParseFilter();
$parse->safe_mode = true;
}
$xfieldsaction = "init";
include (ENGINE_DIR . '/inc/xfields.php'); - Находим ДВА РАЗА:
'$news_update',
И сразу после (в одну строчку) вставляем в обоих местах:xfields='$filecontents',
В целом не уверен будет ли работать (проверить негде), но функционал мы таким образом перенесли.