TYPO3 Как я могу добавить свои собственные данные (поля данных) в tt_address?
Я использую TYPO3 v 6.2 и расширение tt_address. Мне нужно больше полей (данных) в таблицу tt_address.
Я прочитал, что я могу добавить больше полей БД через Kickstarter. Поэтому я установил TYPO3 4.5 и установил кикстартер.
Добавить новое расширение "ttaddressaddfields". Добавьте "tt_address"-DB-таблицу в "Расширение существующих таблиц". Добавьте новый тип поля данных String "email1". Посмотреть результат -> Написать -> Установить доб. и вуаля! Все работает.. У меня есть новое поле в моей форме tt_address, которое называется "email1". В базе данных поле email1 было написано с моим контентом.
НО! Как я могу показать свой результат в Frontend? Нужно ли редактировать tt_address-Setup.ts?
Я добавляю это на собственное расширение в ext_localconf.php
<?php
if (!defined ('TYPO3_MODE')) die ('Access denied.');
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['tt_address']['extendingTCA'][] = 'ttaddressaddnew';
?>
в моем HTML-шаблоне (из tt_address)
###PHONE###
<br>Extrafeld : ###EMAIL1###
Во всяком случае.. это не работает! Где моя вина? Понятия не имею;)
4 ответа
Спасибо вам всем! Я сделал это!
После создания нового расширения на Kickstarter...
В моем шаблоне для tt_address
###EMAIL1###
Мое дополнительное поле в tt_address-таблице называется
tx_ttaddressextended_email1
Добавьте новый файл класса (class.tx_ttaddressextended_filename.php) в мое новое расширение typo3conf/ext/tt_address_extended/
<?php
class tx_ttaddressextended_classname {
public function extraItemMarkerProcessor(&$markerArray, &$address, &$lConf, &$pObj) {
$lcObj = t3lib_div::makeInstance('tslib_cObj');
$lcObj->data = $address;
$markerArray['###EMAIL1###'] = $lcObj->stdWrap($address['tx_ttaddressextended_email1'], $lConf['tx_ttaddressextended_email1']);
return $markerArray;
}
}
?>
И КРЮЧОК в новом файле ext_localconf.php:
<?php
if (!defined ('TYPO3_MODE')) die ('Access denied.');
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['tt_address']['extraItemMarkerHook'][] = 'EXT:tt_address_extended/class.tx_ttaddressextended_filename.php:tx_ttaddressextended_classname';
?>
Вам нужно написать свой собственный хук для дополнительного массива itemmarker tt_address.
Пример взят из /questions/22800582/ttaddress-dobavit-kategorii-adresa-v-shablon, но чтобы все были довольны, включите в него основные части:
ext_localconf.php:
<?php
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['tt_address']['extraItemMarkerHook'][]
='EXT:txnextaddresssort/class.tx_next_address_sort_addmarkers.php:tx_next_address_sort_addmarkers';
class.tx_next_address_sort_addmarkers.php:
<?php
class tx_next_address_sort_addmarkers {function extraItemMarkerProcessor (& $ markerArray, & $ address, & $ lConf, & $ pObj) {
$lcObj = t3lib_div::makeInstance('tslib_cObj');
$lcObj->data = $address;
$markerArray['###EMAIL1###'] = $address['email1'];
}
}
Я думаю, что было бы лучше, если бы вы написали свое собственное расширение и использовали поля tt_address db. Я делаю это каждый раз, потому что, когда мне нужно расширить его, это не проблема в моем собственном расширении.
Должен быть специальный синтаксис для именования маркеров для пользовательских полей.
Посмотрите на эту старую ветку: http://www.typo3forum.net/forum/extension-modifizieren-neu-erstellen/27095-tt_address-um-link-feld-erweitert-marker-nutzen.html
Где пользователь был успешным с
###LINK_TX_TTADDRESSEXT_INTLINK###
Так что вы можете попробовать с
###EMAIL1_TX_TTADDRESSEXT_FIELDTYPE###
Не уверен, почему тип поля и что туда поставить, хотя!