Russian TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

Ответ
 
Опции темы Опции просмотра
Старый 19.03.2012, 14:45   #1
Anlov
Senior Member
 
Регистрация: 02.05.2011
Сообщений: 138
По умолчанию Новое поле для tt_news в TCA

всем - привет.
надо добавить четыре новых select/option поля из tt_address в одну из закладок tt_news.

это я добавил в tca.php tt_news
Код:
'partner1' => array (
			'exclude' => 1,
			'label' => 'Partner 1',
			'config' => array (
				'type' => 'select',
				'items' => Array (
					array(
						'', 
						0
					),
				),
				'foreign_table' => 'tt_address',
				'foreign_table_where' => 'ORDER BY tt_address.last_name',
				'size' => 1,
				'minitems' => 0,
				'maxitems' => 1,
			)
		),
		'partner2' => array (
			'exclude' => 1,
			'label' => 'Partner 2',
			'config' => array (
				'type' => 'select',
				'items' => Array (
					array(
						'', 
						0
					),
				),
				'foreign_table' => 'tt_address',
				'foreign_table_where' => 'ORDER BY tt_address.last_name',
				'size' => 1,
				'minitems' => 0,
				'maxitems' => 1,
			)
		),
		'auftraggeber1' => array (
			'exclude' => 1,
			'label' => 'Auftraggeber 1',
			'config' => array (
				'type' => 'select',
				'items' => Array (
					array(
						'', 
						0
					),
				),
				'foreign_table' => 'tt_address',
				'foreign_table_where' => 'ORDER BY tt_address.last_name',
				'size' => 1,
				'minitems' => 0,
				'maxitems' => 1,
			)
		),
		'auftraggeber2' => array (
			'exclude' => 1,
			'label' => 'Auftraggeber 2',
			'config' => array (
				'type' => 'select',
				'items' => Array (
					array(
						'', 
						0
					),
				),
				'foreign_table' => 'tt_address',
				'foreign_table_where' => 'ORDER BY tt_address.last_name',
				'size' => 1,
				'minitems' => 0,
				'maxitems' => 1,
			)
		),
это - в class.tx_ttnews.php
Код:
             $markerArray['###PARTNER1###'] = $row['partner1'];
		$markerArray['###PARTNER2###'] = $row['partner2'];
		$markerArray['###AUFTRAGGEBER1###'] = $row['auftraggeber1'];
		$markerArray['###AUFTRAGGEBER2###'] = $row['auftraggeber2'];
и это - в tt_news_v3_template.html
Код:
             ###PARTNER1###
		###PARTNER2###
		###AUFTRAGGEBER1###
		###AUFTRAGGEBER2###
на закладке tt_news общие появились четыре select поля, в которых я могу выбрать имена! из tt_address.

выбираю, сохраняю новость. на странице появляется не имя из tt_address, которое я вижу в select-списке, а uid! а мне-то нужно именно имя!

хелп!

Последний раз редактировалось Anlov; 19.03.2012 в 18:37
Anlov вне форума   Ответить с цитированием
Старый 20.03.2012, 13:48   #2
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Было бы странно если бы увидели что-то другое.

Вообще-то вы идёте неправильным путем. Лезть в код чужого экста - значит терять возможность обновить его при необходимости на свежую версию (кстати tt_news на днях дорос до версии 3.2).

Обычно для расширения TCA создается свой экст, в котором добавляется поле в sql + TCA сторонней таблицы. А для добавления новых маркеров в tt_news используется, например, экст ttnewsgenericmarkers. И потом магия TS (пример мой, но ваш будет похож):

Код:
# настрока своих маркеров
plugin.tt_news.genericmarkers {
	# используем в маркерах нижеперечисленные поля из записи tt_news
	data = uid,tx_ttnewspublisher_source
	
             # создаем значение для маркера ###PUBLISHER_LINK###
	publisher_link = COA
	publisher_link {
		# поле generic_tx_ttnewspublisher_source содержит значение 
		# поля tt_news.tx_ttnewspublisher_source
		stdWrap.fieldRequired = generic_tx_ttnewspublisher_source
		stdWrap.dataWrap = <div class="news-single-publisher"><span class="label">{LLL:EXT:ttnews_publisher/locallang_db.xml:tx_ttnewspublisher_label}</span>&nbsp;|</div>
		
		# выборка из таблицы tx_ttnewspublisher_sources записи по uid 
		# из tt_news.tx_ttnewspublisher_source и создание ссылки из 
		# tx_ttnewspublisher_sources.publisher_name и tx_ttnewspublisher_sources.website
		10 = RECORDS
		10 {
			tables = tx_ttnewspublisher_sources
			source.field = generic_tx_ttnewspublisher_source
			
			conf.tx_ttnewspublisher_sources = TEXT
			conf.tx_ttnewspublisher_sources {
				field = publisher_name
				typolink.parameter.data = field:website
			}
		}
	}
}
PS: Если вы все же хотите пойти своим путем, то вместо = $row['partner1'] используйте обращение к БД для выборки названия (нужного поля) по uid которых сохранен в = $row['partner1'].
dmartynenko вне форума   Ответить с цитированием
Старый 20.03.2012, 20:35   #3
Anlov
Senior Member
 
Регистрация: 02.05.2011
Сообщений: 138
По умолчанию

спасибо.
понятно, что было бы лучше свое расширение написать. но так как это будет мое первое расширение - сколько времени я на него убью? а заказчику, как обычно надо "вчера"...
а сделать надо было так:
в class.tx_ttnews.php вместо
PHP код:
$markerArray['###PARTNER1###'] = $row['partner1']; 
надо было написать
PHP код:
$partner1 t3lib_BEfunc::getRecord('tt_address'$row['partner1']);
$markerArray['###PARTNER1###'] = $partner1['name']; 
то есть используя Typo3 API, достать потом из tt_address записи, соответствующие сохраненным в поле tt_news.partner1 номерам.
но свой экс, конечно, было бы правильнее.
Anlov вне форума   Ответить с цитированием
Старый 20.03.2012, 20:46   #4
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Цитата:
Сообщение от Anlov Посмотреть сообщение
спасибо.
понятно, что было бы лучше свое расширение написать. но так как это будет мое первое расширение - сколько времени я на него убью?
Не более 5 минут - в кикстартере выбираете "добавить поле в чужую таблицу", выбираете таблице tt_news, задаете тип поля, подписи и т.п. Сохраняете сгенерированный код расширения и устанавливаете его. Это все.
dmartynenko вне форума   Ответить с цитированием
Старый 21.03.2012, 14:23   #5
Anlov
Senior Member
 
Регистрация: 02.05.2011
Сообщений: 138
По умолчанию

а чуть поподробнее? блин, правда нет времени глубоко копать.
Anlov вне форума   Ответить с цитированием
Старый 21.03.2012, 14:34   #6
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Да куда уж подробнее? Скриншот что-ли?

Попробуйте, если хоть раз пользовались кикстартером то у вас сразу получиться.

dmartynenko вне форума   Ответить с цитированием
Старый 22.03.2012, 15:36   #7
Anlov
Senior Member
 
Регистрация: 02.05.2011
Сообщений: 138
По умолчанию

ни разу не пользовался. и найти чего-то почитать тоже не могу. не подскажете ссылку на доку, как с помощью кикстартера писать расширения?
Anlov вне форума   Ответить с цитированием
Старый 22.03.2012, 15:49   #8
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Доку не подскажу, но тут все довольно очевидно.

Устанавливаете экст. kickstarter. В экст. менеджере в выпадающем списке появляется пункт "Create new extension" (не знаю, может и локализация для kickstarter есть). Попадаете в интерфейс как на скриншоте.

Там задается конфигурация практически по всем возможностям плагинов для TYPO3 (языки для локализации, таблицы, FE модули, BE модули). И потом в "Total form" вы можете то что указали сохранить как экст (папка с файлами). Фактически полноценно создается только TCA для таблиц и полей. Остальное только как каркас (файлы плагинов и модулей которые вам нужно наполнить своим PHP кодом, пустые файлы TS шаблонов).
dmartynenko вне форума   Ответить с цитированием
Старый 22.03.2012, 17:52   #9
Anlov
Senior Member
 
Регистрация: 02.05.2011
Сообщений: 138
По умолчанию

буду пробовать, спасибо.
Anlov вне форума   Ответить с цитированием
Старый 06.04.2012, 17:09   #10
antony
Новенький
 
Регистрация: 26.10.2008
Адрес: Russia, Moscow
Сообщений: 19
По умолчанию

Пытаюсь добавить новое поля в шаблон новостей с помощью Kickstarter wizard, ничего не получается. В итоге ничего не отображается, Как сделать так чтобы при добавлении ностей можно было помимо стандартных полей вывести и какой-нибудь второй заголовок?
antony вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подойдет ли TYPO3 для информационного сайта? vold57 Вопросы выбора CMS 19 07.12.2011 00:23
Вопрос по cookieDomain для доменов зеркал Андрей Аксенов Общие вопросы 2 20.02.2011 17:40
Getting Started tutorial - полностью новое руководство для новичков Андрей Аксенов Мастер-класс 0 09.12.2010 10:33
Что использовать для простого каталога? cronfy Магазины и каталоги для TYPO3 4 23.05.2008 12:36
Новое решение для user list archive Valery Romanchev Новости TYPO3-разработки 0 27.03.2006 04:51


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


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

Хостинг и техническая поддержка: TYPO3 Лаборатория