Wordpress integrieren

boaa-group

Sehr aktives Mitglied
28. Dezember 2007
4.932
9
Thailand, Bangkok
AW: Wordpress integrieren

Dann holen wir das Thema mal wieder hoch. Nachdem ich unseren Shop neu umgesetzt habe, hab ich auch wieder mit dem Worpress Template begonnen...

Mittlerweile bin ich schon recht weit, einige Dinge fehlen allerdings noch und müssen verbessert werden...

Hat es mittlerweile schon jemand geschafft die Userdatenbank von Shop2 mit Wordpress zu vereinen?

lg
 

boaa-group

Sehr aktives Mitglied
28. Dezember 2007
4.932
9
Thailand, Bangkok
AW: Wordpress integrieren

Wird wohl in der nächsten Version des JTL Shop sowas ähnliches enthalten sein nehm ich mal an. Wär nett über nen kleinen Hinweis gerne auch per PN, auf Grund von Vermutungen kann ich schwer die Arbeit einstellen ;)
 

ralph

Aktives Mitglied
30. Juni 2009
267
0
AW: Wordpress integrieren

Entschuldige bitte Jörg, ich nehme an, du gehörst zum geschlossenen Kreis der Shop-Tester. Ich werde WP integrieren, weil es eine ausgereifte Blogsoftware ist, die sich in meinem shop bewährt hat. Zeit ist Geld, auf Luftschlösser zu bauen, kann und will ich mir nicht leisten.
Ich fürchte, mit solchen Andeutungen ist niemandem geholfen, schon gar nicht denen, die schon seit Monaten "ein bisschen" warten. Dazu gehöre ich aber nicht.
 

Dealux-GmbH

Sehr aktives Mitglied
5. März 2007
8.676
7
Düsseldorf
AW: Wordpress integrieren

WP ist aber inzwischen auch ziemlich aufgebläht und überladen. Ich hab es damals selber mal versucht in den Shop zu integrieren, aber wenn du das SEO-Modul hast, kannst du eine vernünftige, saubere Integration von Wordpress vergessen.
 

bastibeckr

Aktives Mitglied
19. Juli 2010
15
0
AW: Wordpress integrieren

Hallo,

ich häng mich mal an dieses Thema ran - in der Hoffnung dass jemand mir antwortet.
Ich möchte gerne den JTL- Shop mit Wordpress verschmelzen. Das Prinzip "gleiches Design" finde ich an sich gut.
Also 2 getrennte Templates, die über das CSS so gestaltet werden, dass der Besucher nicht merkt, dass er vom Blog zum Shop wechselt.

Ein wichtiges Feature, welches man aber vielleicht leicht ergänzen könnte, fehlt mir jedoch bei dieser Lösung noch:
Ich möchte gerne im Wordpress-Blog die Möglichkeit haben, Produkte "inline" einzubinden. Am liebsten wäre mir dafür eine Art API:

Ich "frage" den JTL-Shop nach bestimmten Produkten, diese werden mir als JS-Objekt oder XML geliefert, ich kann diese Daten dann formatieren, wie ich möchte. Eine direkte "in-den-Warenkorb" - Funktion muss erstmal gar nicht sein, wäre aber schön.

Frage:
Ist es ohne Weiteres möglich, Produkte z.B. mittels SQL-Abfrage oder (besser) einer Art API-Funktion abzufragen?


Für Wordpress gibt es die Möglichkeit, eine Header-Datei in einer beliebigen PHP-Datei zu includen, somit hat man alle WP-Funktionen zur Verfügung, um z.B. Blog-Artikel auszugeben.
Somit ist (einigermaßen) gewährleistet, dass man nicht durch fehlerhafte Abfragen oder sonstige Fehler, die sich einschleichen können, Sicherheitslücken generiert. (Wenn jemand was bzgl. Wordpress wissen möchte, gerne fragen, hier weiß ich mehr als über den Shop)

Es wird ja im JTL-Shop sehr viel abgefragt:
Darf der Benutzer den Preis sehen? Darf er das Produkt in den Warenkorb legen? Ist das Produkt überhaupt "öffentlich"? Welchen Preis sieht der Kunde? usw.

Am tollsten fände ich es, wenn man "einfach" eine Art Header- oder Init-Datei includiert, welche dann Zugriff auf die Produkt-Ausgabe liefert:
z.B.:
PHP:
include('/shop/jtl-functionen-ausserhalb-nutzen.php');
query_product('id=14&show_price=true'); // Produkt-Nummer 14 mit Preis
get_category_products('cat=3&count=10') // 10 Produkte der Kategorie 3
und man erhält ein Array oder ein Objekt mit den Produktdaten.

Danke fürs Lesen. Ich hab momentan noch ein "Konkurrenz"-System, mit welchem ich mich herumschlagen muss, JTL-Shop ist mir um einiges lieber. Bin leider recht neu, was XT-Commerce - ähnliche Systeme angeht, vielleicht erbarmt sich trotzdem jemand und beantwortet meine Frage(n)....

Cheers Basti
 

ralph

Aktives Mitglied
30. Juni 2009
267
0
AW: Wordpress integrieren

Also eine direkte Verschmelzung habe ich nie angestrebt. Ich wollte mehr eine Einbindung auf Templatebasis. JTL- Shop, dreispaltig und WP-Template dreispaltig. Die jeweils rechte Spalte ist identisch, so dass auch im Blog Warenkorb, "zuletzt gesehen" usw. angezeigt werden. Dazu muss beim Starten des Blogs ein überschaubarer Teil des shops mitgeladen werden, eben alles, was man zum Anzeigen in der rechten Spalte braucht. Alles mit smarty in einer Variable vorhalten und diese in Wordpress durchschleifen und in sidebar.php ausgeben. Keine Ahnung, ob das elegant ist, es funktioniert.
Das was du willst wäre mir zu kompliziert, in JTL-shop3 wird auch ein Info-(blog-)bereich enthalten sein, vielleicht hat sich dein Wunsch dann schon erledigt.
 

bastibeckr

Aktives Mitglied
19. Juli 2010
15
0
AW: Wordpress integrieren

Ja das ist doch schonmal ein Anfang, danke für die Antwort.
Kannst du mir kurz sagen, welcher "überschaubare Teil des Shops" geladen werden muss, um diese Funktionalität herzustellen? Das würde ja bereits reichen.

Ich hab mir überlegt ein Wordpress Plugin zu basteln, welches die Informationen via AJAX o.Ä. abfrägt.
Der "Überschaubare Teil des Shops" müsste dann die Daten liefern - sprich einfach unformatiert, jedoch in einer strukturierten Form an Wordpress übergeben... (PHP-Array, JS-Objekt, etc.)

Wichtig für mich wäre nur, möglichst wenig Ballast mit zu laden. Mein Gedanke war ja, dass vielleicht jemand etwas ähnliches bereits versucht hat, wo man anknüpfen könnte, ohne selbst das Rad neu zu erfinden...

Merci!
 

ralph

Aktives Mitglied
30. Juni 2009
267
0
AW: Wordpress integrieren

Ich habe das nicht dokumentiert. Ich habe damit angefangen, im Blog den ganzen Shop mitzuladen, um dann per trial & error auszusortieren. Ich bin deshalb auch nicht sicher, wieviel Ballast dabei noch an Bord ist. Wenn das für dich interessant ist, versuche ich das morgen mal nachzuvollziehen und schicke die Dateien.
 

ralph

Aktives Mitglied
30. Juni 2009
267
0
AW: Wordpress integrieren

Unter Integration kann man ja vielerlei verstehen. Für mich ist eine Zusammenführung der Datenbanken unwesentlich, da Blogbesucher nicht zum kommentieren eingeloggt sein müssen. Wer legt schon ein Benutzerkonto an, um einen Kommentar zu schreiben. Mir ging es darum, dass Shop und Blog durchaus getrennt sind, beide ja auch eigene Kategorien haben, aber immer das Wesentliche, nämlich der Warenkorb im blick und anklickbar ist. Wenn dann auch noch der zuletzt gesehene Artikel und/oder ein Topartikel am Rande zu sehen ist, bin ich zufrieden.

Shop3 geht da einen etwas anderen Weg, so weit ich das beurteilen kann. Also bitte, hier stelle ich meine Lösung zu Diskussion.

- shop (inkl. seomodul) in / installiert
- angepasstes JTL-Shop2-Template
- WP in Verzeichnis /blog installiert
- dreispaltiges WP-Template, identisch mit dem shop-template, rechte Spalte (sidebar_right.php) vorerst leer

Die Dateien:

/blog.php
/templates/MT/blog.tpl
/blog/wp-content/themes/MT/sidebar_right.php

blog.php:
PHP:
<?php
define("PFAD_ROOT","/pfad/zum/document/root/");
define("URL_SHOP","http://www.meineurl.xx");

define("DB_SHOP_HOST","xxxxxxxxxxxxx");
define("DB_SHOP_NAME","xxxxxxxxxxxxx");
define("DB_SHOP_USER","xxxxxxxxxxxxx");
define("DB_SHOP_PASS","xxxxxxxxxxxxx");
require_once($_SERVER['DOCUMENT_ROOT']."includes/defines.php");

//standard includes
require_once(PFAD_ROOT.PFAD_CLASSES_CORE."class.core.NiceDB.php");
require_once(PFAD_ROOT.PFAD_CLASSES_CORE."class.core.Session.php");
require_once(PFAD_ROOT.PFAD_CLASSES."class.JTL-Shop.Kategorie.php");
require_once(PFAD_ROOT.PFAD_CLASSES."class.helper.ArtikelListe.php");

//includes für Bestellvorgänge
require_once(PFAD_ROOT.PFAD_CLASSES."class.JTL-Shop.Artikel.php");
require_once(PFAD_ROOT.PFAD_CLASSES."class.JTL-Shop.Preise.php");
require_once(PFAD_ROOT.PFAD_CLASSES."class.JTL-Shop.Warenkorb.php");
require_once(PFAD_ROOT.PFAD_CLASSES."class.JTL-Shop.WarenkorbPos.php");
require_once(PFAD_ROOT.PFAD_CLASSES."class.JTL-Shop.WarenkorbPosEigenschaft.php");

//globale Werkzeuge
require_once(PFAD_ROOT.PFAD_INCLUDES."tools.Global.php");
require_once(PFAD_ROOT.PFAD_INCLUDES."sprachfunktionen.php");

//datenbankverbindung aufbauen
$DB = new NiceDB(DB_SHOP_HOST, DB_SHOP_USER, DB_SHOP_PASS, DB_SHOP_NAME);
//session starten
$session = new Session();

//smarty lib
require_once(PFAD_ROOT.PFAD_SMARTY."Smarty.class.php");
//global lang file
require_once(PFAD_ROOT.PFAD_LANGUAGE.$_SESSION["cISOSprache"].".php");

//Smarty Objekt bauen
$smarty = new Smarty;
$smarty->caching = 0;
$smarty->debugging = SMARTY_DEBUG_FRONTEND;
$smarty->template_dir = PFAD_ROOT.PFAD_TEMPLATES.$_SESSION["ShopStandardtemplate"].'/';
$smarty->compile_dir = PFAD_ROOT.PFAD_COMPILEDIR.$_SESSION["ShopStandardtemplate"].'/';
//if (!file_exists(PFAD_ROOT.PFAD_COMPILEDIR.$_SESSION["ShopStandardtemplate"]))
	//mkdir(PFAD_ROOT.PFAD_COMPILEDIR.$_SESSION["ShopStandardtemplate"]);
$smarty->config_dir = $smarty->template_dir.'lang/';

