Verkürzte Produktübersicht, Links zu Produk-Detailseiten

Hier kannst du dich vorstellen und Fragen zum Plugin stellen.
Installation, Administration, etc.

Moderatoren: ThoGoe, maennchen1.de

Antworten
hgweber
Beiträge: 22
Registriert: 14.02.2012, 13:36
Lizenz: wpShopGermany Pro
Skype-Name: hgw7m

Verkürzte Produktübersicht, Links zu Produk-Detailseiten

Beitrag von hgweber »

Hallo,

ich habe mit eine Produktgruppenseite gebastelt über ein Template auf Basis der user_views/templates/standard.phtml, auf der die Produkte verkürzt dargestellt werden. Aber ich komme nun von der verkürzten Produktdarstellung nicht auf die eigentliche Produkt-Detailseite, da es mir nicht gelingt, deren ID herauszubekommen. Die Detailseite des Produkts ist eine Seite/Page, darauf muss der Link gehen. Mein Ansatz wäre so, dass ich in der WordPress-Tabelle wp_posts denjenigen Eintrag bzw. diejenige ID suche, bei der in der Spalte post_content vorkommt product="6" - wobei die Produktnummer je Produkt zur Verfügung steht ($this->data['p_id'];).

Ich versuche das so über die WP-Funktion get_results, evt. ist darin nur ein Schreibfehler, oder ich habe die get_results Funktion nicht richtig verstanden - evt. kann jemand von Euch helfen:

Code: Alles auswählen

$produkt_id = $this->data['p_id'];

global $wpdb;
$page_id = $wpdb->get_results (
$wpdb->prepare( "SELECT ID FROM
$wpdb->posts WHERE
post_content LIKE '%s' AND
post_content LIKE '%product%' AND
post_type LIKE 'page'", $produkt_id)
Eigentlich müsste die WHERE-Anweisung im Klartext u.a. lauten WHERE post_content LIKE '%$product_id%' - d.h. z.B. WHERE post_content LIKE '%6%' - aber das ist wohl so falsch in die Funktion geschrieben?

Sobald ich das Ergebnis $page_id ausgeben lasse oder mit print_r($page_id) mir das Array anzeigen lassen will, bleibt die Seite leer. Wir verwenden WP 3.2.1 und wpshopgermany 2.3.1.

Ich würde mich sehr über hilfreiche Hinweise dazu freuen.

hgweber
Beiträge: 22
Registriert: 14.02.2012, 13:36
Lizenz: wpShopGermany Pro
Skype-Name: hgw7m

Re: Verkürzte Produktübersicht, Links zu Produk-Detailseiten

Beitrag von hgweber »

Ich bin ein Stück weiter, jetzt ist es wohl nur noch eine Frage des Auslesens des Arrays, was mir wegen dem stdClass Object Probleme bereitet.

Code: Alles auswählen

$produkt_id = $this->data['p_id'];

global $wpdb;
$sql = 'SELECT ID FROM '.$wpdb->posts.' WHERE post_content LIKE "%'.$produkt_id.'%" 
AND post_content LIKE "%product%" AND post_type LIKE "page" LIMIT 1';
$page_id = $wpdb->get_results($sql);
print_r($page_id);
Ich erhalte als Ergebnis: Array ( [0] => stdClass Object ( [ID] => 869 ) )

Wie kann ich nun den Wert 869 auslesen? Habe leider alle möglichen PHP Tutorials angesehen, aber bin nicht wirklich fündig geworden. Danke nochmals!

Benutzeravatar
daschmi
m1.Mitarbeiter
Beiträge: 2443
Registriert: 04.12.2007, 18:23
Lizenz: keine
Kontaktdaten:

Re: Verkürzte Produktübersicht, Links zu Produk-Detailseiten

Beitrag von daschmi »

Hi,

Versuch mal ein

Code: Alles auswählen

$wpdb->get_results($sql, ARRAY_A);
da sollte es ein Array sein.

Oder besser noch:

Code: Alles auswählen

$wpdb->get_var($wpdb->prepare($sql)); 
Eine dritte Möglichkeit wäre noch:

Code: Alles auswählen

$this->controller->db->fetchOne($sql);
viele Grüße

Daschmi

hgweber
Beiträge: 22
Registriert: 14.02.2012, 13:36
Lizenz: wpShopGermany Pro
Skype-Name: hgw7m

Re: Verkürzte Produktübersicht, Links zu Produk-Detailseiten

Beitrag von hgweber »

Super Daschmi, das hat geklappt mit Deiner zweiten Variante (die dritte hab ich nicht getestet), sehr genial und hilfreich, danke dafür!

Ich habe nun noch in user_views/mods/mod_produktbild.phtml in den img-Tag folgende Abfrage eingebaut:

Code: Alles auswählen

<?php
if(is_page_template( 'page-produktgruppe.php' ) ) echo "width=\"125\"";
?>
erhalte damit jetzt verkleinerte Produktbilder und komme nun langsam zu den kundenseitig gewünschten "klassischen" Produktkategorieseiten.

Sobal der Shop online geht ergänze ich die URL hier.

hgweber
Beiträge: 22
Registriert: 14.02.2012, 13:36
Lizenz: wpShopGermany Pro
Skype-Name: hgw7m

Re: Verkürzte Produktübersicht, Links zu Produk-Detailseiten

Beitrag von hgweber »

Hallo Daschmi,

jetzt hat sich auf der Kategorien-Übersicht noch eine Frage ergeben. Ich versuche nach obiger Methode auch die IDs der einzelnen Kategorieseiten in der list.phtml (Übersichtsseite Kategorien) innerhalb der foreach-Schleife herauszubekommen mit

Code: Alles auswählen

<?php
$produktgruppe_id= $g['id'];
$sql = 'SELECT ID FROM '.$wpdb->posts.' WHERE post_content LIKE "%'.$produktgruppe_id.'%" AND post_content LIKE "%produktgruppe%" AND post_type LIKE "page" AND post_status LIKE "published" LIMIT 1';
$pgseite_id = $wpdb->get_var($wpdb->prepare($sql)); 
echo "PG Seite: ".$pgseite_id; // Kontrolle
?>
Hier kommt trotz richtig ins SQL-Statement eingesetzter Produktgruppen-IDs (z.B. SELECT ID FROM wp_posts WHERE post_content LIKE "%4%" AND post_content LIKE "%produktgruppe%" AND post_type LIKE "%page%" AND post_status LIKE "%published%" LIMIT 1) immer nur der gleiche und völlig falsche Wert heraus (2). Wenn ich das Statement in PhpMyAdmin ausführe bekomme ich die richtige ID des Posts heraus.

Irgendetwas scheint hier mit dem Statement trotzdem nicht zu passen. global $wpdb; habe ich vor die Schleife gesetzt.

Hast Du noch einen Tipp dazu?

Antworten