DirectURL ohne /products/

Diskussionen die nicht direkt etwas mit einem Software oder Hardware Problem zu tun haben
Antworten
xtsell
Beiträge: 26
Registriert: So 17. Apr 2011, 21:52

DirectURL ohne /products/

Beitrag von xtsell »

Ich habe gerade den webs shop installiert und da es im konkreten Fall um eine überschaubare Anzahl von Produkten geht, möchte ich gern die Produkt-URLs ohne zusätzliche Verzeichnisse haben. Da außerdem die wesentlichen Keywords immer in der Produktbezeichnung stehen, kann bei den Produkten auch der Verzeichnispfad entfallen.

Ziel ist somit folgende flache Struktur: http://www.example.com/mein-tolles-produkt.html

Ich habe gesucht, ob es schon eine Lösung dafür gibt, aber hier im Forum gar nichts dazu gefunden. Bei meiner Google-Suche habe ich zwar festgestellt, dass ich nicht der erste mit dieser Anforderung bin, aber eine Lösung scheint es nicht zu geben. Daher habe ich mich selbst ans Werk gemacht und relativ schnell eine Lösung gefunden. Jedenfalls hoffe ich, dass es eine ist, denn sie ist fast schon zu einfach.

In der bluegate_seo.inc.php habe ich die getProductLink() dahingehend verändert, dass der Wert für DIRECTURL_PRODUCTS_URL_NAME inkl. / entfällt. Die getCategoryPathForProduct() gibt nun NULL zurück. Damit werden die Produkt URLs wie gewünscht erzeugt.

Damit nun auch der Aufruf funktioniert, ist eine Änderung in der .htaccess erforderlich. Die Produktabfrage kommt nicht mehr als erste, sondern nach den Abfragen auf content, popup und tags:

Code: Alles auswählen

    # Rule: Product Info
    RewriteRule ^(.+)\.html$ product_info.php?bluegatemapto=product&linkurl=$1 [qsappend,L]
Ist es wirklich so einfach oder habe ich etwas übersehen? Bisher habe ich nur einige Kategorien und Produkte definiert und dafür funktioniert es problemlos. Selbst mehrsprachig würde es klappen (wird aber hier nicht benötigt).
Zuletzt geändert von xtsell am So 26. Jun 2011, 21:23, insgesamt 1-mal geändert.
Xantiva
Beiträge: 948
Registriert: Mo 10. Mai 2010, 16:26
Shop Version: 1.0.10 [dev]
Kontaktdaten:

Re: DirectURL ohne /products/

Beitrag von Xantiva »

Hallo xtsell,

ändern der Core Dateien ist immer schlecht ;) Merkt man spätestens beim nächsten Update.

Im Konstructor der Klasse BlueGateSeo (bluegate_seo.inc.php) wird geprüft, ob die Konstante DIRECTURL_PRODUCTS_URL_NAME noch nicht definiert ist. Du könntest also im Template (/source/template_defaults.php) die einfach mit einem Leerstring definieren. Dass ergibt dann noch einen kleinen Schönheitsfehler mit zwei "//", den würde ich aber dann hier in der function getProductLink wie folgt lösen:

Code: Alles auswählen

		$parts = explode('/', DIRECTURL_PRODUCTS_URL_NAME.'/'.$product_link['url_text'].'.html');
		if (!empty($parts)) {
			foreach($parts as $key=>$part) {
				$parts[$key] = urlencode($part);
			}
			// Das kommt dann noch dazu.
			if ($parts[0] == '') {
				unset($parts[0]);
			}
		}
Mit dem Wegfall des Kategoriepfades ist das nicht ganz so elegant zu lösen, da im Backend die template_defaults.php nicht geladen wird. ;) Aber eine Lösung für Dich hast Du ja schon gefunden. ;)

Ciao,
Mike
Mein Shop: http://www.basteln-selbermachen.de
Xantiva
Beiträge: 948
Registriert: Mo 10. Mai 2010, 16:26
Shop Version: 1.0.10 [dev]
Kontaktdaten:

Re: DirectURL ohne /products/

Beitrag von Xantiva »

Mein Shop: http://www.basteln-selbermachen.de
rieste
Beiträge: 134
Registriert: Fr 18. Mär 2011, 07:54
Shop Version: ECB 1.08 leider

Re: DirectURL ohne /products/

Beitrag von rieste »

Wird

Code: Alles auswählen

 define('DIRECTURL_PRODUCTS_URL_NAME','');
in der template_defaults.php gesetzt funktioniert der Shop nicht mehr!

Die Startseite ist leer und es kommt - keine Produkte gefunden.
Die Categorie Navigation funktioniert - klickt man auf ein Produkt kommt man auf die Startseite.

Kann den Fehler wer bestätigen?

edit: 26.03 -0834

Der Fehler liegt in der .htaccess hier wird

Code: Alles auswählen

    # Rule: Product Info
    RewriteRule ^(.*)products\/(.+)\.html$ product_info.php?bluegatemapto=product&linkurl=$2 [qsappend,L]
festgelegt.
d.h. ändert man die DIRECTURL_PRODUCTS_URL genau auf den Wert in der htaccess funktioniert es.
Will man sich das Level also sparen und will die products entfernen funktioniert es nicht!!
Mein Seite: https://www.rieste.com
Mein Lichtshop https://licht365.com
Antworten