Zum Inhalt springen

typolink über eid

Erstellt am 13. September 2008 · 12 Antworten · letzte Antwort am 24. November 2011

Tags: Frage

esman ·

Ich hole eine seite vom server mit hilfe von ajax und eid.
Das script das ich aufrufe soll unter anderem einen typolink generieren.

Mein Problem ist das ich einen typolink für die defaultsprache bekomme. Ich möchte jetzt aber einen für, z.B. Deutsch, haben. #angry#

was bis jetzt funktioniert:
- ich habe eine Verbindung zur Datenbank
- habe den fe_user geladen
- kann links erzeugen (nur immer in der defaultsprache)

kann mir jemand helfen ??

esman ·

sorry,

hatte diesen post total vergessen, obwohl das noch akut ist.

Also das Script:

require_once(PATH_t3lib . 'class.t3lib_page.php');
require_once(PATH_tslib . 'class.tslib_pibase.php');


class ajax_order extends tslib_pibase {

	function main(){

		tslib_eidtools::connectDB(); //Connect to database
		$feUserObj = tslib_eidtools::initFeUser(); // Initialize FE user object

		$GLOBALS[TSFE]->fe_user = $feUserObj;
		$this->cObj = t3lib_div :: makeInstance("tslib_cObj");


		echo $this->pi_getPageLink(100);

	}
}


$output = t3lib_div::makeInstance('ajax_order');
echo $output->main();

ich hoffe das hilft weiter..

dyne ·

Also ich hatte das gleiche Problem (bin deshalb auf das Thema gestoßen). Ich konnte es aber (selbst! *stolz*) lösen:

Das sind die Klassen die ich initialisiert habe:

require_once(PATH_tslib.'class.tslib_content.php');
require_once(PATH_t3lib.'class.t3lib_page.php');
require_once(PATH_tslib.'class.tslib_pibase.php');

Und dann in der Klasse:

$this->feUserObj = tslib_eidtools::initFeUser();
$this->cObj = t3lib_div::makeInstance('tslib_cObj');
$GLOBALS['TSFE']->sys_page = t3lib_div::makeInstance('t3lib_pageSelect');
$GLOBALS['TSFE']->tmpl = t3lib_div::makeInstance('t3lib_TStemplate');

Die letzten beiden Zeilen sind wichtig um die typolink-Funktion benutzen zu können.

esman ·

Danke für die Antwort.

Ich bekomme leider nur Teilweise den gewünschten link.

Folgendes:

require_once(PATH_t3lib . 'class.t3lib_page.php');
require_once(PATH_tslib . 'class.tslib_content.php');
require_once(PATH_tslib . 'class.tslib_pibase.php');
$this->feUserObj = tslib_eidtools::initFeUser();
$this->cObj = t3lib_div::makeInstance('tslib_cObj');
$GLOBALS['TSFE']->sys_page = t3lib_div::makeInstance('t3lib_pageSelect');
$GLOBALS['TSFE']->tmpl = t3lib_div::makeInstance('t3lib_TStemplate');

echo $this->pi_getPageLink(127);

--> www.meine-domain.de/?id=127&no-cache=1

Da ich realurl verwende hat mich das erstmal verwundert.

wenn ich folgendes dazu nehme...

require_once(PATH_t3lib . 'class.t3lib_stdgraphic.php');
require_once(PATH_tslib . 'class.tslib_gifbuilder.php');
require_once(PATH_t3lib .'class.t3lib_befunc.php');

...bekomme ich auch schönere namen
--> www.meine-domain.de/de/shopping.html

jetzt habe ich das Problem das ich in diesem letzten link eine mischvariante erzeugt bekomme. Da steht "de" für deutsch, aber der titel ist englisch, obwohl es eine deutsche Version gibt.

Zum verzweifeln das ganze...

steffenk ·

wozu das ganze? eID ist mehr für einfache Ajax-Scripts. Wenn man pibase, cObj etc. braucht, sollte man seinen Request über type machen, dan hat man auch alles korrekt initialisiert.

just2b ·
Tetramatrix schrieb

eID hat doch mit Ajax gar nichts zu tun!

aber es wird in aller regel für das verwendet und ist auch dafür gedacht

dyne ·

Ich muss beispielsweise nur etwas Content nachladen, der aber auch Links enthält. eID bietet sich da doch an, oder nicht?
So wie ichs gepostet hab, funktionierts für meine Zwecke, allerdings habe ich bisherher auch noch kein realurl eingebaut.

Edit:

steffenk schrieb

Wenn man pibase, cObj etc. braucht, sollte man seinen Request über type machen, dan hat man auch alles korrekt initialisiert.

Nochmal drüber nachgedacht.. hast du dafür einen Link? Ich habe mich noch nicht so intensiv mit den types auseinandergesetzt, ich weiß nur, dass wohl abhängig vom type die Page unterschiedlich gerendert werden kann, beispielsweise für Druckansichten etc.

steffenk ·

ganz einfach:

myPage = PAGE
myPage {
  typeNum = 977
  10 < plugin.tx_myext_pi1

  config {
    disableAllHeaderCode = 1
    additionalHeaders = Content-type:application/xml
    xhtml_cleaning = 0
    admPanel = 0
  }
}

im Plugin fragst Du das einfach ab:

$type = $GLOBALS['TSFE']->type;
nixda ·

Frage: Hat jemand im Zusammenhang mit eID und TypoLink schon mal folgende Fehlermeldung gesehen ? Typo3 4.2.6

Fatal error: Call to a member function getPage_noCheck() on a non-object in 
[...Path...]/typo3/sysext/cms/tslib/class.tslib_content.php on line 5200
mothersh1p ·
nixda schrieb

Frage: Hat jemand im Zusammenhang mit eID und TypoLink schon mal folgende Fehlermeldung gesehen ? Typo3 4.2.6

Fatal error: Call to a member function getPage_noCheck() on a non-object in 
[...Path...]/typo3/sysext/cms/tslib/class.tslib_content.php on line 5200

Ich suche für CoolURL einen code. Hier mal ein all-inclusive code für RealUrl:

<?php

require_once(PATH_tslib.'class.tslib_pibase.php');

class tx_myext_eID extends tslib_pibase{

function init(){

	require_once(PATH_tslib.'class.tslib_content.php');
	require_once(PATH_t3lib.'class.t3lib_page.php');
	require_once(t3lib_extMgm::extPath('realurl').'class.tx_realurl.php');
	tslib_eidtools::connectDB();
	$this->realurl = t3lib_div::makeInstance('tx_realurl');
	$GLOBALS['TSFE']->sys_page = t3lib_div::makeInstance('t3lib_pageSelect');
	$GLOBALS['TSFE']->tmpl = t3lib_div::makeInstance('t3lib_TStemplate');
	$GLOBALS['TSFE']->config['config']['tx_realurl_enable'] = 1;
	$this->cObj = t3lib_div::makeInstance('tslib_cObj');

}

function main(){
	$this->init();
	// .. add you functionality here
	// .. for links use $this->geturl($pid, $params) where $params are $key => $value pairs
}

function geturl($pid, $params){
	$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'pages', 'uid = '.(int)$pid);
	$pagerow = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
	$conf['LD'] = $GLOBALS['TSFE']->tmpl->linkData($pagerow, '', 0, 'index.php', '', t3lib_div::implodeArrayForUrl('',$params);
	$this->realurl->encodeSpURL($conf, $this);
	$url = $conf['LD']['totalURL'];
	return $url;
}

}

$eID = t3lib_div::makeIntance('tx_myext_eID');
$content = $eID->main();
echo $content;
?>