Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
25.07.2006, 12:49 | #1 |
Senior Member
|
TV, Link field
Если создавать в TV элемент контента, то потом через TypoScript Object path можно на него сослаться - как содержимое таблицы tt_content...
А я хочу сделать подобное но с элементом Link Field, чтобы не прописывать его на каждой странице... к какой таблице обратиться? --- И еще один вопрос. Или скорее замечание. Я задаю на корневой странице шаблон для подстраниц сайта. Все четко, а потом после добаления новой подстраницы захожу через модуль Web-TV-Page и там где должны отображаться элементы контента - их нет)) только после установки новой подстраницы непосредственно нужного шаблона, эти элементы виднЫ))
__________________
Персональный блог про заработок в интернете + полезных блога про typo3 и wordpress |
25.07.2006, 15:52 | #2 | ||
Продвинутый
|
ошибка в темплаволе
Цитата:
Вот правильный код Цитата:
Последний раз редактировалось Дмитрий Самойлов; 25.07.2006 в 15:54 |
||
27.07.2006, 13:16 | #3 |
Senior Member
|
код выше содержит парочку лишних пробелов где-то в строках 264, 301, 305... типо3 матюкается по поводу этих вещей, нужно поисправлять... а так решение работает. Спасибо))
----- PS.Если бы еще кто-то прошарил тему по поводу Link fields)
__________________
Персональный блог про заработок в интернете + полезных блога про typo3 и wordpress Последний раз редактировалось Tod; 27.07.2006 в 13:20 |
27.07.2006, 23:45 | #4 | |
Senior Member
|
Цитата:
Если нужно сделать ссылку в TV я делаю обычно так: Допустим нужна ссылка на корень сайта. 1) В TV мепится переменная TS (lib.homelink) на аттрибут href нужного тэга <a> 2) В TS: Код:
lib.homelink = TEXT lib.homelink.typolink { parameter.data = leveluid: 0 returnLast = url } |
|
28.07.2006, 00:52 | #5 |
Senior Member
|
Есть в TV такой тип элемента (Editing Type) как Link field. Так вот допустим на какой-то странице я использую шаблон с таким вот элементом, задаю там ссылку... и могу ли я через TS Object path определенный lib.getlinkfield достать ту ссылку?
(по аналогии с тем, как я могу обратиться к какому-то элементку контента через RECORDS таблицы tt_content)
__________________
Персональный блог про заработок в интернете + полезных блога про typo3 и wordpress |
28.07.2006, 11:25 | #6 | |
Senior Member
|
Цитата:
Да можете, через название которое определили при задании TV шаблона. При чем тут RECORDS совершенно не понимаю. Ссылка в данном случае Flex Field... такой таблицы или поля в таблице не существует. |
|
02.08.2006, 10:19 | #7 |
Продвинутый
Регистрация: 18.01.2006
Адрес: Москва
Сообщений: 88
|
Поправленный код уважаемого Дмитрия Самойлова.
Код:
function renderTemplateSelector ($positionPid, $templateType='tmplobj') { global $LANG, $TYPO3_DB; $storageFolderPID = $this->apiObj->getStorageFolderPid($positionPid); $tmplHTML = array(); switch ($templateType) { case 'tmplobj': // Create the "Default template" entry $previewIconFilename = $GLOBALS['BACK_PATH'].'../'.t3lib_extMgm::siteRelPath($this->extKey).'res1/default_previewicon.gif'; $previewIcon = '<input type="image" class="c-inputButton" src="'.$previewIconFilename.'" title="" />'; $description = htmlspecialchars($LANG->getLL ('template_descriptiondefault')); $tmplHTML [] = '<table style="float:left; width: 100%;" valign="top"><tr><td colspan="2" nowrap="nowrap"> <h3 class="bgColor3-20">'.htmlspecialchars($LANG->getLL ('template_titledefault')).'</h3></td></tr> <tr><td valign="top">'.$previewIcon.'</td><td width="120" valign="top"><p>'.$description.'</p></td></tr></table>'; $tTO = 'tx_templavoila_tmplobj'; $tDS = 'tx_templavoila_datastructure'; $res = $TYPO3_DB->exec_SELECTquery ( "$tTO.*", "$tTO LEFT JOIN $tDS ON $tTO.datastructure = $tDS.uid", "$tTO.pid=".intval($storageFolderPID)." AND $tDS.scope=1". t3lib_befunc::deleteClause ($tTO).t3lib_befunc::deleteClause ($tDS). t3lib_BEfunc::versioningPlaceholderClause($tTO). t3lib_BEfunc::versioningPlaceholderClause($tDS)); while (false !== ($row = $TYPO3_DB->sql_fetch_assoc($res))) { // Check if preview icon exists, otherwise use default icon: $tmpFilename = 'uploads/tx_templavoila/'.$row['previewicon']; $previewIconFilename = (@is_file(PATH_site.$tmpFilename)) ? ($GLOBALS['BACK_PATH'].'../'.$tmpFilename) : ($GLOBALS['BACK_PATH'].'../'.t3lib_extMgm::siteRelPath($this->extKey).'res1/default_previewicon.gif'); $previewIcon = '<input type="image" class="c-inputButton" onclick="document.getElementById(\'datum\').value= '.$row['uid'].';" src="'.$previewIconFilename.'" title="" />'; $description = $row['description'] ? htmlspecialchars($row['description']) : $LANG->getLL ('template_nodescriptionavailable'); $tmplHTML [] = '<table style="width: 100%;" valign="top"><tr><td colspan="2" nowrap="nowrap"><h3 class="bgColor3-20">'.htmlspecialchars($row['title']).'</h3></td></tr>'. '<tr><td valign="top">'.$previewIcon.'</td><td width="120" valign="top"><p>'.$description.'</p></td></tr></table>'; } $tmplHTML [] = '<input type="hidden" value="0" name="data[tx_templavoila_to]" id="datum">'; break; case 't3d': if (t3lib_extMgm::isLoaded('impexp')) { // Read template files from a certain folder. I suggest this is configurable in some way. But here it is hardcoded for initial tests. $templateFolder = PATH_site.'fileadmin/export/templates/'; $files = t3lib_div::getFilesInDir($templateFolder,'t3d,xml' ,1,1); // Traverse the files found: foreach($files as $absPath) { // Initialize the import object: $import = $this->getImportObject(); if ($import->loadFile($absPath)) { if (is_array($import->dat['header']['pagetree'])) { // This means there are pages in the file, we like that...: // Page tree: reset($import->dat['header']['pagetree']); $pageTree = current($import->dat['header']['pagetree']); // Thumbnail icon: if (is_array($import->dat['header']['thumbnail'])) { $pI = pathinfo($import->dat['header']['thumbnail']['filename']); if (t3lib_div::inList('gif,jpg,png,jpeg',strtolower($pI['extension']))) { // Construct filename and write it: $fileName = PATH_site. 'typo3temp/importthumb_'.t3lib_div::shortMD5($absPath).'.'.$pI['extension']; t3lib_div::writeFile($fileName, $import->dat['header']['thumbnail']['content']); // Check that the image really is an image and not a malicious PHP script... if (getimagesize($fileName)) { // Create icon tag: $iconTag = '<img src="'.$this->doc->backPath.'../'.substr($fileName,strlen(PATH_site)).'" '.$import->dat['header']['thumbnail']['imgInfo'][3].' vspace="5" style="border: solid black 1px;" alt="" />'; } else { t3lib_div::unlink_tempfile($fileName); $iconTag = ''; } } } $aTagB = '<a href="'.htmlspecialchars(t3lib_div::linkThisScript (array('templateFile' => $absPath))).'">'; $aTagE = '</a>'; $tmplHTML [] = '<table style="float:left; width: 100%;" valign="top"><tr><td colspan="2" nowrap="nowrap"> <h3 class="bgColor3-20">'.$aTagB.htmlspecialchars($import->dat['header']['meta']['title'] ? $import->dat['header']['meta']['title'] : basename($absPath)).$aTagE.'</h3></td></tr> <tr><td valign="top">'.$aTagB.$iconTag.$aTagE.'</td><td valign="top"><p>'.htmlspecialchars($import->dat['header']['meta']['description']).'</p> <em>Levels: '.(count($pageTree)>1 ? 'Deep structure' : 'Single page').'<br/> File: '.basename($absPath).'</em></td></tr></table>'; } } } } break; } if (is_array($tmplHTML) && count($tmplHTML)) { $counter = 0; $content .= '<table>'; foreach ($tmplHTML as $single) { $content .= ($counter ? '':'<tr>').'<td valign="top">'.$single.'</td>'.($counter ? '</tr>':''); $counter ++; if ($counter > 1) { $counter = 0; } } $content .= '</table>'; } return $content; }
__________________
Константин, Вольный каменщик |
20.11.2006, 19:00 | #8 | |
Senior Member
|
Цитата:
--- зы. Pavel Antonov, раз можно обратиться через назавние в TV шаблоне, то каким образом? поподробнее, если можно)) зы2. Если я поверху TV 1.1.1 поставлю TV 1.1.0, то все шаблоны нужно будет делать заново? или нет?)
__________________
Персональный блог про заработок в интернете + полезных блога про typo3 и wordpress Последний раз редактировалось Tod; 20.11.2006 в 19:36 |
|
20.11.2006, 23:14 | #9 |
Senior Member
|
1. Все прекрасно работает. Всему виной невнимательность((
2. Поставил TV 1.1.0 поверху TV 1.1.1, все было нормально, но поскольку ошибка была не в этом, все вернул обратно. - Остается вопрос с обращением в TS к полю Link field определенному в шаблоне.
__________________
Персональный блог про заработок в интернете + полезных блога про typo3 и wordpress |
21.11.2006, 00:40 | #10 |
Senior Member
|
Что такое собственно link field? это часть xml-записи в таблице tt_content.
Соответственно, чтобы его вытащить, надо выбрать нужные записи через RECORDS или CONTENT, а затем из полученного xml вытянуть то, что нужно, с помощью дополнительной обработки в userFunc. ЗЫ. или я не прав?)
__________________
TYPO3 FAQ |