TOXID cURL

[QUOTE=mgarms;57739]Das klingt sehr interessant. Ich baue gerade an einer Seite mit Drupal 6 für den Digitalverkauf einer Fachzeitschrift und habe Oxid als geeigneten und schick gestalteten Shop entdeckt.
Ich werde mich mal mit TOXIT beschäftigen und bei Erfolg von mir hören lassen…[/QUOTE]

Hallo,

nur so rein aus Interesse: Ist Drupal 7 nicht schon raus? Was sind die Gründe das mit Drupal 6 zu lösen?

Halte uns unbedingt auf dem Laufenden.

Gruß Joscha

Hallo Joscha,

Ein interessantes Modul. Ich habe es gerade getestet um eine Verbindung zwischen Oxid 4.5 und Drupal herzustellen. Die Installation hat wie beschrieben geklappt, und eine Test-XML_Datei, die ich erstmal auf meinem Server ablegte, wird korrekt geladen und im Template angezeigt! Schick.

Was ich konzeptuell noch nicht verstanden habe (vielleicht auch mangels tieferem Einblick in die Oxid-Konzeption), ist, wie ich verschiedene Seiten in meinem CMS als Textlieferant über die Smarty-Tags ansprechen kann.
Die Eigenschaft $this->sToxidCurlUrlParam = ‘xml.txt’; wird ja fest in der config-Datei gesetzt, interessanter und flexibler wäre es, die CMS-Zielseite im Smarty-Tag beim Anlegen einer Seite im Backend über den Pfad definieren zu können.

Geht das vielleicht?

Ich verstehe es bisher so, dass alle XML-Seiten in einer Datei zusammengefasst vom CMS geliefert werden (als Antwort auf die Anforderung von der fest definierten URL). Sie würde also jeder Anfrage komplett geladen, aber nur der jeweils angefragte Teil (Part1) ausgegeben?
Ist das so oder habe ich etwas falsch verstanden?

Wie ich Drupal dazu bekomme, XML statt HTML auszugeben muss ich erst noch herausfinden…

Ich gebe gern bei Erfolg hier Feedback.

Ja, Drupal 7 ist raus, aber es existieren je nach Anwendungszielen noch nicht alle wichtigen Module, und es gibt noch wenig gute Templates. Ich habe beides ausprobiert, bin angetan vom aufgeräumten Backend und der besseren Usability. Um bald zu Ergebnissen zu kommen, bleibe ich aber lieber bei dem System, in das ich mich die letzten Jahre eingearbeitet habe.

[QUOTE=mgarms;58249]
Ein interessantes Modul. Ich habe es gerade getestet um eine Verbindung zwischen Oxid 4.5 und Drupal herzustellen. Die Installation hat wie beschrieben geklappt, und eine Test-XML_Datei, die ich erstmal auf meinem Server ablegte, wird korrekt geladen und im Template angezeigt! Schick.
[/QUOTE]
Na, super, das klappt also schon. Damit hast du das schwerste schon hinter dir. :wink:

[QUOTE=mgarms;58249]
Was ich konzeptuell noch nicht verstanden habe (vielleicht auch mangels tieferem Einblick in die Oxid-Konzeption), ist, wie ich verschiedene Seiten in meinem CMS als Textlieferant über die Smarty-Tags ansprechen kann.
Die Eigenschaft $this->sToxidCurlUrlParam = ‘xml.txt’; wird ja fest in der config-Datei gesetzt, interessanter und flexibler wäre es, die CMS-Zielseite im Smarty-Tag beim Anlegen einer Seite im Backend über den Pfad definieren zu können.

Geht das vielleicht?
Ich verstehe es bisher so, dass alle XML-Seiten in einer Datei zusammengefasst vom CMS geliefert werden (als Antwort auf die Anforderung von der fest definierten URL). Sie würde also jeder Anfrage komplett geladen, aber nur der jeweils angefragte Teil (Part1) ausgegeben?
Ist das so oder habe ich etwas falsch verstanden?
[/QUOTE]
Also das stimmt nicht so. Der Parameter $this->sToxidCurlUrlParam dient dazu der URL eine Variable mitzugeben, um einen speziellen Seitentyp zu erzeugen.
Also zum Beispiel


