Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   typolink (http://forum.typo3.ru/showthread.php?t=380)

dio 14.08.2003 12:56

typolink
 
temp.10 = CONTENT
temp.10{
table = tt_content
select{
...
}
typolink.parameter = 1
}

а потом в шаблоне...
subparts.text < temp.10

я хочу чтобы запись, выбранная из таблицы была ссылкой на ?id=1

что я не так делаю?

Andreas Schwarzkopf 21.08.2003 00:24

Не совсем понимаю вопрос, но попробую ответить ;) Проще было бы, если знать, какова цель всей этой операции.

Если нужно выдать здесь запись ?id=1,
то можно сделать так:

temp.10 < styles.content.get
temp.10.select.uidInList = 1

Если же нужно только выдать ссылку на id=1,
то это уже сложнее. Во первых, неясно что такое id=1 - номер страницы (таблица pages)или номер контент-элемента (таблица tt_content).

Если нужно создать ссылку на страницу, существует опять же несколько вариантов, в зависимости от того, на чем разместить ссылку.
Если вы хотите с какого-то слова или картинки разместить ссылку на страницу 1, то это можно сделать к примеру так:

temp.10 = TEXT
temp.10.value = Homepage
temp.10.typolink.parameter = 1

Главное в том, что typolink - дочерняя функция функции stdWrap. Если данный объект напрямую поддерживает функции stdWrap (это видно в документации TSRef), то вы можете смело использовать typolink. (как в данном примере с объектом TEXT).
Так как многие объекты (CONTENT, IMAGE и.т.д) в списке свойств не имеют typolink, а только stdWrap, то нужно обращаться к функции typolink через stdWrap:

page.10 = IMAGE
page.10 {
file = fileadmin/logo.gif
stdWrap.typolink.parameter.data = leveluid : 0
}

В данном случае в качестве примера я взял не конкретную страницу (id=1), а главную страницу дерева (leveluid : 0). Обычно это надежнее, так как кто-то из пользователей может когда-нибудь переместить страницы так, что главная больше не будет по номером 1.

Что касается подвязки ссылки под результат запроса в таблицу tt_content, как это сделано в вашем примере, то так просто это не получится.
В результате вашего запроса вы получаете всю строку, а не конкретное поле. Так что необходимы дальнейшие преобразования, чтобы получить конкретный текст или другие данные. Кстати, два огромных статических шаблона content(default) и styles.content(default) занимаются практически только тем, что достают данные из таблицы tt_content и делают их доступными для использования.

Так что лучше включить эти исходные шаблоны в ваш шаблон и пользоваться их результатами, или посмотреть на их содержимое в инструменте Template Analyzer, чтобы понять, как это делается.

Надеюсь, что ответил на вопрос. В будущем, пожалуйста, опишите проблему подробнее.

Спасибо, желаю успехов!

dio 21.08.2003 09:00

Спасибо, действительно ворос я задал неточно.
Проблема была такая:
я выбираю запись из tt_content с id=1.
(тип - обычный текст).
И хочу, чтобы весь текст был ссылкой.
Вот как я это пытался сделать:

temp.10 < styles.content.get
temp.10.select.uidInList = 1
temp.10.stdWrap.typolink = 1
page.10 < temp.10

На выходе получаем:
<a href="?id=1"><a name=1></a>
<h1>header text</h1><p>bodytext</p>
</a>

вот из-за <a name=1></a> сам текст уже ссылкой не является... я понимаю, что фишка Typo3, позволяющая ссылаться на отдельный элемент содержимого, но вот как её отключить не нашел :)

(сейчас-то я пошел другим путем, но решение этой проблемы просто интересно.)

Andreas Schwarzkopf 21.08.2003 21:26

tt_content.stdWrap.dataWrap =
оригинал находится в content(default)

Небольшая проблема в том, что если эту строку вставить просто в шаблон, то метки выключатся на всем сайте. Если такой результат нужен только на определенных страницах, можно внести условие.


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

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