TYPO3如何将自己的数据(数据字段)添加到tt_address?

时间:2014-11-10 15:16:48

标签: typo3 kickstarter

我正在使用TYPO3 v 6.2和Extension tt_address。 我需要更多(数据)字段到tt_address-table。

我读过,我可以通过kickstarter添加更多db-fields。 所以我安装了TYPO3 4.5并安装了kickstarter。

添加新扩展名“ttaddressaddfields”。在“扩展现有表”中添加“tt_address”-DB-table。添加新的数据字段类型字符串“email1”。查看结果 - >写 - >安装分机瞧! 一切正常..我的tt_address表单中有一个名为“email1”的新字段。 在数据库中,字段email1是用我的内容编写的。

BUT!如何在前端显示结果?我是否必须编辑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 个答案:

答案 0 :(得分:3)

你需要为tt_address的额外itemmarker数组编写自己的钩子。

取自tt-address-add-categorys-of-address-to-the-template的例子,但为了让每个人都满意,请在此处提供基本部分:

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'];
      } 
    }

答案 1 :(得分:1)

谢谢大家!我已经完成了!

创建a new Extension at Kickstarter ...

之后

在我的tt_address模板中

###EMAIL1###

tt_address-table中的我的额外字段称为

tx_ttaddressextended_email1

在我的新扩展名typo3conf / ext / tt_address_extended /

中添加一个新的类文件(class.tx_ttaddressextended_filename.php)
<?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;

    }

}
?>

HOOK在新文件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';

?>

答案 2 :(得分:0)

我认为你编写自己的扩展并使用tt_address数据库字段会更好。 我每次都这样做,因为当我需要更多地扩展它时,它在我自己的扩展中没有问题。

答案 3 :(得分:-1)

应该有一种特殊的语法来为自定义字段命名标记。

看看这个旧线程: 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###

不确定为什么要使用fieldtype以及放在那里的内容!