![]() |
Баг в обработке HTML шаблона (съедает теги) - решено
Такая вот история - работал сайт на TYPO-3 4.2, PHP 5.2.
После перехода на PHP 5.3 и апгрейда TYPO-3 к 4.3 через некоторое время случилось съедание TYPO-3 частей шаблона (местами ячеек таблиц, местами тегов ссылок, и некорректная замена параметров тегов, так в ссылке появляеться дополнительный параметр a="" и другое). Это без templavoila. Такую же свежую версию системы я поставил с templavoila, но когда делаю маппинг, шаблон (тот же) виглядит идентично съеденым. Тоесть я понимаю, та часть TYPO-3, которая анализирует код шаблона, работает некорректно в новой версии TYPO-3. Подскажите пожалуйста, как разрулить это. Спасибо |
Такое бывает при незакрытых тегах и прочих нарушениях валидности HTML-кода
|
Да, но с предыдущей версией тайпо и этим же шаблоном не было проблем. Кстати, код перепроверил - все корректно... Да, и с новой версией тайпо во многих местах выводиться пользователям тег <strong></strong> и прочее. Например в новостях tt_news. Хоть он там и есть, т. как скопирован откуда-то, но зачем его парсить в вывод вместо в код.. не пойму.
|
используется ли темплавойла?
если да - у меня решилась проблема обновлением расширения |
Нет, не TemplaVoila, что-то более общее
У меня используеться automaketemplate. Для теста установил чистый 4.3 с последним TemplaVoila и результат загрузки в TV етого же шаблона для маппинга оказался таким же (шаблон загружен, но код битый).
Кроме того, повсюду видно попытки закрыть мои теги, которые я открыл и даже закрыл. Там где я написал </form> показываеться </form</form>и так далее. |
да... без поллитра не понять.. ;)
ты бы кинул код той области шаблона - думаю проще было бы понять что и как вставляешь |
Вот код и сайт..
Я сделаю даже иначе )) посмотрите сайт, над которым я работаю - http://pressclub.lviv.ua/n
Кстати дело не в шаблоне, т.как он работал прежде, а когда менять код в одном месте, обязательно вылезет в другом. Сейчас дам оригинал теплейта, который искажаеться: Код:
<html> |
чтот у тебя явно не то
из шаблоновского Код:
<tr> получаешь Код:
<tr> как вариант могу предложить писать все теги lowercase, да и атрибуты тоже |
Да, явно не то, а если посмотреть на кнопки внизу то вообще )) Попробую сменить регистр, но странно все равно.
Может кто знает что за чудеса? |
Сменил регистр на маленькие названия и параметры тегов - не помогло. Спасите кто-нибудь ) Уже не знаю в чем дело
|
а про clearcache не забываем?
|
Нет )) Я уже давно работаю с Typo-3 ) Это на автомате.
|
Сегодня опять поставил TYPO3 4.4 с темплавоила уже не веря самому себе. Полностью чистая инсталляция, но когда даю мапить шаблон, снова вылезает код... Если у кого-то есть желание, напишите мне PM, я дам логин и пароль. Спрашивал уже всюду, но ничего не получаеться. Кстати режим совместимости оставил с 3.8 но все осталось как и было..
|
В шаблоне у вас с тегами полная "ж"..
К примеру: Код HTML:
<table width="100%" border="0" cellspacing="0" cellpadding="0"> или вот еще: Код HTML:
</td></tr></table> и еще куча, глаза сломать можно.. Хотите совет, заново отверстайте шаблон, и лучше всего в div'ах, а не таблицах и код проще читать будет и поисковики любят такой код и страничка быстрей грузиться будет |
Да, шаблон немножко ненаглядно разверстан, но врятли там есть такая пролемма, ибо:
Код:
<td width="250"> Что касается кода ниже Код:
</td></tr></table> Весь этот код, как бы ненаглядно был представлен, является валидным и использует табличную верстку из нескольких уровней вложенных таблиц. И все это работало до этого, кстати корректно отображаясь во всех браузерах. Кстати, как я замечал, в текстах страниц сайта, в новостях и т.д. повылезало тоже множество тегов, которые ранее были в коде, а тепер демонстрируются. Я, конечно, могу переделать шаблон в div-ах, но все равно останется проблема отображения кода в тексте страниц когда, скажем, человек-редактор копирует что-либо с другого сайта, с Майкрософт Ворд, и т.д. Как по мне, то выглядит очень аномально, что TYPO-3 искажает валидный код, который впрочем не вызывает каких либо замечаний со стороны стандартов.. Я даже готов изменить что-либо в коде TYPO-3 чтобы это поведение убрать, но пока не знаю что. |
хотелось бы увидеть где написано что код считается валидным, даже если после закрывающего тега </td> разместить тег отличный от открывающего <td> или закрывающего </tr> ?????
в инете есть сайты-валидаторы, доверяйте спец системам вместо того чтоб самим делать непонятные выводы |
3ton, здесь соглашусь, но даже после помещения недостающего тега
Код:
</tr> |
Вот исправленный шаблон, полностью провалидирован на W3C. На http://pressclub.lviv.ua/n
это выглядит еще хуже чем прежде.. Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
По моему шаблон по ссылке еще валидировать и валидировать.... ))))
|
DOCTYPE нормальный укажите
в форме поиска у вас опять не закрыты теги: Код HTML:
<td> А все видимые проблемы начинаются с Код HTML:
</td> href="/index.php?id=27"><img alt="3d-панорама залу" src="/fileadmin/shablon_sajtu/ima/3d.jpg" border="0" a td>/tr></a> Возможно это все последствия незакрытого </tr> тега и непонятной < между 2мя </td> тегами, что я привел выше. Опять же </td> тег закрывается, и начинается что-то не понятное, что должно было быть <a> тегом, но он скушался куда-то.. между </td></tr> и </td><td> не должно быть ничего. |
Все так, но в чем собственно дело - тот код шаблона, что я представил выше - есть тот шаблон, который оригинал, который я загружаю в Тайпо.
А то, что вы анализируете со скушаными тегами, незакрытой формой, и др. - да это делает система TYPO-3 из моего оригинального шаблона. Впрочем проблема в том, что TYPO-3 версии 4.2 так не делала с этим же шаблоном. P.S: По ссылке Вы видите некоректный результат парсинга того шаблона, что здесь представлен несколькими комментариями выше. После парсинга код основательно попорчен. P.P.S: А валидировал я оригинальный шаблон, конечно ни в коем случае не ту страничку, где Тайпо над ним поиздевался. |
попробуйте отключить все элементы, т.е чтобы вместо любого контента выводился текст, к примеру "TEST" и выложите сюда HTML код
|
Сделал, как Вы предлагали - Код сгенерированой страницы, вместо контента слово Test, он же доступен на http://pressclub.lviv.ua/n
Код:
<!DOCTYPE html |
Вы меня не правильно поняли, не вставлять текст как контент.. а заменить все элементы на какой-нибудь текст, и форму поиска и меню и вообще все. Должен остаться один каркас шаблона с текстом.. Это надо чтобы увидеть куда вы что вставляете, как вариант вы неправильно размапили шаблон или же один из модулей, что вы используете, выводит битый html код.
|
Я Вас, думаю, правильно понял, так как там больше не осталось модулей, кстати эта версия шаблона даже без TemplaVoila работает. Меню и все другое что там есть - прописано в самом шаблоне, а заполнено через typoscript (typoscript выводит слово Test). А дело в том, что нет закономерности вывода этого битого кода с модуля, так как там где возникают ошибки, ничего кроме собственно шаблона нет.
На мой примитивный взгляд, попросту парсер, который берет оригинал шаблона с какой либо причины имеет баг (плохо понимает код) и пытаеться его безуспешно анализировать. Что и приводит к тому, что нечто он стирает, а еще что-то дописывает (там местами где я закрыл тег, он закрывает его по второму разу) P.S: Если я дописываю что-то к шаблону или убираю, то код разлезается в других местах. Тоесть в коде шаблона проблем нет, я уверен. Проблемма именно в его анализе. Я даже думал заменить класс, который парсит html в тайпо на какую то старую версию, но еще не делал этого. |
Цитата:
Все что выводится через typoscript на TEXT замените, нужен каркас шаблона, без какого-либо вывода. Templavoila имеет свойство закрывать теги если они не закрыты и если где-то есть ошибка то каркас поможет понять где |
Но я же заменил все что выводиться на Test собственно. Попросту в шаблоне прописан некоторый статический контент, который вместе с шаблоном. Например меню есть в шаблоне, левое меню тоже есть в шаблоне. А динамически заполняеться только то, что я и заменил на Test.
И еще раз замечу, что в данной копии этого сайта (этого TYPO-3), или же в этом примере работаю без TemplaVoila. TemplaVoila я использовал только для теста, чтобы удостовериться в том, что даже TV не может понять мой шаблон. Еще я могу сделать, чтобы TYPO-3 вообще ничего ни в какой блок не выводил. Тогда блоки будут заняты только тестовым контентом из шаблона. Тоесть остануться меню и другое статически прописаное в шаблоне. |
Цитата:
Лучше просто замените все блоки что определяются в TypoScript на текст, и меню тоже, оно же у вас генерируется через TypoScript? |
Все так и сделано. И меню, еще раз говорю, прописано в шаблоне. Там больше ничего не генерируеться
Меню это imagemap сделанная в шаблоне, там все очень просто Не знаю как еще объяснить, но html-код меню есть hardcoded в html-код шаблона |
Цитата:
|
Этот шаблон я предоставил в сообщении #18. Он без маркеров, так как вставляеться по id с помощью automaketemplate, его я и отдаю Тайпо.
|
у вас в некоторых ячейках таблицы есть <p> теги, они открываются и не закрываются, и вы до сих пор не перевели все теги в нижний регистр
|
Спасибо. Я сделал иначе. Я взял этот шаблон, и перевел его полностью в <div> вид. Как он отображаеться - судите сами - http://pressclub.lviv.ua/test.html
Здесь прилагаю его код на всякий случай: Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/strict.dtd"> Код:
http://pressclub.lviv.ua/n Но, если люди как-то работают с TYPO-3 то вывод один - какая-то проблема у меня на сервере, не позволяющая TYPO-3 обработать шаблон. |
а если все же воспользуемся валидатором , то увидим следующее
Код:
line 92 column 3 - Предупреждение: discarding unexpected </div> в 99.99% проблема в кривизне рук, обижаться не стоит, эта проблема бывает и у профи |
Проблема решена
Всем спасибо, проблема решена. Итак, с шаблонами все было хорошо. Попросту проблема с конфигурацией mbstring заставила TYPO-3 плохо распознавать шаблон.
Теперь все работает. Если у кого-то возникнет такое - уже знаете где копать. P.S: Я шаблон не валидировал, тот что последний. Я соглашаюсь, что там есть некоторые недостатки, но много ли идеально валидных шаблонов? Так бы работал только каждый сотый сайт... Поэтому я и думал, что проблема в Тайпо, а оказалось - даже глубже - в PHP. |
а что именно?
А что именно не так было в настройках mbstring?
У меня аналогичная проблема - сутки не могу найти решения. Пример - с отключенным mbstring все работает нормально, все кодировки в норме, но когда появляется необходимость преобразования строк (substr, strlower и т.д.) появляются битые символы. Например слово http://сайт автоматически преобразовывается в ссылку, последние символы бьются. Если включить mbstring (настроен корректно - перепроверено раз 10, проверено на других скрипта), то Typo3 начинает вырезать куски текста из страницы, добавлять свои теги, например <link бла бла бла и так далее. В общем проблема такая же, но вот только решения найти никак не могу. |
Охх, давно это было, но попробую вспомнить. Итак, в mbstring часто не тот язык и не та кодировка. Должно быть:
Код:
mbstring.language = English |
Часовой пояс GMT +4, время: 15:47. |
Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot