PDA

Просмотр полной версии : Как показывать один элемент на всех страницах?


Антон Мельников
19.05.2003, 19:05
В боковой колонке нужно показывать несколько абзацев на всех страницах сайта (спецпредложения, новости). Как сделать так, чтобы ими мог управлять пользователь, неграмотный в typoScript/html? Как сделать то же самое для группы страниц (спецпредложения по гвоздям показывать в разделе "гвозди")?

Andreas Schwarzkopf
19.05.2003, 20:04
Есть несколько путей:
1. плагин Новости (описание ниже)
2. вставка записи непосредств. из базы данных:
2 a) - одна запись
page.10 = TEXT
page.10.data = DB : tt_content:234:header
- вставляет запись номер 234 из таблицы tt_content, столбец: header
(информация: TSref, разделы stdWrap и getText)
2 b) - несколько записей
page.10 = RECORDS
page.10.tables = tt_content
page.10.source = 34,45 //номера записей
(информация: TSref, раздел RECORDS

3. целые страницы:
Обычный CONTENT объект, как он используется в статическом шаблоне content(default): Веб-Шаблон-Template Analyser-StylesContentDefault:

page.10 = CONTENT
page.10 {
table = tt_content
select.orderBy = sorting
select.where = colPos=0
select.languageField = sys_language_uid
# это добавлено мной:
select.pidInList = 234 // номер страницы
# или
select.uidInList = 34,23,34 // номера записей
}

НОВОСТИ: наиболее универсальный и элегантный метод.

пример:
temp.newsLeft = COA
temp.newsLeft < plugin.tt_news
temp.newsLeft {
defaultCode = LIST
code >
code = LATEST/1 // это номер категории новостей
pid_list >
pid_list = 58 // номер страницы, где лежат новости
}

# теперь вставляем шаблон:
page.10 < temp.newsLeft

# или при работе с HTML-шаблоном:
subparts.NEWS < temp.newsLeft

Н какой-либо странице, где необходимо показывать новости другой категории, или указать другое место хранения, нужно создать дополняющий шаблон, который состоит только из одной или двух строк:
page.10.code = LATEST/2
или
page.10.pid_list = 453

Кстати, новости можно создавать как "чистые" новости, или же просто как ссылку на существующую страницу, на которой больше возможностей форматировать текст (тип новостей: статья).

Да, и еще: если вы хотите включить RTE в новостях, скачайте новое расширение News+.

Успехов

Антон Мельников
19.05.2003, 22:03
> select.pidInList = 234 // номер страницы
> select.uidInList = 34,23,34 // номера записей

А можно ли ссылаться на элемент или страницу не по номеру?

А с новостями буду разбираться..

Andreas Schwarzkopf
19.05.2003, 22:18
uidInList - только номера
pidInList - номера + все, что дает функция stdWrap:
.data
.field
и.т.д
пример:
select.pidInList.data = leveluid : 1
- выбрать номер страницы первого уровня (под корневой страницей)

Valery Romanchev
01.01.2007, 17:42
сейчас сюда надо добавить KB TV Content Slide (http://dergruppencoach.de/cms/typo3/mod/tools/em/index.php?CMD%5BshowExt%5D=kb_tv_cont_slide&SET%5BsingleDetails%5D=info) kb_tv_cont_slide
и соответсвующую фичу ядра для старого page модуля

Ice
17.01.2007, 09:37
Не получается вставить форму поиска в HTML-шаблон:

temp.searchbox = CONTENT
temp.searchbox {
table = tt_content
select.uidInList = 96 // номер записи
}

и далее
subparts.searchbox < temp.searchbox

pidInList тоже не даёт эффекта :(

HTML-код <!--###searchbox### begin-->форма поиска<!--###searchbox### end--> просто удаляется

PhilD
17.01.2007, 09:59
сделайте через RECORDS

Ice
17.01.2007, 10:07
тот же эффект:

temp.searchbox = RECORDS
temp.searchbox {
tables = tt_content
source = 96 // номер записи
}

Ice
17.01.2007, 10:17
Даже если я создаю новую страницу и ввожу:

# Default PAGE object:
page = PAGE
page.10 = RECORDS
page.10.source = tt_content_96

то получаю пустую страницу

Ice
17.01.2007, 12:16
попробовал отладить:
temp.searchbox = CONTENT
temp.searchbox {
select.pidInList = 120
table = tt_content
renderObj=COA
renderObj{
20=TEXT
20.data = debug:data
}
}

если указываю страницу pidInList = 120, то форма поиска не выводится, но выводится запись из БД, если указываю элемент на этой странице uidInList = 96, то и запись БД не выводится

Выходит, что нельзя использовать uidInList?

Ice
17.01.2007, 16:17
Вопрос снят.

Конечный работающий код следующий:
temp.searchbox = RECORDS
temp.searchbox.source = 96
temp.searchbox.tables = tt_content

enot
01.02.2007, 01:28
А как показывать одну, случайным образом выбранную, запись из таблицы с помощью RECORDS?

Ice
01.02.2007, 08:08
А как показывать одну, случайным образом выбранную, запись из таблицы с помощью RECORDS?

1 случайный элемент со страницы с помощью CONTENT:
10 = CONTENT
10 {
table = tt_content
select {
# ID of the page where your content elements are stored
pidInList = 126
# Number of content elements to show
max = 1
orderBy = rand()
}
}

hangmoon
29.04.2008, 01:58
помогите по теме:
хочу вставить в хтмл шаблон мини новости, пишу так
...
subparts.right = TEXT
subparts.right < plugin.tx_mininews_pi1
...
все работает, только новости отображаются на главной странице, где они и находяться, а на других страницах показывается только строка search 0 из 0 , как сделать, чтобы новости брались с 1ой страницы?

Falcon
25.11.2008, 19:04
Приветствую,
а каким образом можно управлять полями куда вставлять новости?
допустим, у меня есть поле akcii куда нужно и вставить идентичный контент..
каким образом я могу туда поместить этот контент??
Зарание спасибо.

reva2
26.11.2008, 00:35
Под "полем akcii" Вы имеете ввиду поле в шаблоне TemplaVoila? Если так, то возможны два варианта:
1) указываете "Typoscript object path" в качестве значения edeting type вашего поля и прописываете в object path что-то типа "lib.myAkcii" (без кавычек). Затем в TS шаблоне страницы задаете объект lib.myAkcii примерно так:

lib.myAkcii < tt_news
lib.myAkcii {
code >
code = SINGLE
..................
}2) Ставите расширение kb_tv_cont_slide. В качестве значения edeting type указываете Content Elements. Сохраняете Ваш TemplaVoila шаблон. Затем редактируете DS (Data Structure) Вашего шаблона в соотвествии с документацией расширения kb_tv_cont_slide. И после этого на всего страницах более низкого уровня автоматом будет показываться контент из этого поля родительской страницы.

Falcon
26.11.2008, 23:06
Спасибо, а что значит нет идентификатора новости ?
pid указан правильно...

эм, а pid равен UID ?если нет, то подскажите как его найти(pid)?

reva2
27.11.2008, 12:09
PID это id страницы на которой хранятся записи (в вашем случае я так понимаю это новости).
а идентификатор новости - это уже непосредственно uid новости которую вы хотите показать.

Falcon
07.12.2008, 23:10
Спасибо огромное) помогло...

