Просмотр полной версии : Доступ к TV field
Господа, подскажите как реализовать?
есть структура страниц типа этой:
--level1.1 (menu)
|--level2.1 (TV-element [field=header,text,image])
|--level2.2 (TV-element [field=header,text,image])
|--level2.3 (TV-element [field=header,text,image])
Нужно сгенерить меню на первом уровне.
Но проблема в том что меню должно иметь картинки.
ОЧЕНЬ хорошо бы было чтобы картинку выбрать из ТВ поля.
Меню :
level2.1.FLEXIBLE_CONTENT(level2.1).field_image.
ТВ имеет вроде очень слабую возможность доступу извне и даже внутри проблема из контейнерами.
Ну вобщем можно нормально сделать в пейдж/ресоррсес добавить картинку и генерить меню но страниц много.
Кто что может подсказать ? Буду благодарен за ответы.
Pavel Antonov
07.06.2009, 17:54
Господа, подскажите как реализовать?
есть структура страниц типа этой:
--level1.1 (menu)
|--level2.1 (TV-element [field=header,text,image])
|--level2.2 (TV-element [field=header,text,image])
|--level2.3 (TV-element [field=header,text,image])
Нужно сгенерить меню на первом уровне.
Но проблема в том что меню должно иметь картинки.
ОЧЕНЬ хорошо бы было чтобы картинку выбрать из ТВ поля.
Меню :
level2.1.FLEXIBLE_CONTENT(level2.1).field_image.
ТВ имеет вроде очень слабую возможность доступу извне и даже внутри проблема из контейнерами.
Ну вобщем можно нормально сделать в пейдж/ресоррсес добавить картинку и генерить меню но страниц много.
Кто что может подсказать ? Буду благодарен за ответы.
Я бы рекомендовал крепить картинку к странице. Самый простой и эффективный метод.
Можно конечно добраться до полей с помощью kb_tv_cont_slide. Но ладно бы был лишний запрос на извлечение из базы поля и его разбор... Но судя по описанию расширения, еще и полный рутлайн будет строится для каждой страницы. С какой скоростью это будет работать, можете представить. :(
Рутлайн в любом случае кешируется, можно брать всё из кеша.
Сейчас есть около 1000 страниц, и вводить для каждой картинку мой напарник сильно бы не хотел))
потому просьба показать как это сделать на примере меню, если меню очень сложно то просто вывод картинок-ТВ из подстраниц. Пример можно глянуть тут (http://gerome.com.ua/parfums/man/hugo-boss/)
Спасибо.
Pavel Antonov
09.06.2009, 16:05
Рутлайн в любом случае кешируется, можно брать всё из кеша.
Если бы еще все пункты меню попадали в рутлайн...
не вариант.
Pavel Antonov
09.06.2009, 16:10
Сейчас есть около 1000 страниц, и вводить для каждой картинку мой напарник сильно бы не хотел))
потому просьба показать как это сделать на примере меню, если меню очень сложно то просто вывод картинок-ТВ из подстраниц. Пример можно глянуть тут (http://gerome.com.ua/parfums/man/hugo-boss/)
Спасибо.
Я бы сделал так... выбрал бы все элементы через CONTENT и отобразил стандартными средствами TV, только для меню сделал бы свой TV-шаблон со своим типом (по аналогии с type=print).
Я бы сделал так... выбрал бы все элементы через CONTENT и отобразил стандартными средствами TV, только для меню сделал бы свой TV-шаблон со своим типом (по аналогии с type=print).
Не сильно понимаю о чем речь, "выбрал бы все элементы через CONTENT"- это означает сделал слайс со все подстраниц на корневую через КБ_екст?
Дальше не понял, если можно то подробно. Можно со ссылками на ключевые вещи которые нужно знать.
вот вырезка из какого то моего TS. Надеюсь, смысл понятен.
1 = CONTENT
1 {
table = tt_content
select {
where="тип элемента и ПИД"
}
}
}
Pavel Antonov
20.06.2009, 16:06
Не сильно понимаю о чем речь, "выбрал бы все элементы через CONTENT"- это означает сделал слайс со все подстраниц на корневую через КБ_екст?
Дальше не понял, если можно то подробно. Можно со ссылками на ключевые вещи которые нужно знать.
Почитайте FTB (http://typo3.org/documentation/document-library/tutorials/doc_tut_ftb1/current/). Здесь есть про (http://typo3.org/documentation/document-library/tutorials/doc_tut_ftb1/1.0.1/view/1/3/#id3959447) то что такое тип в шаблона TV, на примере print version. Тип швблона означает что вы можете иметь несколько вариантов отображение одного и того же FCE: полная версия контента, отображение контента как строчка в меню и т.д.
Все это задается под-шаблонами основного шаблона, который может быть затем выбран при выводе FCE (в TS). Дополнительный тип шаблона TV создается через TSConfig, так как по умолчанию есть только один тип - "Print version".
вот вырезка из какого то моего TS. Надеюсь, смысл понятен.
1 = CONTENT
1 {
table = tt_content
select {
where="тип элемента и ПИД"
}
}
}
Так, только тип относился к типу вложенного шаблона TV. Потребуется написать свой renderObj где указать в вызове TV нужный childTemplate.
Читайте тут:
http://accio.lv/en/services/for-typo3-developers/articles/templavoila/adding-more-rendering-types/
lib.menu = CONTENT
lib.menu {
select {
pidInList = this
orderBy = sorting
}
table = tt_content
renderObj = USER
renderObj {
userFunc = tx_templavoila_pi1->main_record
ds = 2
to = 4
table = tt_content
}
подскажите какой же все таки должен быть ТС чтобы меню заработало.Исправте ошибки, если вобще это минамально по сути.
и еще как вывести весь контент с подстраниц типа слайд но в документации не нашел почему то.
Спасибо.
Sergey M Nikitin
08.08.2009, 10:13
http://forum.typo3.biz/showthread.php?t=7895
http://forum.typo3.biz/showthread.php?t=7895
а может использовать чтото подобное этому
* lib.members = CONTENT
* lib.members {
* select {
* pidInList = {$styles.content.loginform.pid}
* orderBy = tx_lglalv_mysorting,uid
* }
* table = fe_users
* renderObj = USER
* renderObj {
* userFunc = tx_templavoila_pi1->main_record
* ds = 2
* to = 4
* table = fe_users
* }
* }
function main_record($content, $conf) {
$this->initVars($conf);
// Make a copy of the data, do not spoil original!
$data = $this->cObj->data;
// setup ds/to
$data['tx_templavoila_ds'] = $conf['ds'];
$data['tx_templavoila_to'] = $conf['to'];
// prepare fake flexform
$values = array();
foreach ($data as $k => $v) {
// Make correct language identifiers here!
if ($GLOBALS['TSFE']->sys_language_isocode) {
$srcPointer = $data['tx_templavoila_ds'];
if (t3lib_div::testInt($srcPointer)) { // If integer, then its a record we will look up:
$DSrec = $GLOBALS['TSFE']->sys_page->checkRecord('tx_templavoila_datastructure', $srcPointer);
$DS = t3lib_div::xml2array($DSrec['dataprot']);
} else { // Otherwise expect it to be a file:
$file = t3lib_div::getFileAbsFileName($srcPointer);
if ($file && @is_file($file)) {
$DS = t3lib_div::xml2array(t3lib_div::getUrl($file));
}
}
if (is_array($DS)) {
$langChildren = $DS['meta']['langChildren'] ? 1 : 0;
$langDisabled = $DS['meta']['langDisable'] ? 1 : 0;
$lKey = (!$langDisabled && !$langChildren) ? 'l'.$GLOBALS['TSFE']->sys_language_isocode : 'lDEF';
$vKey = (!$langDisabled && $langChildren) ? 'v'.$GLOBALS['TSFE']->sys_language_isocode : 'vDEF';
}
else {
return $this->formatError('
Couldn\'t find a Data Structure set with uid/file='.$conf['ds'].'
Please put correct DS and TO into your TS setup first.');
}
}
else {
$lKey = 'lDEF'; $vKey = 'vDEF';
}
$values['data']['sDEF'][$lKey][$k][$vKey] = $v;
}
$ff = t3lib_div::makeInstance('t3lib_flexformtools');
$data['tx_templavoila_flex'] = $ff->flexArray2xml($values);
return $this->renderElement($data, $conf['table']);
}
это отсюда http://209.85.129.132/search?q=cache:n_CNw3WgzcMJ:https://svn.typo3.org/TYPO3v4/Extensions/templavoila/trunk/pi1/class.tx_templavoila_pi1.php+renderobj+templavoila +USER+to+ds&cd=2&hl=uk&ct=clnk&gl=ua&client=firefox-a
кажеться это стандартная функция в ТВ но как гласит коментарий она не задокументована.
на сколько я понял там можна задать ТО и ДС через которые можно прорендерить только часть полей которые мне нужны, а это ли не то что мне нужно?или я ошибаюсь
если обладателю ответа не влом-напишите плз. более менее работоспобный код ,ато я не потяну ковыряться в пхп.
Sergey M Nikitin
10.08.2009, 10:20
Скорей всего подойдет, мой пример делает то же самое только в очень упрощенном виде, у меня например скорей всего не будет работать поддержка многоязычности, кстати в последних версиях 5 mysql вроде бы есть поддержка парсинга xml (http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html) из поля, можно попробовать использовать это чтобы добраться до значения идентификатора записей к таблей tt_content.
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot