Просмотр полной версии : Странности Templavoila!?
Привет.
Уже весь мозг себе сломал, но не могу добится элементарной вещи.
Есть одна DS внутри нее две TO с немного разными html шаблонами (друг в друга не вложены). Хочу сделать возможность выбора дизайна страницы из BE.
Все размечено, ошибок нет.
Проблема в том, что один шаблон TO работает нормально (в FE страница показывается нормально), а вот второй УПОРНО не хочет показывать содержимое в FE. Причем сам html шаблон подключается (видно по скриптам внутри <head>, а вот внутри <body> </body> пусто.
Пробовал уже по-моему все:
вкладывал проблемный TO в работающий,
делал отдельную DS и внутри нее отдельный TO (почему это не заработало вообще большой вопрос! - все делал с нуля),
Играл с мепингом (убирал вообще все, включая root из ТО, и подключал в header'e тег body из html)
Не до конца понимаю надо ли вкладывать TO одну в другую в моем случае (наверное нет!), но не работает вообще никак.
Появилась мысль сделать все НА ОДНОЙ TO, заменяя подключаемый css через меппинг (выпадающее меню - меняющее attribute) - получится так? Хотя это не совсем то, что надо (к одному дизайну надо подключать php скрипт и соответственно в html надо его вывод добавлять)
Не дайте разрушить мозг в цвете лет.
PS DS пока не выкладываю, думаю проблема носит системный характер в недопонимании идеологии :(
Valery Romanchev
04.02.2011, 13:42
Не до конца понимаю надо ли вкладывать TO одну в другую в моем случае нет, подчиненные TO это, например, для версий для печати
Проблема в том, что один шаблон TO работает нормально (в FE страница показывается нормально), а вот второй УПОРНО не хочет показывать содержимое в FE.проверьте, валидный ли HTML код самого шаблона, который мепите
может там, к примеру, тег не закрыт
нет, подчиненные TO это, например, для версий для печати
То есть, для разного дизайна одной страницы правильнее все таки делать 2 TO на одном уровне?
А если дизайн (верстка html) различается - то наверное надо в разные DS разносить?
В итоге удалось добиться нормального вывода контента в FE, возможно проблема действительно связана с неправильной версткой (незакрытые теги). Просто внес изменения в работающий html и пересохранил.
Valery Romanchev
04.02.2011, 23:37
То есть, для разного дизайна одной страницы правильнее все таки делать 2 TO на одном уровне?
да
А если дизайн (верстка html) различается - то наверное надо в разные DS разносить?
зависит от того, различается ли структура
Например, 2х колоночный и 3х колоночный шаблон - это явно разные DS должны быть.
А если пара 3х колоночных, которые заличаются шириной колонок - то они могут быть и к одному DS привязаны.
да
Например, 2х колоночный и 3х колоночный шаблон - это явно разные DS должны быть.
Хммм, а я запихнул 2-х колоночный TO как потомок 3-х, все в одном DS и работает. Хотя это наверное скорее изврат, чем норма.
Спасибо за консультацию.
Можно еще уточнить про разные DS/TO. Мне надо к одному из дизайнов (TO) включить дополнительный php скрипт, остальный TO (ну или DS) должны быть без этого скрипта. Вопрос как это проще сделать? Можно ли включать PHP_SCRIPT прямо внутрь TV шаблона? Попробовал подключить к html файлы шаблона, так TV это не пропустила (вернее не дала добавить это). Или придется городить огород с TS и условиями (если такое получится)...
Valery Romanchev
05.02.2011, 13:18
Можно еще уточнить про разные DS/TO. Мне надо к одному из дизайнов (TO) включить дополнительный php скрипт, остальный TO (ну или DS) должны быть без этого скрипта. Вопрос как это проще сделать? Можно ли включать PHP_SCRIPT прямо внутрь TV шаблона? Попробовал подключить к html файлы шаблона, так TV это не пропустила (вернее не дала добавить это). Или придется городить огород с TS и условиями (если такое получится)...
можно так сделать:
в TS создаете
lib.sto-to-takoe = PHP_SCRIPT
добавляеете поле "TS код" в DS
а потом этот lib.sto-to-takoe мепите на нужный div или другой html тег только в нужном шаблоне
lib.sto-to-takoe = PHP_SCRIPT
добавляеете поле "TS код" в DS
Именно так и пробовал, но почему то не заработало...
Проверив все еще раз имею следующее:
TV - mapping switchpic на div
TS
lib.switchpic = PHP_SCRIPT
lib.switchpic.file = fileadmin/templates/scripts/switch.inc
switch.inc
...
echo "-NOT DIR !!!-";
...
$image = ...
Так вот в этом случае на странице в FE вижу -NOT DIR !!!-, причем сверху всего, а не внутри моего div'a. И вижу только есть делать mapping как INNER, иначе (OUTER) - в итоговый html из скрипта не попадает ничего.
В идеале хочется получить из php переменную $image и запихнуть ее в html шаблон так:
<img "src="<?php echo $image; ?>"
Насколько понимаю - для этого придется передавать через $content?
Хотя мне проще было бы вывести результат работы скрипта напрямую в НУЖНУЮ ЧАСТЬ html'a (через mapping в TV), если это вообще возможно сделать?..
Valery Romanchev
06.02.2011, 16:12
посмотрите пример использования PHP_SCRIPT
http://www.typo3wizard.com/en/snippets/general-config/count-file-downloads-with-awstats.html
там echo нет, вывод - переменная $content
Извините за назойливость, но куда попадет эта переменная $content, которую возвращает скрипт? Думаю, что сразу оперировать ей в html (куда вставляем скрипт) или в TS нельзя. Или как-то можно?
$content = '<img "src="'.$image.'/>';
попадает в lib.switchpic
Возможно вам нужен PHP_SCRIPT_EXT - какой смысл скрипта?
Возможно вам нужен PHP_SCRIPT_EXT - какой смысл скрипта?
Может быть и нужен, но судя по описанию в TSRef - нет.
Скрипт передает путь до картинки-бекграунда в html, как вы правильно заметили сюда: <img "src="'.$image.'/>
при каждом обновлении страницы берется новая картинка (случайно)...
$content = '<img "src="'.$image.'/>';
Вы предлагаете объединить мой и этот скрипт (по ссылке) или $content это какая-то зарезервированная переменная?
Да. ее надо использовать вместо echo.
Да. ее надо использовать вместо echo.
Спасибо. Все равно туплю.
Сначала в php сделать так:
$content = $image;
потом в html так:
<img src="<div id="phpscript"></div>" alt="" border="0" class="background"/>
и оно таки туда вставляется!
Осталось понять "Как это работает" (с).
Просто для себя, хочу разобраться... Или курить TSRef?
-=UncleByte=-
08.02.2011, 10:10
Именно TSRef + очень внимательно читать демо-исходники указанные в TSRef и поставляющиеся вместе с typo3.
Учится - всегда пригодится. Факт.
Но вот почему пустой php скрипт с тестовой заглушкой (PHP_SCRIPT!), подключенный в TV как описано выше генерирует в html не то, что хочется...
пример:<img src="fileadmin/templates/PHP_SCRIPT!">
И такая добавка в виде бесплатного довеска - fileadmin/templates/ добавляется ко всему, что выдает скрипт.
Подозреваю, что это настраивается через TS.
Из похожего в TSref нашел это: absRefPrefix, но я его не устанавливал...
Как удалить этот префикс?
-=UncleByte=-
08.02.2011, 16:02
Скорее это путь к файлам шаблона по умолчанию в TV. Поэтому копать надо где-то там.
Спасибо, только знать бы где там копать... :(
Нашел пару старых тем в листах рассылки насчет rewrite link path, но ответа не увидел.
В результате переместил папку туда, куда указывает TV :) и немного поменял свой скрипт.
Заработало, но осадочек остался...
-=UncleByte=-
08.02.2011, 18:36
Просто я никогда не пользовался мастером создания шаблона в TV и не знаю как оно работает. Я все по старому-старому мануалу вручную делаю даже в TV.
Ну и скрипты подключаю когда надо исключительно по примерам в TSRef:
includeLibs.user_clearKeywords = fileadmin/tmpl/clearKeywords.inc
...
lib.kwrd = TEXT
lib.kwrd {
data = page:keywords
ifEmpty {
data = page:title // field:subtitle // field:header
case = lower
preUserFunc = user_clearKeywords
}
}
Я рано стал радоваться... Почему то вставка через $content кеширует картинку для bg, и она так и остается неизменной, более того, даже при удалении этой картинки из папки в html все равно вписывается ее название... Нашел в TSref это: $GLOBALS["TSFE"]->set_no_cache(); но почему то и это не срабатывает
PS set_no_cache(); Вставлял в сам php скрипт.
Немного подумав, пошел на нужную страницу в BE и нажал галку "cache disable" и все чудестным образом заработало нормально.
Так что решение было на поверхности! :)
а может все-таки php_script_ext? Чтобы без кеша был только вывод скрипта, а страница - кешировалась?
Может быть, но я предпочту оставить как есть, как в старом анекдоте про программиста, сидящего глубоко в отладке :)
Тем более, что кроме картинки фона там только название сайта :)
Спасибо за помощь!
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot