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 :&nbsp;    ###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###

Не уверен, почему тип поля и что туда поставить, хотя!

Другие вопросы по тегам