Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Новое поле для tt_news в TCA (http://forum.typo3.ru/showthread.php?t=9998)

Anlov 19.03.2012 14:45

Новое поле для tt_news в TCA
 
всем - привет.
надо добавить четыре новых select/option поля из tt_address в одну из закладок tt_news.

это я добавил в tca.php tt_news
Код:

'partner1' => array (
                        'exclude' => 1,
                        'label' => 'Partner 1',
                        'config' => array (
                                'type' => 'select',
                                'items' => Array (
                                        array(
                                                '',
                                                0
                                        ),
                                ),
                                'foreign_table' => 'tt_address',
                                'foreign_table_where' => 'ORDER BY tt_address.last_name',
                                'size' => 1,
                                'minitems' => 0,
                                'maxitems' => 1,
                        )
                ),
                'partner2' => array (
                        'exclude' => 1,
                        'label' => 'Partner 2',
                        'config' => array (
                                'type' => 'select',
                                'items' => Array (
                                        array(
                                                '',
                                                0
                                        ),
                                ),
                                'foreign_table' => 'tt_address',
                                'foreign_table_where' => 'ORDER BY tt_address.last_name',
                                'size' => 1,
                                'minitems' => 0,
                                'maxitems' => 1,
                        )
                ),
                'auftraggeber1' => array (
                        'exclude' => 1,
                        'label' => 'Auftraggeber 1',
                        'config' => array (
                                'type' => 'select',
                                'items' => Array (
                                        array(
                                                '',
                                                0
                                        ),
                                ),
                                'foreign_table' => 'tt_address',
                                'foreign_table_where' => 'ORDER BY tt_address.last_name',
                                'size' => 1,
                                'minitems' => 0,
                                'maxitems' => 1,
                        )
                ),
                'auftraggeber2' => array (
                        'exclude' => 1,
                        'label' => 'Auftraggeber 2',
                        'config' => array (
                                'type' => 'select',
                                'items' => Array (
                                        array(
                                                '',
                                                0
                                        ),
                                ),
                                'foreign_table' => 'tt_address',
                                'foreign_table_where' => 'ORDER BY tt_address.last_name',
                                'size' => 1,
                                'minitems' => 0,
                                'maxitems' => 1,
                        )
                ),

это - в class.tx_ttnews.php
Код:

            $markerArray['###PARTNER1###'] = $row['partner1'];
                $markerArray['###PARTNER2###'] = $row['partner2'];
                $markerArray['###AUFTRAGGEBER1###'] = $row['auftraggeber1'];
                $markerArray['###AUFTRAGGEBER2###'] = $row['auftraggeber2'];

и это - в tt_news_v3_template.html
Код:

            ###PARTNER1###
                ###PARTNER2###
                ###AUFTRAGGEBER1###
                ###AUFTRAGGEBER2###

на закладке tt_news общие появились четыре select поля, в которых я могу выбрать имена! из tt_address.

выбираю, сохраняю новость. на странице появляется не имя из tt_address, которое я вижу в select-списке, а uid! а мне-то нужно именно имя!

хелп!

dmartynenko 20.03.2012 13:48

Было бы странно если бы увидели что-то другое.

Вообще-то вы идёте неправильным путем. Лезть в код чужого экста - значит терять возможность обновить его при необходимости на свежую версию (кстати tt_news на днях дорос до версии 3.2).

Обычно для расширения TCA создается свой экст, в котором добавляется поле в sql + TCA сторонней таблицы. А для добавления новых маркеров в tt_news используется, например, экст ttnewsgenericmarkers. И потом магия TS (пример мой, но ваш будет похож):

Код:

# настрока своих маркеров
plugin.tt_news.genericmarkers {
        # используем в маркерах нижеперечисленные поля из записи tt_news
        data = uid,tx_ttnewspublisher_source
       
            # создаем значение для маркера ###PUBLISHER_LINK###
        publisher_link = COA
        publisher_link {
                # поле generic_tx_ttnewspublisher_source содержит значение
                # поля tt_news.tx_ttnewspublisher_source
                stdWrap.fieldRequired = generic_tx_ttnewspublisher_source
                stdWrap.dataWrap = <div class="news-single-publisher"><span class="label">{LLL:EXT:ttnews_publisher/locallang_db.xml:tx_ttnewspublisher_label}</span>&nbsp;|</div>
               
                # выборка из таблицы tx_ttnewspublisher_sources записи по uid
                # из tt_news.tx_ttnewspublisher_source и создание ссылки из
                # tx_ttnewspublisher_sources.publisher_name и tx_ttnewspublisher_sources.website
                10 = RECORDS
                10 {
                        tables = tx_ttnewspublisher_sources
                        source.field = generic_tx_ttnewspublisher_source
                       
                        conf.tx_ttnewspublisher_sources = TEXT
                        conf.tx_ttnewspublisher_sources {
                                field = publisher_name
                                typolink.parameter.data = field:website
                        }
                }
        }
}

PS: Если вы все же хотите пойти своим путем, то вместо = $row['partner1'] используйте обращение к БД для выборки названия (нужного поля) по uid которых сохранен в = $row['partner1'].

Anlov 20.03.2012 20:35

спасибо.
понятно, что было бы лучше свое расширение написать. но так как это будет мое первое расширение - сколько времени я на него убью? а заказчику, как обычно надо "вчера"...
а сделать надо было так:
в class.tx_ttnews.php вместо
PHP код:

$markerArray['###PARTNER1###'] = $row['partner1']; 

надо было написать
PHP код:

$partner1 t3lib_BEfunc::getRecord('tt_address'$row['partner1']);
$markerArray['###PARTNER1###'] = $partner1['name']; 

то есть используя Typo3 API, достать потом из tt_address записи, соответствующие сохраненным в поле tt_news.partner1 номерам.
но свой экс, конечно, было бы правильнее.

dmartynenko 20.03.2012 20:46

Цитата:

Сообщение от Anlov (Сообщение 33326)
спасибо.
понятно, что было бы лучше свое расширение написать. но так как это будет мое первое расширение - сколько времени я на него убью?

Не более 5 минут - в кикстартере выбираете "добавить поле в чужую таблицу", выбираете таблице tt_news, задаете тип поля, подписи и т.п. Сохраняете сгенерированный код расширения и устанавливаете его. Это все.

Anlov 21.03.2012 14:23

а чуть поподробнее? блин, правда нет времени глубоко копать.

dmartynenko 21.03.2012 14:34

Да куда уж подробнее? Скриншот что-ли?

Попробуйте, если хоть раз пользовались кикстартером то у вас сразу получиться.

http://i39.tinypic.com/34y2ttw.png

Anlov 22.03.2012 15:36

ни разу не пользовался. и найти чего-то почитать тоже не могу. не подскажете ссылку на доку, как с помощью кикстартера писать расширения?

dmartynenko 22.03.2012 15:49

Доку не подскажу, но тут все довольно очевидно.

Устанавливаете экст. kickstarter. В экст. менеджере в выпадающем списке появляется пункт "Create new extension" (не знаю, может и локализация для kickstarter есть). Попадаете в интерфейс как на скриншоте.

Там задается конфигурация практически по всем возможностям плагинов для TYPO3 (языки для локализации, таблицы, FE модули, BE модули). И потом в "Total form" вы можете то что указали сохранить как экст (папка с файлами). Фактически полноценно создается только TCA для таблиц и полей. Остальное только как каркас (файлы плагинов и модулей которые вам нужно наполнить своим PHP кодом, пустые файлы TS шаблонов).

Anlov 22.03.2012 17:52

буду пробовать, спасибо.

antony 06.04.2012 17:09

Пытаюсь добавить новое поля в шаблон новостей с помощью Kickstarter wizard, ничего не получается. В итоге ничего не отображается, Как сделать так чтобы при добавлении ностей можно было помимо стандартных полей вывести и какой-нибудь второй заголовок?


Часовой пояс GMT +4, время: 00:43.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot