1

我正在使用 TYPO3 v 6.2 和扩展 tt_address。我需要在 tt_address 表中添加更多(数据)字段。

我读过,我可以通过 kickstarter 添加更多的数据库字段。所以我安装了 TYPO3 4.5 并安装了 kickstarter。

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

但!如何在前端显示我的结果?我必须编辑 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

4 回答 4

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'];
      } 
    }
于 2014-11-10T20:50:00.040 回答
1

谢谢你们!我已经做到了!

在 Kickstarter 上创建新的扩展程序后...

在我的 tt_address 模板中

###EMAIL1###

我在 tt_address-table 中的 Extra 字段被称为

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;

    }

}
?>

并且在新文件 ext_localconf.php 上的 HOOK:

<?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';

?>
于 2014-11-20T17:36:48.017 回答
0

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

于 2014-11-10T17:07:41.253 回答
-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###

不知道为什么字段类型和放在那里的东西!

于 2014-11-11T07:35:42.863 回答