2014-11-10 10 views
0

TYPO3 v 6.2와 확장 tt_address를 사용하고 있습니다. tt_address 테이블에 더 많은 (데이터) 필드가 필요합니다.TYPO3 어떻게 tt_address에 자신의 데이터 (데이터 필드)를 추가 할 수 있습니까?

필자는 kickstarter를 통해 db 필드를 추가 할 수 있다는 것을 읽었습니다. 그래서 TYPO3 4.5를 설치하고 킥 스타터를 설치했습니다.

새로운 확장명 "ttaddressaddfields"를 추가하십시오. "기존 테이블 확장"에서 "tt_address"-DB 테이블을 추가하십시오. 새 데이터 - 필드 유형 문자열 "email1"을 추가하십시오. 결과보기 -> 쓰기 -> 내선 설치. and voila! 모든 것이 작동합니다. "email1"이라는 tt_address 양식에 새 필드가 있습니다. 데이터베이스에서 전자 메일 필드에 내 콘텐츠가 기록되었습니다.

BUT! Frontend에서 내 결과를 표시하려면 어떻게해야합니까? tt_address-Setup.ts를 편집해야합니까?

나는

###PHONE### 
<br>Extrafeld :&nbsp; ###EMAIL1### 
어쨌든

.. 그것이 작동하지 않습니다 (tt_address에서) 내 HTML 템플릿에 ext_localconf.php

<?php 
if (!defined ('TYPO3_MODE')) die ('Access denied.'); 
    $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['tt_address']['extendingTCA'][] = 'ttaddressaddnew'; 
?> 

에서 내 자신의 확장에서이 추가! 내 잘못은 어디 있니? 나) 모르겠다;)

답변

0

감사합니다. 난 끝냈어!

a new Extension at Kickstarter ... tt_address

###EMAIL1### 

tx_ttaddressextended_email1 

새로운 클래스 파일을 추가합니다라고 tt_address 테이블에 내 여분의 필드 내 템플릿에서

(클래스를 만든 후 .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에서 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'; 

?> 
0

나는 당신이 자신의 확장 기능을 작성하고 tt_address db 필드를 사용하는 것이 더 좋을 것이라고 생각한다. 나는 그것을 연장해야 할 때마다 내 자신의 연장에서 문제가 없기 때문에 매번 그렇게한다.

+0

는 내가 PHP-PRO, 그래서 난 내 자신의 확장을 작성하는 문제를했습니다 아니에요. 인기있는 TYPO3-Extension을 확장하는 자습서를 찾았지만 작동하지 않습니다. – user2310852

+0

어 ... 그러나 typo3 확장자를 쓰는 것은 어렵지 않습니다 .... 시도해보고 배우고 더 나아집니다 Typo3er – brandelizer

2

tt_address의 추가 itemmarker 배열에 대한 고유 한 후크를 작성해야합니다.

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 

클래스 tx_next_address_sort_addmarkers

tt-address-add-categorys-of-address-to-the-template에서 촬영,하지만 행복 모두를 만들기 위해 여기에 핵심 부품 포함 { function extraItemMarkerProcessor (& $ markerArray, & $ 주소, & $ lConf, & $ POBJ) {

$lcObj = t3lib_div::makeInstance('tslib_cObj'); 
    $lcObj->data = $address; 

    $markerArray['###EMAIL1###'] = $address['email1']; 
} 

}

+0

이 대답은 올바른 해결책을 나타냅니다. – lorenz

+1

이 링크는 질문에 대답 할 수 있지만 답변의 핵심 부분을 여기에 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. – Krumia

+1

@ krumia, 나는 다른 stackoverflow 대답에 연결하여 누군가를 도울 것이 나쁘다는 것을 몰랐다. 그래서, 나는 내 대답에 코드를 포함 시켰습니다. – Dirk

-1

사용자 정의 필드에 대한 마커를 이름에 특수 구문이 있어야합니다.그래서 당신은 왜

###EMAIL1_TX_TTADDRESSEXT_FIELDTYPE###

확실하지 않음으로 시도 할 수 있습니다 http://www.typo3forum.net/forum/extension-modifizieren-neu-erstellen/27095-tt_address-um-link-feld-erweitert-marker-nutzen.html

사용자가

###LINK_TX_TTADDRESSEXT_INTLINK###

이 성공적으로 완료되었습니다 :

이 된 스레드에서보세요 fieldtype과 무엇을 거기에 두어야하는지!