Как генерировать URL-адреса в задаче планировщика TYPO3 для записи tt_news?

В настоящее время я пишу планировщик для TYPO3 (4.7.7).

В моей задаче мне нужны URL-адреса для записей из tt_news. Я попытался «загрузить» внешний интерфейс, как в расширении «pxa_newstofb», но это не сработало. Вот мой текущий класс, который должен генерировать ссылку на запись новостей:

<?php

abstract class tx_myextension_newshelper {

    /**
     * @var tslib_cObj
     */
    protected $cObj;

    function __construct() {
    }

    /**
     * Creates a URL for the given news
     *
     * @param $news
     * @return string
     */
    public function link($news) {
        // Init frontend
        $this->initTSFE($news['pid']);

        $newsLink = $this->cObj->typoLink_URL(array(
            'no_cache' => false,
            'parameter' => $news['pid'],
            'additionalParams' => '&tx_ttnews[tt_news]=' . $news['uid'],
            'useCacheHash' => true
        ));

        if (substr($newsLink, 0, 7) != 'http://' || substr($newsLink, 0, 8) != 'https://') {
            $newsLink = $this->host($news) . $newsLink;
        }

        return $newsLink;
    }

    public function host($news) {
        return 'http://localhost/';
    }

    /**
     * Initialize frontend
     *
     * @param int $pageUid
     */
    public function initTSFE($pageUid = 1) {

        global $GLOBALS, $TSFE, $TYPO3_CONF_VARS;

        $this->cObj = t3lib_div::makeInstance('tslib_cObj');
        $temp_TTclassName = t3lib_div::makeInstance('t3lib_timeTrack');
        $GLOBALS['TT'] = new $temp_TTclassName();
        $GLOBALS['TT']->start();

        $TSFE = new tslib_fe($TYPO3_CONF_VARS, $pageUid, 0, 0);
        $TSFE->connectToDB();
        $TSFE->initFEuser();
        $TSFE->fetch_the_id();
        $TSFE->getPageAndRootline();
        $TSFE->initTemplate();
        $TSFE->forceTemplateParsing = 1;
        $TSFE->getConfigArray();
        $TSFE->initUserGroups();
        $TSFE->initTemplate();
        $TSFE->determineId();

        $GLOBALS['TSFE'] = $TSFE;
        $this->cObj->start(array(),'');
    }
}

?>

Каждый раз, когда я выполняю свою задачу, будет отображаться страница «404» (frontend-) без css. Есть ли разумное решение для создания внешних URL-адресов для расширения tt_news?

Система: Typo3 CMS 4.7.7 Вводный пакет с RealURL.


person Markus Poerschke    schedule 09.01.2013    source источник
comment
да. Я использую ознакомительный пакет. Я обновил свой вопрос.   -  person Markus Poerschke    schedule 10.01.2013
comment
Итак, следуйте ответу Кристиана.   -  person biesior    schedule 10.01.2013


Ответы (1)


Хорошим решением является использование расширения Дмитрия Дулепова под названием «pagepath». Вы можете прочитать документацию в этом расширении - это просто.

person Krystian Szymukowicz    schedule 09.01.2013
comment
Спасибо, это сработало. Я изменил функцию link() следующим образом: $newsLink = tx_pagepath_api::getPagePath($this->getSingleViewPageId($news['pid']), array('tx_ttnews[tt_news]' => $news['uid'])); getSingleViewPageId возвращает идентификатор страницы singleView для новостей, который будет храниться в TSConfig. public function getSingleViewPageId($newsFolderPageId) { $pageTSConfig = t3lib_BEfunc::getPagesTSconfig($newsFolderPageId); return @$pageTSConfig['tx_ttnews.']['singlePid']; } - person Markus Poerschke; 10.01.2013