$this->sToxidCurlUrlParam='?pagetype=print';

Damit kannst du auf der Standardseite eine “Achtung hier gibts nichts zu sehen, den Shop finden Sie hier”-Nachricht darstellen, falls jemand deine Drupalseite direkt aufruft.

Deine Navigation wird automatisch erzeugt. Vielleicht muss ich doch nochmal ne Illustration der Parameter machen, das lässt sich schön bildlich aufbereiten.

Grundsätzlich rendert aber dein CMS jede Seite, wie bisher auch, einzeln.

[QUOTE=mgarms;58249]
Wie ich Drupal dazu bekomme, XML statt HTML auszugeben muss ich erst noch herausfinden…
[/QUOTE]
Pack deinen Content am besten in ein CDATA, dann kann nichts schief gehen. Der Header muss dabei nicht unbedingt stimmen. Geht auch so.

Feedback ist immer gerne gesehen.

Es wird auch bald eine neue Version geben. Wir haben gestern, der aufmerksame Twitter-Follower wirds gesehen haben :wink: , die erste Integration von Wordpress damit gemacht. Da waren noch ein paar Ergänzungen nötig, bzw. sind Unsauberkeiten aufgefallen.

Gruß Joscha

Hallo Joscha,

danke für die schnelle Antwort! Ich bin bereits ein Stück weiter, Dupal bietet nämlich ein weitgehend passendes Modul (http://drupal.org/project/views_datasource), um Views (= im Backend interaktiv konfigurierbare SQL-Abfragen) als XML auszugeben, was die Ausgabe sehr flexibel macht. Die einzelnen Daten aus den Drupal-Nodes kann man hier auch als CDATA auszeichnen.
Einzig die von deinem Modul geforderte “flache Struktur” ist leider nicht einstellbar, so sieht der Output aus:

<?xml version=“1.0” encoding=“utf-8”?>
<toxid>
<autor>
<picture><![CDATA[sites/default/files/pictures/picture-1.jpg]]></picture>
<name><![CDATA[Erna Maier]]></name>
</autor>
</toxid>

kannst Du mir vielleicht einen Hinweis geben, an welcher Stelle im Modul Code das XML geparst wird, es müsste doch relativ einfach möglich sein, hier die eine zusätzliche Ebene noch korrekt abzufragen?

Wenn ich Dich richtig verstehe, wird in deiner Konstellation das CMS nur als sonst inaktiver Contentlieferant und -editor benutzt. Ich versuche allerdings in Drupal als primärer Anlaufstelle meine Fachzeitschrift darzustellen, und OXID per iframe dort integriert als Shop zu benutzen, was schon ganz vielversprechend aussieht. Konkret möchte ich nun die Autoreninformation, die in Drupal-Nodes gepflegt wird, neben den passenden Artikeln im Shop anzeigen. Ich möchte also die Autoren-ID aus OXID per URL übergeben, in Drupal sucht Views mit diesem Parameter den passenden Inhalt heraus -> XML, und OXID stellt sie per TOXID neben dem passenden Artikel dar…

Hab’s schon gefunden. Wenn man in die Objektmethode getCmsSnippet einen 2. Parameter $sublev einbaut …

/** Zeile 86 in core/toxidcurl.php
* returns the called snippet
*/
public function getCmsSnippet($snippet=null, $sublev=null)
{
if($snippet == null)
{
return ‘<strong style=“color:red;”>TOXID: Please add part, you want to display!</strong>’;
}else{
if($sublev == null)
{
return $this->_oSxToxid->$snippet;
}else{
return $this->_oSxToxid->$snippet->$sublev;
}
}
}

… kann man im template mit

[{ $toxid_curl_cmp->getCmsSnippet(autor,picture) }]<br>
[{ $toxid_curl_cmp->getCmsSnippet(autor,name) }]

erfolgreich auf die verschachtelte Ebene zugreifen.

Ich möchte wie gesagt zu jedem Artikel einen Individuelle XML-URL aufrufen könne, die von Autor abhängt. Deshalb hilft mir die feste Definition von $this->sToxidCurlUrlParam im config-file nicht weiter.

Ich habe also einen Vormittag drangesetzt und versucht, den OXID Herstellern ein weiteres Feld für einen Autor-ID zu verpassen um über die ID den zum Artikel zugehörigen Autor in Drupal abrufen zu können. Ich habe mich orientiert an dem Beitrag http://www.oxid-esales.com/forum/showthread.php?t=4832 bin aber letztlich gescheitert. Sobald ich wie dort beschrieben _addField in der Load-Funktion von oxManufacturer einfüge (egal ob im Code direkt oder per Modul) lassen sich die Hersteller im Backend nicht mehr laden. etc pp. Zu kompliziert…

Schließlich habe ich mich entschlossen, einfach die Hersteller-Kurzbeschreibung als Feld für die Autoren-ID zu benutzen und mit ihrer Hilfe alle Autorendaten aus Drupal zu holen. Das klappt!

Zunächst hole ich im Template per leicht ergänzter Methode loadCmsPage(mein Parameter) die XML-Daten. Ich habe der Funktion (zeile 69 in core/toxidcurl.php) einen optionalen Parameter mit gegegben und hier weiter unten eine Weiche eingebaut, damit mein Parameter und nicht der aus der config-Datei benutzt wird:

/**

  • returns raw string from CMS-page
    */
    protected function _readUrl($urlpfx=null)
    {
    $source = $this->_getToxidLangSource();

    $page = $this->getConfig()->getConfigParam(‘sToxidCurlPage’);
    if ($urlpfx){
    $param = $urlpfx;
    }else{
    $param = $this->getConfig()->getConfigParam(‘sToxidCurlUrlParam’);
    }
    $this->_sPageContent = file_get_contents($source.$page.$param);
    }

So fordere ich von Drupal die zum aktuell angezeigten Artikel passende Autoren-ID (=Hersteller) an, hänge sie “Argument” an die Anforderungs-URL, die in Drupal dem View zugeordnet ist (Beispiel: ‘…/autor_xml/1’) und erhalte die Autorendaten aus der dortigen SQL-Abfrage als XML zurück.

[

{ assign var=“sAutorid” value=$oManufacturer->oxmanufacturers__oxshortdesc->value }]
[{ $toxid_curl_cmp->loadCmsPage(“autor_xml/$sAutorid”)}]

Hiermit hole ich dann die passenden Bild oder Textdaten in die template-Anzeige.

[{ $toxid_curl_cmp->getCmsSnippet(autor,picture) }]<br>
[{ $toxid_curl_cmp->getCmsSnippet(autor,name)}]<br>

Was ich noch nicht ganz überblicke, ist, ob auf diese Weise nur eine Anforderung bei Drupal passiert, und die XML-Inhalte dann im toxid_curl_cmp-Objekt zwischengespeichert werden, der ob es uneffektiverweise mehrere Abfragen gibt. Immerhin funktioniert es. :slight_smile:

Falls es jemand nachvollziehen möchte, hänge ich unten zwei Screenshots von meiner Drupal6-Views-Konfiguration an.(Anmerkung: Zuerst das Modul http://drupal.org/project/views_datasource installieren)

[QUOTE=mgarms;58313]Ich möchte wie gesagt zu jedem Artikel einen Individuelle XML-URL aufrufen könne, die von Autor abhängt. Deshalb hilft mir die feste Definition von $this->sToxidCurlUrlParam im config-file nicht weiter.

Schließlich habe ich mich entschlossen, einfach die Hersteller-Kurzbeschreibung als Feld für die Autoren-ID zu benutzen und mit ihrer Hilfe alle Autorendaten aus Drupal zu holen. Das klappt!

Zunächst hole ich im Template per leicht ergänzter Methode loadCmsPage(mein Parameter) die XML-Daten. Ich habe der Funktion (zeile 69 in core/toxidcurl.php) einen optionalen Parameter mit gegegben und hier weiter unten eine Weiche eingebaut, damit mein Parameter und nicht der aus der config-Datei benutzt wird:
[/QUOTE]

Hast du eine Idee, wie man das etwas generischer halten kann, so dass wir das standardmäßig ins nächste Release mit aufnehmen können?
Spannend idt das ja allemal. Wenn du dich auf der Projects-Plattform registrierst, kannst du Änderungen auch ins SVN zurück spielen.

[QUOTE=mgarms;58313]
Was ich noch nicht ganz überblicke, ist, ob auf diese Weise nur [B]eine[/B] Anforderung bei Drupal passiert, und die XML-Inhalte dann im toxid_curl_cmp-Objekt zwischengespeichert werden, der ob es uneffektiverweise [B]mehrere[/B] Abfragen gibt. Immerhin funktioniert es. :slight_smile:
[/QUOTE]
Du hast mich da auf einen spannenden Punkt gestossen! Caching ist für ein größeres Projekt, dass wir damit realisieren möchten ein Thema, so dass etwas ist, was in die nächsten Versionen einfließen wird.

Gruß Joscha

Hallo,

es stehen ja noch ein paar Antworten aus.

Ich arbeite derzeit an der Version 1.1 (wird gleich ins SVN gestellt) und habe mir dazu nochmal einige deiner Fragen angeschaut.

[QUOTE=mgarms;58313]
Was ich noch nicht ganz überblicke, ist, ob auf diese Weise nur [B]eine[/B] Anforderung bei Drupal passiert, und die XML-Inhalte dann im toxid_curl_cmp-Objekt zwischengespeichert werden, der ob es uneffektiverweise [B]mehrere[/B] Abfragen gibt. [/QUOTE]
Erstmal hierzu: Der Aufruf der Seite passiert natürlich nur einmal beim initialisieren der Komponente mit der Funktion loadCmsPage(). ImMoment laufen Überlegungen um das Ergebnis auch zwischen zu speichern.

Dann schau dir doch mal die geänderte Funktion getCmsSnippet an: Ich habe eine XPathfunktion eingebaut. Mit der kannst du also wie folgt deine Daten abfragen:


[{ $toxid_curl_cmp->getCmsSnippet('autor/picture') }]

Bitte die Anführungszeichen beachten.

Gruß Joscha

Hallo,

bin noch ganz neu hier. Komme aus der osCommerce-Ecke! :wink:
Wir entwickeln gerade einen neuen OXID-Shop, der sich Header und Footer aus einem CMS holt. (hier Contao) Das CMS ist auf dem selben Server, aber auf einer anderen Subdomain. (Speed ist also kein großes Problem)

Das TOXID Modul ist eine feine Sache. Danke sehr!

Als kleines Dankeschön stelle ich dieses “sehr pragmatische” Script hier rein. Es wird jetzt keinen Umhauen, aber der eine oder andere wird damit garantiert seine Deadline retten! :wink:

Es ist simpel. Es ist dirty. Es funktioniert:

<?php

$contao_url = 'http://www.xxx.de/';

$nav_start_tag = '<!-- NAV_MAIN START -->';
$nav_end_tag = '<!-- NAV_MAIN END -->';

$footer_start_tag = '<!-- FOOTER START -->';
$footer_end_tag = '<!-- FOOTER END -->';

$topnav_start_tag = '<!-- NAV_TOPNAVIATION START -->';
$topnav_end_tag = '<!-- NAV_TOPNAVIATION END -->';

$footer_copyright = '(c) Hallo Welt';

/* --------------------- */


$html = implode ('', file($contao_url));

$navigation = $html;
$navigation = get_navigation($navigation);
$navigation = make_urls_absolute($navigation);
$navigation = fix_css_classes($navigation);

$footer     = $html;
$footer     = get_footer($footer );
$footer     = fix_css_classes($footer);
$footer     = make_urls_absolute($footer);
$footer     = remove_mod_breadcrumb($footer);


$topnav     = $html;
$topnav     = get_topnav($topnav);




echo 
"<?xml version=\"1.0\"?>
  <toxid>
    <navigation><![CDATA[$navigation]]></navigation>
    <footer><![CDATA[$footer]]></footer>
    <topnav><![CDATA[$topnav]]></topnav>
</toxid>";


/* --------------------- */


// the start and end tag occur several time, the this needs to be greedy!
function get_navigation($html) {
  global $nav_start_tag, $nav_end_tag;

  preg_match("/".preg_quote($nav_start_tag)."(.*)".preg_quote($nav_end_tag)."/is", $html, $matches);
  $html = $matches[0];
  
  $html = str_replace($nav_start_tag, '', $html);
  $html = str_replace($nav_end_tag, '', $html);
  
  return $html;
  
}

// this can be ungreedy
function get_footer($html) {
  global $footer_start_tag, $footer_end_tag;

  preg_match("/".preg_quote($footer_start_tag)."(.*)".preg_quote($footer_end_tag)."/isU", $html, $matches);
  $html= $matches[0];
  $html = preg_replace('/<div class="copyright(.*)<\/div>/isUe', "add_copyright('\\0')", $html); 
  
  $html = str_replace($footer_start_tag, '', $html);
  $html = str_replace($footer_end_tag, '', $html);
  
  return $html;
}

// this can be ungreedy
function get_topnav($html) {
  global $topnav_start_tag, $topnav_end_tag;

  preg_match("/".preg_quote($topnav_start_tag)."(.*)".preg_quote($topnav_end_tag)."/isU", $html, $matches);
  $html= $matches[0];
    
  $html = str_replace($topnav_start_tag, '', $html);
  $html = str_replace($topnav_end_tag, '', $html);
  
  return $html;
}

function add_copyright($html) {
  global $footer_copyright;
  
  $html = stripslashes($html);
  $html = str_replace('</p>', "$footer_copyright</p>", $html );

  return $html;
}

function make_urls_absolute($html) { 
  global $contao_url;
  
  $html = str_replace('="index.php', '="'.$contao_url.'index.php', $html );  
  $html = str_replace('="system', '="'.$contao_url.'system', $html );  
  
  return $html;
}

function fix_css_classes($html) {

  $html = str_replace('class="left"', 'class="contaoLeft"', $html );
  $html = str_replace('class="right"', 'class="contaoRight"', $html );
  $html = str_replace('id="footer"', 'id="contaoFooter"', $html );  

  return $html;
}

function remove_mod_breadcrumb($html) {

  $html = preg_replace('/<div class="mod_breadcrumb(.*)<\/div>/isU', "", $html); 
  return $html;
}


Beste Grüße,
Johannes

Hi,

super! Ich habe zwar noch nie ein Projekt mit Contao realisiert aber es scheint ja zu funktionieren. 1.000 Dank dir für den Code! Was passiert denn, wenn ich direkt die Contao-Seite aufrufe? XML-Ausgabe?

Wo ist denn der Shop zu sehen? Würde mich natürlich interessieren, was ihr daraus gemacht habt.

Gruß Joscha

Ich hab’ zu danken! :slight_smile:

Nunja, es ist nicht wirklich ein Contao-Modul. Aus zeitlichen Gründen haben wir einfach ein paar Marker in den Quelltext gemacht: <!-- START -->Interessanter Content<!-- END --> Das Script sollte auf dem selben Webspace liegen, wo auch die ge-“screenscrapte” Webseite liegt.

Das sieht dann so aus:
http://dach-germany.com/_toxid.php

Eigentlich hatten wir geplant, nochmal ein richtiges Modul zu schreiben. Doch jedes Modul wäre für den Fall mehr Aufwand ohne mehr Nutzen geworden. :wink:

Das Ergebnis (80% abgeschlossen):
http://shop.dach-germany.com/

Grüße,
Johannes

Hallo,
zu allererst wollte ich die tolle Arbeit loben, die hier geleistet wurde. Echt fantastisch!
Nun - ich habe kleinere Anregungen und auch Fragen.

1.: Leider kann ich mich für den Bugtracker registrieren, da das Captcha nicht funktioniert. Ich wollte nämlich einen Fix bereitstellen für Hoster (so wie meiner), der ein fopen auf URLs nicht erlaubt:
In der Datei core/toxidcurl.php um Zeile 110 herum:

$this->_sPageContent = file_get_contents($source.$page.$param);

Ich schreibe hier mal meine “neue Version” der Funktion hin: Zunächst wird überprüft, ob file_get_contents funktioniert, bzw. erlaubt ist. Danach kommt ein Fallback mit cURL.

	protected function _readUrl()
	{
		$source = $this->_getToxidLangSource();

		$page = $this->getConfig()->getConfigParam('sToxidCurlPage');

		$param = $this->getConfig()->getConfigParam('sToxidCurlUrlParam');
		$file_contents = @file_get_contents($source.$page.$param);
		if ($file_contents  === FALSE) { 
			$ch = curl_init();
			$timeout = 5; // set to zero for no timeout
			curl_setopt ($ch, CURLOPT_URL, $source.$page.$param);
			curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
			curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
			$file_contents = curl_exec($ch);
			curl_close($ch);
		}
		$this->_sPageContent = $file_contents;
	}

Dadurch wird curl verwendet.

2.: Ich habe Probleme die TOXID richtig zum Laufen zu bekommen:
Zunächst habe ich ein Typo3 mit den Beispieldaten aufgesetzt: http://goo.gl/fifgN
Die Ausgabe der XML-Datei sieht z.Zt. wie folgt aus:

<toxid>
<pagetitle>Welcome to TYPO3</pagetitle>
<navi>
<item>
<link>get-started.html</link>
<title>
<![CDATA[ Welcome to TYPO3 ]]>
</title>
</item>
<item>
<link>about-typo3.html</link>
<title>
<![CDATA[ About TYPO3 ]]>
</title>
</item>
<item>
<link>features.html</link>
<title>
<![CDATA[ Features ]]>
</title>
</item>
<item>
<link>customizing-typo3.html</link>
<title>
<![CDATA[ Customizing TYPO3 ]]>
</title>
</item>
<item>
<link>resources.html</link>
<title>
<![CDATA[ Resources ]]>
</title>
</item>
<item>
<link>examples.html</link>
<title>
<![CDATA[ Examples ]]>
</title>
</item>
<item>
<link>feedback.html</link>
<title>
<![CDATA[ Feedback ]]>
</title>
</item>
</navi>
<content>
<![CDATA[
<div id="c202" class="csc-default" ><div id="gettingStarted">
 <h1><em class="themeColorForeground">Congratulations</em>, you have succesfully installed TYPO3</h1>
 <h2>So—what's next ?</h2>
 <p id="gettingStartedStepOne">Grab a cup of coffee and start browsing through this site to learn why TYPO3 is the most powerful open source content management system.</p>
 <p id="gettingStartedStepTwo">Check out the sample pages in the "examples" section of this website or…</p>
 <p id="gettingStartedStepThree"><a href="typo3/" title="You can login as any of the backend users listed to the right." class="themeColorBackground startButton">Log into TYPO3</a></p>
 <p id="gettingStartedStepFurtherReading"> —<a href="http://typo3.org/community/">Get involved!</a></p>
 </div></div>
]]>
</content>
</toxid>

Hierzu nochmal das dazugehörige TypoScript mit dem ich die XML-Ausgabe erstellen lasse:

xml = PAGE
xml {
  typeNum = 123
  config {
    # Standard-Header deaktivieren
    disableAllHeaderCode = 1
    # keine Tags in XHTML umwandeln
    xhtml_cleaning = none
    admPanel = 0
    metaCharset = utf-8 
    # Inhalt und Zeichensatz definieren
    additionalHeaders = Content-Type:text/xml;charset=utf-8
  }
  10 = COA
  10 {
    wrap = <?xml version="1.0" encoding="UTF-8" standalone="yes" ?><toxid>|</toxid>
    # Navi
    10 = HMENU
    10 {
      special = directory
      special.value = 1
      1 = TMENU
      1 {
        wrap = <navi>|</navi>
        NO {
          doNotLinkIt = 1
          stdWrap.cObject = COA
          stdWrap.cObject {
            wrap = <item>|</item>
            5 = TEXT
            5.wrap = <link>|</link>
            5.typolink.parameter.data = field:uid
            5.typolink.returnLast = url
            10 = TEXT
            10.wrap = <title><![CDATA[|]]></title>
            10.data = field:title
          }
        }
      }
    }

    #Seitentitel
    5 = TEXT    
    5.data =  page:title
    5.wrap = <pagetitle>|</pagetitle>
    
    #Inhalte    
    styles.content.get = CONTENT
    styles.content.get {
      table = tt_content
      select.orderBy = sorting
      select.where = colPos=0
      select.languageField = sys_language_uid
    }
    20 = COA
    20{
      20 < styles.content.get
      20.wrap = <content><![CDATA[|]]></content>
    }
    
  }

Soweit funktioniert das Ganze auch wunderbar. Kommen wir nun zum Oxid-Teil. Ich habe die Anleitung befolgt und in der Config.inc.php folgendes hinzugefügt:

    // your URL-Snippet to dectect TOXID-Pages
    $this->aToxidCurlSeoSnippets = array(
                                    '0' => 'toxid-curl',
                                  );
    
    // URL to your CMS
    $this->aToxidCurlSource    = array(
                                '0' =>  'http://european-lumber.com/toxid/typo3/',

                              );
    // Additional Params for URL
    $this->sToxidCurlUrlParam = '?type=123';

Das Auslesen funktioniert wunderbar, eine Verbindung kann hergestellt werden. Ich lasse dafür aus dem XML-Tree den Pfad “content” direkt im Header-Template ausgeben:

out/azure/tpl/layout/header.tpl:

<div id="header" class="clear">
[{ $toxid_curl_cmp->getCmsSnippet(content) }] 
[...]

Nun zum eigentlichen Problem:
Da ich nun wirklich noch nichts mit OXID gemacht habe und dies mein erstes Projekt ist, in dem beide System miteinander verschmelzen (bisher habe ich mit nur Typo3 gearbeitet) sollen, habe ich nicht wirklich Erfahrung mit OXID und es kann dementsprechend sein, dass ich Verständnisfragen habe oder aber totalen Mist baue / gebaut habe.

Was muss ich tun (ein Wink mit dem Zaunpfahl täte es vermutlich am Anfang - man will ja lernen), damit ich
1.: Die Navigation um die Menüpunkte von Typo3 erweitern kann.
2.: Wie kann ich den Inhalt von Typo3 darstellen lassen?

Sowohl Typo3 als auch OXID sind gestern heruntergeladen und frisch installiert worden, sollten dementsprechend auch relativ aktuell sein :wink:

Ich hoffe, dass hier mir helfen könnt.

Gruß
Friedemann

Hallo,

gerne geschehen!

Die Variante cURL ist bereits hier in der Beta so umgesetzt. Die soll mit einigen neuen Features im Oktober kommen. Werde später noch einen Blick auf deinen Code werfen. Wir werden keine Fallbackvariante implementieren, da ja cURL sowieso zu den Systemanforderungen von OXID gehört.

Zu deinem konkreten Lösung:
Sieht erstmal sehr gut aus!
Lass dein Menü einfach als vollständiges normales HMENU mit HTML rendern und binde es an der entsprechenden Stelle als

[{ $toxid_curl_cmp->getCmsSnippet(navi) }] 
[...]

Genug Wink? :wink:

Gruß Joscha

Hallo Joscha,
danke für den Wink. Habe die Navigation einbauen können. Nur wird mir der Inhalt beim Klicken auf einen Link nicht dargestellt. Stattdessen werde ich auf die Seite “index.php?cl=start&redirected=1” umgeleitet. Ist das so gewollt oder liegt da noch etwas im Argen?

Gruß
Friedemann

Die Umleitung kommt weil ein Fehler auftritt. Steht was im Exception Log?

Moin, sorry, dass ich mich jetzt erst melde. Es lag daran, dass das Template fehlte :slight_smile:

Hallo,

kurze Info: initOS hat eine Integration für Joomla! realisiert. Weitere Informationen gibt es im Blog der Agentur.

Gruß Joscha

Hallo zusammen,
möglicherweise möchten wir einen größeren OXID-Shop aufsetzen und dafür TOXID nutzen. Leider ist uns das grundlegende Zusammenspiel zwischen OXID und TYPO3 nicht ganz klar und folgende Fragen stellen sich uns:

[B]Allgemein[/B]

  1. Ist OXID das führende System?
  2. Heißt es, dass im OXID-Backend das TYPO3-Backend integriert is

[B]
Falls OXID das führende System ist und die Typo3-Inhalte nur angezogen werden[/B]
3. Können OXID-Inhalte (z.B. eine Kategorieseite mit Produktauflistungen) und CMS-Inhalte aus TYPO3 auf einer Seite (URL) ausgespielt werden, z.B. oben der CMS-Inhalt und unten die Shopinhalte? Oder können CMS-Inhalte per Regel auf bestimmten Produktdetailseiten ausgeliefert werden? Wo wird dies eingestellt/definiert?
4 Welche Erfahrungswerte gibt es mit der Auslastung, wenn OXID das führende System ist?

[B]Falls es kein führendes System gibt:[/B]
5. Welche Daten/Attribute (Produktbeschreibung, Bilder, Inhalte aus Modulen, Bestand, Preis etc.) aus dem OXID-Shop können in die CMS-Seiten eingebunden werden? Wie erfolgt die Definition dieser Daten? Fallback-Verhalten (Produkt nicht mehr im Shop - was passiert auf der CMS-Seite?)
6. Welche Daten aus dem CMS können in die OXID-Seiten eingebunden werden? Wie erfolgt die Definition dieser Daten?

  1. Wird die Session zwischen den beiden System gehalten? D.h. wenn ein Produkt im Warenkorb liegt und der Anwender anschließend ins CMS wechselt, läuft die Session im Shop dann aus, oder wird diese “am Leben” gehalten?
  2. Wie ist das ganze aus SEO-Sicht?

Besten Dank für eure Mithilfe,
W. Stolzenburg


www.Commerce21.com

Hallo,

Ich gehe es kurz durch:

  1. Es gibt beide Versionen. TOXID cURL hat OXID als führendes System.

  2. Nein, die Systeme laufen sauber getrennt.

  3. Ja, das geht. Zum Beispiel Produkte können als Content-Elemente platziert werden.

  4. Das hängt stark mit dem CMSystem zusammen. In der Regel sind bei einem normalen Setup die TOXID-Seiten schneller als z.B. Kategorieseiten.

  5. Seo-Urls sind sogar zwingend notwendig. Nach aussen sieht alles aus wie EIN Shop / Portal. Ist also so gut wie OXID bzw. die des Templates.

Gruß Joscha