а есть какойнибуть способ в последние новости загрузить картинку??
просто нужно чтобы при нажатии на эту картинку осуществлялся переход на некую страницу.. как в новостях. и главне нужно чтобы это легко редактировалось

dmartynenko
08.12.2008, 15:05
Спасибо огромное) помогло...

а есть какойнибуть способ в последние новости загрузить картинку??
просто нужно чтобы при нажатии на эту картинку осуществлялся переход на некую страницу.. как в новостях. и главне нужно чтобы это легко редактировалось

Длятаких вопросов создавайте новую тему! Ведь к текущей ветке она уже не имеет отношения.

А вот вариант решения:
1. Вывести 2 списка LATEST - в первом одна новость + картинка (из этой новости), во втором остальные новости.
2. Вывести два контент-элемента - один список новостей, второй просто картинка зевернутая в div. С помощью CSS спозиционировать их между собой как нужно.

Falcon
09.12.2008, 07:24
По моему всё, по теме.. ибо мне и нужно разместить один элемент на всех страницах, просто я решил что новостью это будет всех удобнее для заказчика..
Спасибо за ответ.

khurtsiya
03.07.2011, 16:31
нашел код

temp.kievtemplate = RECORDS
temp.kievtemplate {
tables = tt_content
source = 254 # Enter the object's ID here
}

но не понял куда его вставлять и как определить в каком месте будет выведен контент? нужно в левой колонке

anweb
14.12.2011, 16:10
Можно ли вывести содержимое поля из таблицы своего расширения? Вот так не работает:

lib.my_lib = CONTENT
lib.my_lib.table = tx_my_ext_table
lib.my_lib.select {
pidInList = 9
selectFields = count(*) as my_row
where = NOT deleted AND NOT hidden
andWhere = tx_my_ext_table.my_second_row=1
groupBy = tstamp
}

В TSref вот что для table указано: Note: Allowed tables are "pages" or tables prefixed with one of these: "pages_", "tt_", "tx_", "ttx_", "fe_", "user_" or "static_".

Вроде как получается таблицы с префиксом "tx_" разрешены. Или может есть другой способ?

dmartynenko
14.12.2011, 16:16
Можно! Ваш код корректный, но не полный - для CONTENT нужно указать как вывести загруженные данные. Иначе что вы ожидаете увидеть?

Читайте TSref CONTENT.renderObj и ищите примеры здесь или в гугле.

anweb
14.12.2011, 17:08
Спасибо большое за подсказку, вот теперь работает:

lib.my_lib = CONTENT
lib.my_lib.table = tx_my_ext_table
lib.my_lib.select {
pidInList = 9
selectFields = my_row
where = NOT deleted AND NOT hidden
andWhere = my_second_row=1
orderBy = tstamp
limit = 1
}
lib.my_lib.renderObj = COA
lib.my_lib.renderObj {
10 = TEXT
10.field = my_row
}

Вот только limit=1 не работает, или здесь надо по другому как-то для вывода только одной записи, самой новой?

dmartynenko
14.12.2011, 17:19
Это вам не SQL:
# limit 10 entries
lib.my_lib.select.max=10

dmartynenko
14.12.2011, 17:19
И еще несколько хороших примеров: http://www.typo3wizard.com/en/articles/explaining-the-content-object.html

anweb
14.12.2011, 17:32
Еще раз спасибо большое за очередную подсказку и ссылку! Знаю этот сайт, но как-то давно уже не заходил) Там на самом деле очень много замечательных примеров. А мой lib теперь уже полностью работает:

lib.my_lib = CONTENT
lib.my_lib.table = tx_my_ext_table
lib.my_lib.select {
pidInList = 9
selectFields = my_row
where = NOT deleted AND NOT hidden
andWhere = my_second_row=1
orderBy = tstamp DESC
max = 1
}
lib.my_lib.renderObj = COA
lib.my_lib.renderObj {
10 = TEXT
10.field = my_row
}

Dmitry Dulepov
19.12.2011, 14:34
А зачем вам это делать через элемент? Просто в HTML-шаблон забейте и все.

dmartynenko
19.12.2011, 14:37
А зачем вам это делать через элемент? Просто в HTML-шаблон забейте и все.

Наверняка этот элемент должен редактироваться BE-пользователем без прав админа и без доступа к шаблонам.

anweb
19.12.2011, 14:54
Даже не знаю, мне кажется так вроде удобнее) Я этот lib к FCE прикручиваю, а потом редактор может в любое место сайта его вставить.

anweb
19.12.2011, 14:55
Наверняка этот элемент должен редактироваться BE-пользователем без прав админа и без доступа к шаблонам.
Совершенно верно

Андрей Аксенов
21.12.2011, 18:59
Реализовано в templavoila_framework.
Суть такая, часть шаблона отводится для вывода содержимого из специально указанной для этого папки (через TS константу указываем PID папки с элементами содержимого - появляется возможность менять ее для разных частей сайта).
В папку складываем элементы содержимого, которые нужно вставить в эту определенную часть шаблона. Сам шаблон - структура данных в темплавуаля... Часть описания поля в структуре данных страницы выглядит так:

<field_generated_content_1 type="array">
<tx_templavoila type="array">
<title>Формируемое содержимое 1</title>
<description>Автоматически формируемое для страниц содержимое</description>
<sample_data type="array">
<numIndex index="0"></numIndex>
</sample_data>
<eType>none</eType>
<tags>div:outer</tags>
<TypoScript_constants type="array">
<containerWidth>{$containerWidth.f1f.generatedContent-1}</containerWidth>
<contentSource>{$dsConfig.generatedContent-1.contentSource}</contentSource>
</TypoScript_constants>
<TypoScript><![CDATA[

...
10 = CONTENT
10 {
wrap = <div id="generatedContent-1">|</div><!-- end #generatedContent-1 -->
table = tt_content
select.pidInList = {$contentSource}
select.languageField = sys_language_uid
}

]]></TypoScript>
<oldStyleColumnNumber type="integer">0</oldStyleColumnNumber>
</tx_templavoila>
</field_generated_content_1>

Важно здесь: contentSource - это и есть константа PID для папки.
ну а <oldStyleColumnNumber type="integer">0</oldStyleColumnNumber> - это номер столбца из которого будут браться элементы содержимого, при использовании обычных шаблонов.