//require_once(PFAD_INCLUDES."seite_inc.php");
require_once("includes/seite_inc.php");
$AktuelleSeite = "BLOG";

//einstellungen holen
$Einstellungen = getEinstellungen(array(CONF_GLOBAL,CONF_KUNDEN));
//hole Link
$loginSichtbarkeit=" AND cSichtbarNachLogin='N' ";
if ($_SESSION['Kunde']->kKunde>0)
	$loginSichtbarkeit="";
$Link = $GLOBALS["DB"]->executeQuery("select * from tlink where kLink=".$kSeite." $loginSichtbarkeit and (cKundengruppen is NULL or cKundengruppen like \"%".$_SESSION['Kundengruppe']->kKundengruppe.";%\")",1);

//Besuch setzen
//setzeBesuch("kLink",$Link->kLink);

if ($Link->nLinkart==LINKTYP_EXTERNE_URL)
{
	if (session_notwendig())
		$sid="&".SID;
	if (!standardspracheAktiv())
	{
		$lang = "&lang=".$_SESSION["cISOSprache"];
	}
	header('Location: '.$Link->cURL.'?'.$lang.$sid);
	exit;
}
$Link->Sprache = $GLOBALS["DB"]->executeQuery("select * from tlinksprache where kLink=".$Link->kLink." and cISOSprache=\"".$_SESSION['cISOSprache']."\"",1);

//spezifische assigns
$smarty->assign('Navigation',createNavigation($AktuelleSeite, 0, 0, $Link->Sprache->cName, $requestURL));
$smarty->assign('Einstellungen',$Einstellungen);
$smarty->assign('Link',$Link);
$smarty->assign('requestURL',$requestURL);
$smarty->assign('sprachURL',$sprachURL);
if ($Link->nLinkart==LINKTYP_STARTSEITE)
{
	$AktuelleSeite = "STARTSEITE";
	$smarty->assign('StartseiteBoxen',gibStartBoxen());
	$smarty->assign('Navigation',createNavigation($AktuelleSeite));
}
elseif ($Link->nLinkart==LINKTYP_AGB)
{
	$smarty->assign('AGB',gibAGB_inhalt());
}

//require_once(PFAD_ROOT.PFAD_INCLUDES."letzterInclude.php");
//Standardassigns
$smarty->assign('currentTemplateDir',$smarty->template_dir);
$smarty->assign('session_name',session_name());
$smarty->assign('session_id',session_id());
$smarty->assign('SID',SID);
$smarty->assign('session_notwendig',session_notwendig());
$smarty->assign('lang',$_SESSION["cISOSprache"]);
$smarty->assign('ShopURL',URL_SHOP);
$smarty->assign('NettoPreise',$_SESSION["Kundengruppe"]->nNettoPreise);
$smarty->assign('AktuelleSeite',$AktuelleSeite);

//basket
$smarty->assign('WarenkorbArtikelanzahl',$_SESSION["Warenkorb"]->gibAnzahlArtikelExt(array(C_WARENKORBPOS_TYP_ARTIKEL)));
$warensumme[0]=gibPreisStringLocalized($_SESSION["Warenkorb"]->gibGesamtsummeWarenExt(array(C_WARENKORBPOS_TYP_ARTIKEL),1));
$warensumme[1]=gibPreisStringLocalized($_SESSION["Warenkorb"]->gibGesamtsummeWarenExt(array(C_WARENKORBPOS_TYP_ARTIKEL),0));
$gesamtsumme[0]=gibPreisStringLocalized($_SESSION["Warenkorb"]->gibGesamtsummeWaren(1,1));
$gesamtsumme[1]=gibPreisStringLocalized($_SESSION["Warenkorb"]->gibGesamtsummeWaren(0,1));
$smarty->assign('WarenkorbWarensumme',$warensumme);
$smarty->assign('WarenkorbGesamtsumme',$gesamtsumme);
$smarty->assign('WarenkorbGesamtgewicht',gibWarenkorbGewicht());
$smarty->assign('Warenkorbtext',lang_warenkorb_warenkorbEnthaeltXArtikel($_SESSION["Warenkorb"]->gibAnzahlArtikelExt(array(C_WARENKORBPOS_TYP_ARTIKEL))));
$smarty->assign('zuletztInWarenkorbGelegterArtikel',gibLetztenWKArtikel());

