<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Webdesign Informatik &#187; XT Commerce</title>
	<atom:link href="http://www.webdesign-informatik.de/tag/xt-commerce/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.webdesign-informatik.de</link>
	<description>Internet : SEO : Programmierung : Datenbank : Linux</description>
	<lastBuildDate>Sat, 19 Nov 2011 11:11:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Englische Sprache in XT Commerce ausschalten</title>
		<link>http://www.webdesign-informatik.de/php/englische-sprache-in-xt-commerce-ausschalten/</link>
		<comments>http://www.webdesign-informatik.de/php/englische-sprache-in-xt-commerce-ausschalten/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 14:37:53 +0000</pubDate>
		<dc:creator>Elias</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[XT Commerce]]></category>

		<guid isPermaLink="false">http://www.webdesign-informatik.de/?p=100</guid>
		<description><![CDATA[Wenn man den alten aber kostenlosen Shop XT Commerce verwendet, sollte man die englische Version des Shops deaktivieren, sofern man seine Artikel nicht auch komplett in englischer Version anbietet. Leider funktioniert das Entfernen der englischen Sprache im Backend nicht. Hat ein Browser als Primärsprache Englisch ausgewählt, so versucht XT Commerce trotzdem den Shop in Englisch [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn man den alten aber kostenlosen Shop XT Commerce verwendet, sollte man die <strong>englische Version</strong> des Shops <strong>deaktivieren</strong>, sofern man seine Artikel nicht auch komplett in englischer Version anbietet. Leider funktioniert das Entfernen der englischen Sprache im Backend nicht. Hat ein Browser als Primärsprache Englisch ausgewählt, so versucht XT Commerce trotzdem den Shop in Englisch anzuzeigen, was nicht ganz gelingt, da die Artikel ja nicht 2-sprachig angelegt wurden.<span id="more-100"></span></p>
<p>Editieren wir also den schönen Quellcode von XT Commerce um ein Anzeigen der Default-Sprache zu erzwingen, die auf Deutsch  gesetzt sein sollte. Dies ist ein Weg, um die Englische Sprache zu deaktivieren.</p>
<p>Bearbeiten von <strong>includes/application_top.php</strong> Zeile  340<strong> </strong>Ohne DirectUrl; Zeile 362 mit DirectUrl.</p>
<p><em>Vorher</em></p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">if</span> <span class="br0">&#40;</span>!<a href="http://www.php.net/isset"><span class="kw3">isset</span></a> <span class="br0">&#40;</span><span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">&#8216;language&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$lng</span>-&gt;<span class="me1">get_browser_language</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
<p><em>Nachher</em></p>
<div class="dean_ch" style="white-space: wrap;"><span class="co1">// take always default language (german)</span><br />
<span class="re0">$lng</span>-&gt;<span class="me1">language</span> = <span class="re0">$lng</span>-&gt;<span class="me1">catalog_languages</span><span class="br0">&#91;</span>DEFAULT_LANGUAGE<span class="br0">&#93;</span>;</div>
<p>Mit dem Austausch der Code-Blöcke kann man die Standard-Sprache erzwingen und somit die Englische Sprache ausschalten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webdesign-informatik.de/php/englische-sprache-in-xt-commerce-ausschalten/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>MySQL Datenbank tunen mit InnoDb und Indizes</title>
		<link>http://www.webdesign-informatik.de/mysql/mysql-datenbank-tunen-mit-innodb-und-indizes/</link>
		<comments>http://www.webdesign-informatik.de/mysql/mysql-datenbank-tunen-mit-innodb-und-indizes/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 13:32:10 +0000</pubDate>
		<dc:creator>Elias</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[DirectUrl]]></category>
		<category><![CDATA[InnoDb]]></category>
		<category><![CDATA[MySQL Tuning]]></category>
		<category><![CDATA[XT Commerce]]></category>

		<guid isPermaLink="false">http://www.webdesign-informatik.de/?p=91</guid>
		<description><![CDATA[Es sind nur ein paar Handgriffe, die Welten bewegen. Ich hatte eine SQL Abfrage mit ein paar Joins, die bei steigender Anzahl von Datensätzen bis zu 5 Minuten dauerte. Das konnte so natürlich nicht weitergehen, also hab ich kurz eine Relation mittels Fremdschlüssel in der Datenbank-Struktur realisiert und die Abfrage dauerte von nun an 2 [...]]]></description>
			<content:encoded><![CDATA[<p>Es sind nur ein paar Handgriffe, die Welten bewegen. Ich hatte eine SQL Abfrage mit ein paar Joins, die bei steigender Anzahl von Datensätzen bis zu 5 Minuten dauerte. Das konnte so natürlich nicht weitergehen, also hab ich kurz eine Relation mittels Fremdschlüssel in der Datenbank-Struktur realisiert und die Abfrage dauerte von nun an 2 Sekunden &#8211; Wahnsinn! Das Problem mit der Geschwindigkeit hatte ich übrigens auch bei jedem XT Commerce Shop mit mehreren Hundert oder Tausend Artikeln, bei dem DirectUrl für suchmaschinenfreundliche URLs installiert ist. Das Problem ist, das DirectUrl die Tabelle mit den Alias-URLs  bei jeder Änderung des Produktkatalogs, der Kategorien und der Content Seiten neu erstellt. In Bezug auf das Bearbeiten von Produkten und Kategorien können wir das Laden von 5 Minuten auf 2 Sekunden verringern.  Die folgende MySQL Code zeigt die modifizierte Tabellenstruktur mit Indizes für die DirectUrl-Alias-Tabelle.<span id="more-91"></span></p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">CREATE</span> <span class="kw1">TABLE</span> <span class="kw1">IF</span> <span class="kw1">NOT</span> <span class="kw1">EXISTS</span> bluegate_seo_url <span class="br0">&#40;</span><br />
&nbsp; &nbsp; url_md5 varchar<span class="br0">&#40;</span><span class="nu0">32</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span>,<br />
&nbsp; &nbsp; url_text varchar<span class="br0">&#40;</span><span class="nu0">255</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span>,<br />
&nbsp; &nbsp; products_id int<span class="br0">&#40;</span><span class="nu0">11</span><span class="br0">&#41;</span> <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span>,<br />
&nbsp; &nbsp; categories_id int<span class="br0">&#40;</span><span class="nu0">11</span><span class="br0">&#41;</span> <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span>,<br />
&nbsp; &nbsp; content_group int<span class="br0">&#40;</span><span class="nu0">11</span><span class="br0">&#41;</span> <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span>,<br />
&nbsp; &nbsp; language_id int<span class="br0">&#40;</span><span class="nu0">11</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span> <span class="kw1">DEFAULT</span> <span class="nu0">0</span>,<br />
&nbsp; &nbsp; <span class="kw1">PRIMARY</span> <span class="kw1">KEY</span> &nbsp;<span class="br0">&#40;</span>url_md5<span class="br0">&#41;</span>,<br />
&nbsp; &nbsp; <span class="kw1">KEY</span> url_text <span class="br0">&#40;</span>url_text,products_id<span class="br0">&#41;</span>,</p>
<p>&nbsp; &nbsp; <span class="kw1">INDEX</span> fk_products_description <span class="br0">&#40;</span>products_id <span class="kw1">ASC</span><span class="br0">&#41;</span> ,<br />
&nbsp; &nbsp; CONSTRAINT fk_products_description<br />
&nbsp; &nbsp; <span class="kw1">FOREIGN</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span>products_id<span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="kw1">REFERENCES</span> products_description <span class="br0">&#40;</span>products_id<span class="br0">&#41;</span> ,</p>
<p>&nbsp; &nbsp; <span class="kw1">INDEX</span> fk_categories_description <span class="br0">&#40;</span>categories_id <span class="kw1">ASC</span><span class="br0">&#41;</span> ,<br />
&nbsp; &nbsp; CONSTRAINT fk_categories_description<br />
&nbsp; &nbsp; <span class="kw1">FOREIGN</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span>categories_id<span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="kw1">REFERENCES</span> categories_description <span class="br0">&#40;</span>categories_id<span class="br0">&#41;</span> ,</p>
<p>&nbsp; &nbsp; <span class="kw1">INDEX</span> fk_languages <span class="br0">&#40;</span>language_id <span class="kw1">ASC</span><span class="br0">&#41;</span> ,<br />
&nbsp; &nbsp; CONSTRAINT fk_languages<br />
&nbsp; &nbsp; <span class="kw1">FOREIGN</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span>language_id<span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="kw1">REFERENCES</span> languages <span class="br0">&#40;</span>languages_id<span class="br0">&#41;</span><br />
<span class="br0">&#41;</span> ENGINE=InnoDB <span class="kw1">DEFAULT</span> CHARSET=latin1;</div>
<p>Hier wurden lediglich 3 Fremdschlüssel ergänzt, weil die Joins der Abfrage über diese Fremdschlüssel verlaufen: fk_products_description, fk_categories_description und fk_languages.</p>
<p>Wichtig ist hierbei das Stichwort <strong>InnoDb</strong>. Das Verknüpfen der Tabellen mit Fremdschlüsseln funktioniert in MySQL nur mit der Storage-Engine <a href="http://www.innodb.com/">InnoDb</a>. Also müssen alle Tabellen, die verknüpft werden sollen vom Typ InnoDb sein. In phpMyAdmin kann man dies unter Operations ändern. Ansonsten einen ALTER TABLE Befehl auf die betreffenden Tabellen ausführe. Im Falle von der DirectUrl Optimierung wären das diese hier:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">ALTER</span> <span class="kw1">TABLE</span> products_description ENGINE=InnoDb;<br />
<span class="kw1">ALTER</span> <span class="kw1">TABLE</span> categories_description ENGINE=InnoDb;<br />
<span class="kw1">ALTER</span> <span class="kw1">TABLE</span> languages ENGINE=InnoDb;</div>
<p>Am saubersten ist es jedoch, die Struktur mit InnoDb neu zu erstellen und nachträglich die Datensätze mittels INSERTs einfügen.</p>
<p>So dann gehen wir noch kurz auf einen Fremdschlüsseleintrag in der Tabellenstruktur ein, hier nochmals ein Auszug aus der Struktur oben:</p>
<div class="dean_ch" style="white-space: wrap;">&nbsp; &nbsp; <span class="kw1">INDEX</span> fk_categories_description <span class="br0">&#40;</span>categories_id <span class="kw1">ASC</span><span class="br0">&#41;</span> ,<br />
&nbsp; &nbsp; CONSTRAINT fk_categories_description<br />
&nbsp; &nbsp; <span class="kw1">FOREIGN</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span>categories_id<span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="kw1">REFERENCES</span> categories_description <span class="br0">&#40;</span>categories_id<span class="br0">&#41;</span> ,</div>
<p>Mit INDEX wird einfach mal ein Index auf das betreffende Feld gesetzt, welches den Schlüssel für das Verknüpfen der Tabellen enthält. Mit einem CONSTRAINT hat man nun die Möglichkeit den Fremdschlüssel zu definieren. REFERENCES gibt hierbei an, in welcher Tabelle und welcher Spalte sich der Fremdschlüssel befindet. Befindet sich die Tabelle in einer anderen Datenbank, kann dies natürlich auch definiert werden. Der Name der Datenbank mit einem Punkt einfach vor dem Tabellennamen geschrieben: DBNAME.TABLENAME. In dem Beispiel ist also <em>categories_description</em> die Tabelle die wir über <em>categories_id</em> verknüpfen wollen. Also ist bluegate_seo_url.categories_id == categories_description.categories_id. Sollte dies bei einem Datensatz nicht der Fall sein, so erscheint eine Fehlermeldung. Mit den Relationen wird also zugleich für eine schöne Datenkonsistenz gesorgt.</p>
<p>PS: Indizes ist die Mehrzahl von Index.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webdesign-informatik.de/mysql/mysql-datenbank-tunen-mit-innodb-und-indizes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

