2009-05-29 10 views
3

Ich versuche, die Produktansicht auf einer Drupal-Website zu stylen, habe aber Probleme. Ich kann nicht finden, wo die Knoten (Produkt) Ansicht in ubercart zusammengestellt ist!Drupal/Ubercart ... Knotenstyling?

Ich verwende UC 5.x-1.7, und ich muss die Knoten (Produkt) Ansichtsseite stylen. Im Moment in meiner node.tpl.php Datei, habe ich

print $body;
, die alle SKU, Attribute, Preis, Bild usw. ausspuckt.

Das Problem ist, ich muss dies in einem anderen Stil haben - ich muss arbeiten zu einem Design von einem Designer gemacht. Ich habe angefangen, meine eigene Version zu wiederholen, die Variablen wie

$node->content['body']['#value']
usw. verwendend.

Ich habe in Schwierigkeiten versucht, mit den verschiedenen Attributen für ein Produkt zu arbeiten. Ich kann nicht herausfinden, wie man sie auf meine Seite bringt, oder eine Dokumentation darüber, wie man mit ihnen aus der Sicht eines Coders arbeitet.

Gibt es einen einfacheren Weg? Wo würde ich aussehen, um die vorhandene Anzeige (d. H. Die $ body-Variable) zu stylen?

Edit: mein Thema basiert auf dem Zen Theme

Antwort

2

Sie werden die Vorlagen aussehen wollen, die unter einem Weg sein wird, wie:

./sites/all/modules/ubercart/uc_product/views 

, dass ein Start sein wird. Dort wird der Knoten wahrscheinlich erstellt.

4

Wenn das Problem rein Stil ist, können Sie Ihr eigenes CSS schreiben, um dies zu tun.

Sie können die theamer module verwenden, um Ihnen zu sagen, welche Vorlage Dateien zu verwenden, würde ich vermuten, dass es einige, die mit Ubercart kommen, die Sie überschreiben können. Schauen Sie in den Kandidaten-Vorlagenbereich der Info

Schließlich können Sie hook_nodeapi op=view verwenden, um zu steuern, was tatsächlich auf die Seite gelangt, um in der Variablen $ body angezeigt zu werden.

1

Wenn Sie das Devel-Modul verwenden, können Sie die genaue Struktur der Arrays und Objekte sehen und genau das bekommen, was Sie vom $ node-Objekt benötigen. Erstellen Sie dann eine Datei node-product.tpl.php und ersetzen Sie die Variable $ content durch diese Teile. Bei den meisten dieser Variablenwerte ist das Markup intakt.

Wenn Sie das Markup für, sagen wir, die Attribute ändern möchten, müssen Sie die Vorverarbeitungsfunktion ändern, die das Attribut div verarbeitet. Wenn Sie einfach die ID = "Attribute" (Klasse vielleicht? Ich vergesse) div vom Anfang und Ende, werden sie alle einzeln in ihrer eigenen Klasse = "Attribut" -Wrapper drucken. Fügen Sie das einfach Ihrer template.php Datei hinzu.

Sie können sie dann alle über die Seite mit CSS verschieben, anstatt sie alle in einem Div eingeschlossen zu haben.

Sie können auch die oben beschriebene Methode zum Drucken der separaten Seitenvariablen verwenden, um die verschiedenen Elemente im Markup zu verschieben.

Viele davon können mit reinem CSS gemacht werden, aber es ist schön, Markup zu haben, das nicht bricht, wenn CSS in schlechten Browsern falsch angezeigt wird.

Hoffe, das ist hilfreich. Ich bin nicht sicher, ob das alles in Drupal 5 funktioniert, da ich das alles mit 6 gemacht habe ... also hoffentlich.

+0

Beachten Sie das Drupal-Plugin für Firebug http://drupal.org/project/drupalforfirebug Dieses Tool ist ziemlich anständig. – cgp

1

Hier ist ein Beispiel für die Verwendung hook_nodeapi wie von Jeremy Französisch erwähnt:

/** 
* Implements hook_nodeapi(). 
*/ 
function YOUR_MODULE_nodeapi(&$node, $op, $arg3 = NULL, $arg4 = NULL) { 
    switch ($op) { 
    case 'view': 
    // Don't show list price unless set. 
    if (isset($node->content['list_price']) && $node->list_price == 0) { 
     unset($node->content['list_price']); 
    } 
    break; 
    } 
} 

Blick in uc_product_view() in modules/Ubercart/uc_product/uc_product.module die verschiedenen Inhaltsfelder zu sehen.