Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Странности Templavoila!? (http://forum.typo3.ru/showthread.php?t=9229)

Илья 03.02.2011 23:38

Странности 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 код самого шаблона, который мепите
может там, к примеру, тег не закрыт

Илья 04.02.2011 22:06

Цитата:

нет, подчиненные TO это, например, для версий для печати
То есть, для разного дизайна одной страницы правильнее все таки делать 2 TO на одном уровне?
А если дизайн (верстка html) различается - то наверное надо в разные DS разносить?

В итоге удалось добиться нормального вывода контента в FE, возможно проблема действительно связана с неправильной версткой (незакрытые теги). Просто внес изменения в работающий html и пересохранил.

Valery Romanchev 04.02.2011 23:37

Цитата:

Сообщение от Илья (Сообщение 30128)
То есть, для разного дизайна одной страницы правильнее все таки делать 2 TO на одном уровне?

да
Цитата:

Сообщение от Илья (Сообщение 30128)
А если дизайн (верстка html) различается - то наверное надо в разные DS разносить?

зависит от того, различается ли структура
Например, 2х колоночный и 3х колоночный шаблон - это явно разные DS должны быть.
А если пара 3х колоночных, которые заличаются шириной колонок - то они могут быть и к одному DS привязаны.

Илья 04.02.2011 23:46

Цитата:

Сообщение от Valery Romanchev (Сообщение 30130)
да
Например, 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 тег только в нужном шаблоне

Илья 06.02.2011 02:33

Цитата:

Сообщение от Valery Romanchev (Сообщение 30137)
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/snippe...h-awstats.html

там echo нет, вывод - переменная $content

Илья 07.02.2011 05:11

Извините за назойливость, но куда попадет эта переменная $content, которую возвращает скрипт? Думаю, что сразу оперировать ей в html (куда вставляем скрипт) или в TS нельзя. Или как-то можно?

takitak 07.02.2011 10:25

$content = '<img "src="'.$image.'/>';

попадает в lib.switchpic

Возможно вам нужен PHP_SCRIPT_EXT - какой смысл скрипта?

Илья 07.02.2011 10:44

Цитата:

Возможно вам нужен PHP_SCRIPT_EXT - какой смысл скрипта?
Может быть и нужен, но судя по описанию в TSRef - нет.
Скрипт передает путь до картинки-бекграунда в html, как вы правильно заметили сюда: <img "src="'.$image.'/>
при каждом обновлении страницы берется новая картинка (случайно)...

Цитата:

$content = '<img "src="'.$image.'/>';
Вы предлагаете объединить мой и этот скрипт (по ссылке) или $content это какая-то зарезервированная переменная?

takitak 07.02.2011 23:13

Да. ее надо использовать вместо echo.

Илья 07.02.2011 23:45

Цитата:

Сообщение от takitak (Сообщение 30153)
Да. ее надо использовать вместо 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.

Илья 08.02.2011 15:06

Учится - всегда пригодится. Факт.
Но вот почему пустой php скрипт с тестовой заглушкой (PHP_SCRIPT!), подключенный в TV как описано выше генерирует в html не то, что хочется...
пример:<img src="fileadmin/templates/PHP_SCRIPT!">
И такая добавка в виде бесплатного довеска - fileadmin/templates/ добавляется ко всему, что выдает скрипт.
Подозреваю, что это настраивается через TS.
Из похожего в TSref нашел это: absRefPrefix, но я его не устанавливал...
Как удалить этот префикс?

-=UncleByte=- 08.02.2011 16:02

Скорее это путь к файлам шаблона по умолчанию в TV. Поэтому копать надо где-то там.

Илья 08.02.2011 16:36

Спасибо, только знать бы где там копать... :(
Нашел пару старых тем в листах рассылки насчет 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
        }
}


Илья 09.02.2011 04:57

Я рано стал радоваться... Почему то вставка через $content кеширует картинку для bg, и она так и остается неизменной, более того, даже при удалении этой картинки из папки в html все равно вписывается ее название... Нашел в TSref это: $GLOBALS["TSFE"]->set_no_cache(); но почему то и это не срабатывает
PS set_no_cache(); Вставлял в сам php скрипт.

Немного подумав, пошел на нужную страницу в BE и нажал галку "cache disable" и все чудестным образом заработало нормально.
Так что решение было на поверхности! :)

takitak 09.02.2011 13:40

а может все-таки php_script_ext? Чтобы без кеша был только вывод скрипта, а страница - кешировалась?

Илья 09.02.2011 13:43

Может быть, но я предпочту оставить как есть, как в старом анекдоте про программиста, сидящего глубоко в отладке :)
Тем более, что кроме картинки фона там только название сайта :)
Спасибо за помощь!


Часовой пояс GMT +4, время: 12:20.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot