Добавить маркер в tt_news, который сохраняет ссылку на другую страницу

Я хочу, чтобы пользователь мог указать ссылку на страницу. Поэтому используется группа. Пример основан на поле «related». Поскольку остальная часть структурирована не только для входа, пользователь также должен иметь возможность установить более одной ссылки. Обратный запрос не требуется.

Вот как я это делаю:

Здесь я загружаю поле ввода «ссылка»:

$TCA['tt_news'] = Array (
    'ctrl' => $TCA['tt_news']['ctrl'],
    'interface' => Array (
        'showRecordFieldList' => 'title,hidden,datetime,starttime,archivedate,category,author,author_email,short,image,imagecaption,links,related,news_files,link'
    ),

Здесь я определяю поле «ссылка»

    'link' => Array (
        'label' => 'Link to another page',
        'config' => Array (
            'type' => 'group',
            'internal_type' => 'db',
                'allowed' => 'tt_news,pages',
                'MM' => 'tt_news_link_mm',
            'size' => '3',
            'autoSizeMax' => 10,
            'maxitems' => '200',
            'minitems' => '0',
            'show_thumbs' => '1',
            'wizards' => array(
                'suggest' => array(
                    'type' => 'suggest'
                )
            )
        )
    ),

Я использовал поле «связанные» в качестве образца.

Здесь я определяю позицию в бэкэнде:

'types' => Array (
    '0' => Array('showitem' =>
        'hidden, type;;;;1-1-1,title;;;;2-2-2,short,bodytext;;2;richtext:rte_transform[flag=rte_enabled|mode=ts];4-4-4,
        --div--;LLL:EXT:tt_news/locallang_tca.xml:tt_news.tabs.special, datetime;;;;2-2-2,archivedate,author;;3;; ;;;;2-2-2,
            keywords;;;;2-2-2,sys_language_uid;;1;;3-3-3,
        --div--;LLL:EXT:tt_news/locallang_tca.xml:tt_news.tabs.media, image;;;;1-1-1,imagecaption;;5;;,links;;;;2-2-2,news_files;;;;4-4-4,link;;;;3-3-3,
        --div--;LLL:EXT:tt_news/locallang_tca.xml:tt_news.tabs.catAndRels, category;;;;3-3-3,related;;;;3-3-3,
        --div--;LLL:EXT:tt_news/locallang_tca.xml:tt_news.tabs.access, starttime,endtime,fe_group,editlock,
        --div--;LLL:EXT:tt_news/locallang_tca.xml:tt_news.tabs.extended,
        '),

Теперь поле отображается так, как ожидалось. Я могу выбрать страницу, и она появляется в списке выбора. В поле в таблице tt_news значение меняется только с 0 на 1. Также в таблице tt_news_related_mm появилась запись. Я достиг этого, используя отдельную таблицу.

CREATE TABLE `tt_news_link_mm` (
  `uid_local` int(11) NOT NULL default '0',
  `uid_foreign` int(11) NOT NULL default '0',
  `sorting` int(11) NOT NULL default '0',
  `tablenames` varchar(255) NOT NULL default '',
  KEY `uid_local` (`uid_local`),
  KEY `uid_foreign` (`uid_foreign`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Не хватает только одного: как преобразовать идентификатор страницы в говорящий URL?

Теперь мне это удалось с помощью cascaval:

            $typolink_conf = array(
                "title" => $title,
                "ATagParams" =>'',
                "no_cache" => 0,
                "parameter" => $data['uid'],
                "useCacheHash" => 1
            );

            $link = $this->cObj->typolink('linkname', $typolink_conf);

person testing    schedule 10.01.2012    source источник
comment
1. Вы хотите, чтобы пользователь мог ссылаться на только одну страницу или на несколько? 2. Вам когда-нибудь понадобится сделать обратный запрос = найти новости, которые ссылаются на определенную страницу?   -  person tmt    schedule 11.01.2012
comment
Сначала я думал, что одного будет достаточно. Поскольку я создал другие связанные поля, которые могут содержать более одного значения, это поле также должно подойти. Итак: 1. Более одного. 2. Обратный запрос не нужен. Мне удалось получить эту работу. Не хватает только мелочи (см. последнее предложение в моем вопросе).   -  person testing    schedule 11.01.2012
comment
В Typoscript вы должны использовать функцию typolink (typo3.org/documentation/document-library/references/). В расширении вы должны вызвать метод typolink класса tslib_pibase.   -  person tmt    schedule 11.01.2012
comment
тестирование: это было решено?   -  person Mateng    schedule 10.04.2012
comment
@Mateng: Да, проблема решена.   -  person testing    schedule 10.04.2012


Ответы (1)


Вы можете создать общий маркер в TYPO3, как показано ниже:

http://typo3techie.blogspot.in/2014/04/how-to-create-own-market-in-ttnews.html

Перейдите по ссылке выше.

person Maulik Bhojani    schedule 05.05.2014