Просмотр полной версии : Как показывать один элемент на всех страницах?
Антон Мельников
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 модуля
Не получается вставить форму поиска в HTML-шаблон:
temp.searchbox = CONTENT 
temp.searchbox { 
  table = tt_content 
  select.uidInList = 96 // номер записи
}
и далее
subparts.searchbox < temp.searchbox
pidInList тоже не даёт эффекта :(
HTML-код <!--###searchbox### begin-->форма поиска<!--###searchbox### end--> просто удаляется
тот же эффект:
temp.searchbox = RECORDS 
temp.searchbox { 
  tables = tt_content 
  source = 96 // номер записи
}
Даже если я создаю новую страницу и ввожу:
# Default PAGE object:
page = PAGE
page.10 = RECORDS 
page.10.source = tt_content_96
то получаю пустую страницу
попробовал отладить:
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?
Вопрос снят.
Конечный работающий код следующий:
temp.searchbox = RECORDS
temp.searchbox.source = 96
temp.searchbox.tables = tt_content
А как показывать одну, случайным образом выбранную, запись из таблицы с помощью RECORDS?
А как показывать одну, случайным образом выбранную, запись из таблицы с помощью 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ой страницы?
Приветствую, 
а каким образом можно управлять полями куда вставлять новости? 
допустим, у меня есть поле akcii куда нужно и вставить идентичный контент..  
каким образом я могу туда поместить этот контент?? 
Зарание спасибо.
Под "полем 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. И после этого на всего страницах более низкого уровня автоматом будет показываться контент из этого поля родительской страницы.
Спасибо, а что значит нет идентификатора новости ? 
pid указан правильно...
эм, а pid равен UID ?если нет, то подскажите как его найти(pid)?
PID это id страницы на которой хранятся записи (в вашем случае я так понимаю это новости).
а идентификатор новости - это уже непосредственно uid новости которую вы хотите показать.
Спасибо огромное) помогло...
а есть какойнибуть способ в последние новости загрузить картинку??
просто нужно чтобы при нажатии на эту картинку осуществлялся переход на некую страницу.. как в новостях. и главне нужно чтобы это легко редактировалось
dmartynenko
08.12.2008, 15:05
Спасибо огромное) помогло...
а есть какойнибуть способ в последние новости загрузить картинку??
просто нужно чтобы при нажатии на эту картинку осуществлялся переход на некую страницу.. как в новостях. и главне нужно чтобы это легко редактировалось
Длятаких вопросов создавайте новую тему! Ведь к текущей ветке она уже не имеет отношения.
А вот вариант решения:
1. Вывести 2 списка LATEST - в первом одна новость + картинка (из этой новости), во втором остальные новости.
2. Вывести два контент-элемента - один список новостей, второй просто картинка зевернутая в div. С помощью CSS спозиционировать их между собой как нужно.
По моему всё, по теме.. ибо мне и нужно разместить один элемент на всех страницах, просто я решил что новостью это будет всех удобнее для заказчика.. 
Спасибо за ответ.
khurtsiya
03.07.2011, 16:31
нашел код 
temp.kievtemplate = RECORDS
temp.kievtemplate {
  tables = tt_content
  source = 254 # Enter the object's ID here
}
но не понял куда его вставлять и как определить в каком месте будет выведен контент? нужно в левой колонке
Можно ли вывести содержимое поля из таблицы своего расширения? Вот так не работает:
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 и ищите примеры здесь или в гугле.
Спасибо большое за подсказку, вот теперь работает:
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
Еще раз спасибо большое за очередную подсказку и ссылку! Знаю этот сайт, но как-то давно уже не заходил) Там на самом деле очень много замечательных примеров. А мой 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-пользователем без прав админа и без доступа к шаблонам.
Даже не знаю, мне кажется так вроде удобнее) Я этот lib к FCE прикручиваю, а потом редактор может в любое место сайта его вставить.
Наверняка этот элемент должен редактироваться 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> - это номер столбца из которого будут браться элементы содержимого, при использовании обычных шаблонов.
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot