【问题标题】:TYPO3 How can I add own data (datafields) into tt_address?TYPO3 如何将自己的数据(数据字段)添加到 tt_address?
【发布时间】:2014-11-10 15:16:47
【问题描述】:

我正在使用 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###

无论如何..它不起作用!我的错在哪里?我不知道;)

【问题讨论】:

    标签: typo3 kickstarter


    【解决方案1】:

    您需要为 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'];
          } 
        }
    

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
    • @krumia,我不知道通过链接到另一个 stackoverflow 答案来帮助某人是不好的。所以,我已经在我的答案中包含了代码。
    【解决方案2】:

    谢谢大家!我做到了!

    创建a new Extension at 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';
    
    ?>
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我不是 PHP 专业人士,所以我在编写自己的扩展时遇到了问题。我找到了一些教程来扩展流行的 TYPO3-Extension,但它不起作用..?!
      • 呃……但是写一个typo3扩展并不难……试试吧,学习它,成为一个更好的Typo3er
      【解决方案4】:

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

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

      不知道为什么是字段类型以及应该放什么!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-18
        • 2013-07-13
        • 2021-05-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多