if ($GlobaleEinstellungen['global']['kaufabwicklung_ssl_nutzen']=="Y" && strlen($GlobaleEinstellungen['global']['kaufabwicklung_ssl_proxy'])>2 && session_notwendig())
{
	ini_set('session.use_cookies',0);
	unset($_SERVER['HTTP_COOKIE']);
}

if (!session_notwendig())
	$smarty->assign('SID','');

require_once(PFAD_ROOT.PFAD_INCLUDES."/boxen.php");
require_once(PFAD_ROOT.PFAD_INCLUDES."/besucher.php");
aktiviereLinks($AktuelleSeite);
//WP benutzt utf-8
$str_warenkorb = utf8_encode($smarty->fetch(PFAD_ROOT.'templates/MT/blog.tpl'));

?>

/templates/MT/blog.tpl:

PHP:
{config_load file="$lang.conf" section="global"}

{include file='tpl_inc/rightContainer.tpl'}

/blog/wp-content/themes/MT/sidebar_right.php:


PHP:
<?php
	echo $str_warenkorb;
?>
 

Dealux-GmbH

Sehr aktives Mitglied
5. März 2007
8.676
7
Düsseldorf
AW: Wordpress integrieren

Kategorien kann man auch mit dem Shop3 verteilen. Und SEO-technisch wird es vermutlich besser sein, da man ja nicht extra in einen Unterordner muss. Außerdem ist es Benutzerfreundlicher, da man sich nur noch ein mal anmelden muss.
 

ralph

Aktives Mitglied
30. Juni 2009
267
0
AW: Wordpress integrieren

Wie gesagt, die Meinungen gehen hier auseinander, das weiß ich. Ob das blog in einem Unterverzeichnis ist oder nicht, ist aus SEO-Sicht unwesentlich. Aus SEO-Sicht geht nicht um die Verzeichnis- sondern um die Klicktiefe. Benutzerfreundlich finde ich, wenn sich ein Blogbenutzer gar nicht anmelden muss. Wahrscheinlich wird es diese Option in shop3 auch geben. Der Punkt ist aber der: JTL-Sop2 in Kombination mit WP tut bei mir was es soll. JTL-Shop3 gibt es nicht.
 

exube

Aktives Mitglied
25. April 2007
140
0
Dresden
AW: Wordpress integrieren

Hi ralph,

schön das Du hier eine Lösung zur Integration von WP in den JTL- Shop bereitstellst. Kann man das Endergebnis irgendwo bestaunen?

Auf den Shop 3 zu vertrösten ist minder produktiv ;)
 

ralph

Aktives Mitglied
30. Juni 2009
267
0
AW: Wordpress integrieren

Ich denke, ich habe den Anwendungsfall ausführlich beschrieben. Du kannst es jederzeit ausprobieren, am Shop und dessen Datenbank ändert sich ja nichts. Du musst lediglich WP installieren, zwei Dateien hinzufügen und zwei Dateien anpassen. Solange das Blog nicht verlinkt oder für Suchmaschinen sichtbar ist, kannst du auch in aller Ruhe am Blog-Template schrauben. Probieren geht über Studieren.
 

boaa-group

Sehr aktives Mitglied
28. Dezember 2007
4.932
9
Thailand, Bangkok
AW: Wordpress integrieren

Naja, im Prinzip ist der erste Schritt einfach Worpress in die selbe Datenbank wie den JTL-Shop2 installieren.

Dann hast in Wordpress immer eine bestehende Verbindung zur richtigen Datenbank. Nun musst nur noch an gewünschter Stelle via PHP die Datenbank abfragen.

Oder wie schon angesprochen noch ein weilchen auf den Shop3 warten.