Php 如何在TTU新闻记录的TYPO3调度程序任务中生成URL?
我目前正在为TYPO3(4.7.7)编写一个调度程序 在我的任务中,我需要一些tt_新闻记录的URL。我试图像在“pxa_newstofb”扩展中那样“引导”前端,但这不起作用。下面是我当前的类,它应该生成到新闻记录的链接:Php 如何在TTU新闻记录的TYPO3调度程序任务中生成URL?,php,typo3,scheduler,tt-news,Php,Typo3,Scheduler,Tt News,我目前正在为TYPO3(4.7.7)编写一个调度程序 在我的任务中,我需要一些tt_新闻记录的URL。我试图像在“pxa_newstofb”扩展中那样“引导”前端,但这不起作用。下面是我当前的类,它应该生成到新闻记录的链接: <?php abstract class tx_myextension_newshelper { /** * @var tslib_cObj */ protected $cObj; function __constru
<?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(),'');
}
}
?>
每次我执行任务时,都会显示一个没有css的“404”(前端-)页面。为tt_新闻扩展创建前端URL是否有智能解决方案
系统:带有RealURL的Typo3 CMS 4.7.7介绍包。好的解决方案是使用Dmitry Dulepov的名为“pagepath”的扩展。
您可以在这个ext中阅读文档—很简单。好的解决方案是使用Dmitry Dulepov的扩展名“pagepath”。
您可以阅读此分机中的文档-很简单。是。我用的是介绍包。我更新了我的问题,所以按照Krystian的回答做。是的。我用的是介绍包。我更新了我的问题。所以按照Krystian的回答做。谢谢,这很有效。我按如下方式更改了link()函数:
$newsLink=tx\u pagepath\u api::getPagePath($this->getSingleViewPageId($news['pid')),数组('tx\u ttnews[tt\u news]'=>$news['uid')
getSingleViewPageId返回新闻的singleView页面ID,该ID将存储在TSConfig中<代码>公共函数getSingleViewPageId($newsFolderPageId){$PageTconfig=t3lib\u BEfunc::getPagesTSconfig($newsFolderPageId);返回@$PageTconfig['tx\u ttnews.]['singlePid'];}谢谢,这很有效。我按如下方式更改了link()函数:$newsLink=tx\u pagepath\u api::getPagePath($this->getSingleViewPageId($news['pid')),数组('tx\u ttnews[tt\u news]'=>$news['uid')
getSingleViewPageId返回新闻的singleView页面ID,该ID将存储在TSConfig中<代码>公共函数getSingleViewPageId($newsFolderPageId){$PageTconfig=t3lib\u BEfunc::getPagesTSconfig($newsFolderPageId);返回@$PageTconfig['tx\u ttnews.]['singlePid'];}