Разделы
Каталог модулей
Вход на сайт
Последние сообщения на форуме
Последние комментарии
3 часа назад - frykt 9 часов назад - vladimir 11 часов назад - an1313 13 часов назад - Evg 17 часов назад - Rusiant 17 часов назад - Atreides 19 часов назад - agvan 20 часов назад - Kot 20 часов назад - Kot Опрос
Топ-новости
Другие сайты о ДЛЕ
Архив сайта
Ноябрь 2008 (23)
Октябрь 2008 (39) Сентябрь 2008 (41) Август 2008 (41) Июль 2008 (42) Июнь 2008 (38) Май 2008 (78) Апрель 2008 (85) Март 2008 (71) Февраль 2008 (46) Январь 2008 (37) Декабрь 2007 (37) Ноябрь 2007 (40) Октябрь 2007 (18) Сентябрь 2007 (7) Август 2007 (13) Июль 2007 (13) Июнь 2007 (16) Май 2007 (17) Апрель 2007 (21) Март 2007 (19) Февраль 2007 (6) Январь 2007 (6) Декабрь 2006 (10) Ноябрь 2006 (2) Какие-то ссылки
|
Украинский сайт поддержки новостной системы управления сайтом CMS Datalife Engine ( DLE ) » Хаки » Баги с отображением xfield в div'ах
Баги с отображением xfield в div'ахХаки
По просьбам трудящихся, публикуеться как пофиксить баги с отображением xfield в div'ах.
1) Допустим мы сверстали всё в дивах, и у нас поползли доп. поля. Идём и открываем файл /engine/inc/userfields.php. Там можно увидеть такой вот код: Код <tr> <td>$value[1]:</td> <td class="xprofile" colspan="2"><textarea name="xfield[$fieldname]" id="xf_$fieldname"{$readonly}>$fieldvalue</textarea></td></tr> HTML; } elseif ($value[3] == "text") { $output .= <<<HTML <tr> <td>$value[1]:</td> <td class="xprofile" colspan="2"><input type="text" name="xfield[$fieldname]" id="xfield[$fieldname]" value="$fieldvalue"{$readonly} /></td> </tr> Этот код отвечает за вывод доп.полей. Как видим, сделан он под абличную вёрстку, и даже нет здесь открытого тэга <table> , т.е. идёт слёту код. Это не хорошо, поэтому в дивах всё и ползёт. Заменяем Весь этот кошмар на код:Код <label for="xf_$fieldname">$value[1]:</label><br /> <textarea name="xfield[$fieldname]" id="xf_$fieldname"{$readonly}>$fieldvalue</textarea><br /><br /> HTML; } elseif ($value[3] == "text") { $output .= <<<HTML <label for="xf_$fieldname">$value[1]:</label><br /> <input type="text" name="xfield[$fieldname]" id="xfield[$fieldname]" value="$fieldvalue"{$readonly} /><br /><br /> Я заменял на такой, т.к. юзаю <fieldset> для написания форм. Ну, думаю, человек, знающий html сам под себя всё это дело поправит... Короче разобрались с полями с профиле пользователя. Идём дальше.2) Открываем /engine/inc/xfields.php. Там ищем вот такой страшный и длинный код: Код <tr id="$holderid"> <td class=addnews>$value[1]:<br />[if-optional]({$lang['xf_not_notig']})[/if-optional]</td> <td class=xfields colspan="2"><textarea name="xfield[$fieldname]" id="xf_$fieldname">$fieldvalue</textarea></td></tr> HTML; } elseif ($value[3] == "text") { $output .= <<<HTML <tr id="$holderid"> <td class=addnews>$value[1]:</td> <td class=xfields colspan="2"><input type="text" name="xfield[$fieldname]" id="xfield[$fieldname]" value="$fieldvalue" /> [if-optional]<font style="font-size:7pt">({$lang['xf_not_notig']})</font>[/if-optional] </tr> HTML; } elseif ($value[3] == "select") { $output .= <<<HTML <tr id="$holderid"> <td class=addnews>$value[1]:</td> <td class=xfields colspan="2"><select name="xfield[$fieldname]"> HTML; foreach (explode("\r\n", $value[4]) as $index => $value) { $output .= "<option value=\"$index\"" . ($fieldvalue == $value ? " selected" : "") . ">$value</option>\r\n"; } $output .= <<<HTML </td> </tr> HTML; Почему именно такой страшный читаем ниже. Итак, снова мы видим элементы таблиц, причем таблиц опять же не открытых. Это дело нам надо исправлять. Берем и заменяем всё это дело на: Код <label for="xf_$fieldname">$value[1] [if-optional]({$lang['xf_not_notig']})[/if-optional]:</label><br /> <textarea name="xfield[$fieldname]" id="xf_$fieldname">$fieldvalue</textarea><br /><br /> HTML; } elseif ($value[3] == "text") { $output .= <<<HTML <label for="xf_$fieldname">$value[1] [if-optional]({$lang['xf_not_notig']})[/if-optional]:</label><br /> <input type="text" name="xfield[$fieldname]" id="xfield[$fieldname]" value="$fieldvalue" /><br /><br /> HTML; } elseif ($value[3] == "select") { $output .= <<<HTML <label for="xf_$fieldname">$value[1]:</label><br /> <select name="xfield[$fieldname]"> HTML; foreach (explode("\r\n", $value[4]) as $index => $value) { $output .= "<option value=\"$index\"" . ($fieldvalue == $value ? " selected" : "") . ">$value</option>\r\n"; } $output .= <<<HTML HTML; Я опять использовал <fieldset> , сами настроете по своему вкусу поля... Идём в добавление новости и смотрим, всё вроде как на месте, но уползает дополнительное поле <select> , оно перекрывает нижележащий div и label. А вот сейчас нужно поистине отблагодарить г-на Целсофта за то, что он забыл закрыть тэг <select> . Чуть ниже вышеприведенного кода ищем:Код $output .= <<<HTML <script type="text/javascript"> <!-- var item = null; if (document.getElementById) { item = document.getElementById("category"); } else if (document.all) { item = document.all["category"]; } else if (document.layers) { item = document.layers["category"]; } if (item) { onCategoryChange(item.value); } // --> </script> и в самый конец вставляем закрывающий тэг: Код $output .= <<<HTML <script type="text/javascript"> <!-- var item = null; if (document.getElementById) { item = document.getElementById("category"); } else if (document.all) { item = document.all["category"]; } else if (document.layers) { item = document.layers["category"]; } if (item) { onCategoryChange(item.value); } // --> </script> </select> Раньше его вставить нельзя, т.к. этим скриптом формируется выпадающий список. Теперь идём ещё раз на страницу добавления новости и любуемся ровными доп. полями. Автор: CSR
Информация
![]() Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости. |
||||||||||||||||||||