У меня есть новостная статья с внутренними ссылками. В RTE я вижу ссылки вроде
http://www.yourdomain.com/?id=3
в текстовом режиме html. Проблема в том, что эта ссылка также появляется на интерфейсе. RealURL должен преобразовать эту ссылку в нечто вроде
http://www.yourdomain.com/products/
Содержимое RTE в настоящее время анализируется следующим образом
$parseObj = t3lib_div::makeInstance('t3lib_parsehtml_proc'); $txt = $parseObj->TS_links_rte($result['bodytext']); $txt = $parseObj->TS_transform_rte($txt);
Я читал, что я должен использовать что-то вроде этого
$pObj = t3lib_div::makeInstance('tslib_pibase'); $txt = $pObj->pi_RTEcssText($result['bodytext']);
но я не знаю, как я могу получить доступ к этой функции. я получил
Fatal error: Call to a member function parseFunc() on a non-object in /home/myuser/www/home/typo3/sysext/cms/tslib/class.tslib_pibase.php on line 1384
Как правильно это сделать? Как я могу получить доступ к функции pi_RTEcssText
? Должен ли я использовать класс? Есть ли другие способы сделать это без класса?
Я создал новый шаблон с TemplaVoila и определил lib.newscontent
как путь объекта TS.
includeLibs.user_news = fileadmin/templates/php_scripts/news/class.news.php lib.newscontent = USER_INT lib.newscontent { userFunc = user_news->main userFunc.bodytext.parseFunc < lib.parseFunc_RTE }
<? class user_news { var $cObj; private $conf; function main($content,$conf) { $this->conf = $conf; $this->setPreferences(); $content .= $this->aktuelleNews(); return $content; } private function aktuelleNews() { $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery( '*', // SELECT ... 'tt_news', // FROM ... 'pid=22 AND deleted=0 AND hidden=0', // WHERE... '', // GROUP BY... 'datetime DESC' // ORDER BY... ); $i = 1; $out_list = '<ul id="news">'; while ($data = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $date = date("dmY",$data['datetime']); $out_list .= '<li><a href="#section'.$i.'">'.$date.': '.$data['title'].'</a></li>'; $out_detail.= $this->outputnewsdetail($data,$i); $i++; } $out_list .= '</ul>'; return $out_list . $out_detail; } private function outputnewsdetail($result,$count){ $this->cObj->start($result, 'tt_news'); $bodytext = $this->cObj->stdWrap($result['bodytext'], $this->conf['bodytext']); $bodytext = $this->cObj->parseFunc($bodytext,$GLOBALS['TSFE']->tmpl->setup['lib.']['parseFunc_RTE.']); return $bodytext; } private function setPreferences() { } } ?>
include(PATH_site.'fileadmin/templates/php_scripts/news/class.news.php');
Почему часть рендеринга в главном шаблоне TS не работает? я использовал
$this->cObj->parseFunc($bodytext,$GLOBALS['TSFE']->tmpl->setup['lib.']['parseFunc_RTE.']);
чтобы получить мой результат.