Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Дополнительные поля при быстром редактировании в DLE

Дополнительные поля при быстром редактировании в DLE


     26.11.2011    дополнительные поля, быстрое редактирование    Все вопросы » Общие вопросы    5245

вопрос
Подскажите, как вывести некоторые доп.поля при быстром редактировании.

Версия ДЛЕ 7.5, очень многое подогнано под себя, много модулей и пр., поэтому не обновляюсь... При этом кровь из носу, как нужно вывести некоторые из доп. полей при быстром редактировании.

В форме добавления поста я настроила вывод вместо {xfields} именно тех полей, которые нужны. Теперь пытаюсь проделать то же самое при редактировании.

Заранее огромное спасибо!

Ответил: ПафНутиЙ


Как вариант попробуйте ручками добавить функционал от 9.4
сделать нужно примерно так:

  1. Ищем запрос:
    $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

  2. Находим:
    $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('"', '&quot;', $fieldvalue);
                $fieldvalue = str_replace('&amp;', '&', $fieldvalue);

                $xfbuffer .= "<div style=\"padding-top:5px;\">{$value[1]}:&nbsp;<input type=\"text\" name=\"xfield[{$fieldname}]\" id=\"xfield[{$fieldname}]\" value=\"{$fieldvalue}\" style=\"width:250px;\" /></div>";

            } elseif ($value[3] == "select") {

                $fieldvalue = str_replace('&amp;', '&', $fieldvalue);
                $fieldvalue = str_replace('&quot;', '"', $fieldvalue);

                $xfbuffer .= "<div style=\"padding-top:5px;\">{$value[1]}:&nbsp;<select name=\"xfield[{$fieldname}]\">";

                foreach (explode("\r\n", $value[4]) as $index => $value) {
                  $value = str_replace("'", "&#039;", $value);
                  $xfbuffer .= "<option value=\"$index\"" . ($fieldvalue == $value ? " selected" : "") . ">$value</option>\r\n";
                }

                $xfbuffer .= "</select></div>";
            }
        
        }



  3. Находим:
    $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');


  4. Находим ДВА РАЗА:
    '$news_update',

    И сразу после (в одну строчку) вставляем в обоих местах:
    xfields='$filecontents',



В целом не уверен будет ли работать (проверить негде), но функционал мы таким образом перенесли.

4 комментария

Lady
Юзер

Lady - 27 ноября 2011 04:11 -

Эх... what Ну хотя бы скажите, возможно ли это сделать? Точнее, доступно ли это не специалисту в программировании? Или все настолько сложно, что лучше и не пытаться?

Lady
Юзер

Lady - 27 ноября 2011 16:35 -

ПафНутиЙ, большое вам спасибо за то, что ответили. В этом примере не хватает только добавить переменную (или как правильно она называется) {$xfbuffer} возле textarea. Я так уже пробовала, и все равно работает некорректно... Т.е. при редактировании доп.поле появляется, но при внесении в него изменений и сохранении новости через быстрое редактирование, оно сбрасывается. Может нужно сам файл xfields.php редактировать?

ПафНутиЙ
Админ

ПафНутиЙ - 27 ноября 2011 16:46 -

Подождите кого нибудь из программистов, может помогут как появятся.

Каков вопрос - таков и ответ. Просто помните об этом.

Lady
Юзер

Lady - 27 ноября 2011 18:19 -

ПафНутиЙ, спасибо, буду ждать)

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх