/ Published in: PHP
While the Pinnacle Cart API can handle some of this, I found it easier to query the database directly.
This PCProduct class was developed for integrating Pinnacle Cart with WordPress with the following methods:
- get_product($id)
- get_product_by_product_id($id)
- get_product_box($row)
- get_top($cid,$cnt,$side)
- get_products_by_category($cid)
- get_categories($parent,$order,$level)
- get_recent($limit)
You will need to edit the following methods to match your cart paths / database settings:
- cart_path()
- cart_uri()
- get_connection() -- This is the PDO connection, fill in the host, dbname, user, password
- getProductUrl() -- Check the SEO settings, I'm using the 3.7 custom URL: %CategoryName%/%ProductTitle%/
This PCProduct class was developed for integrating Pinnacle Cart with WordPress with the following methods:
- get_product($id)
- get_product_by_product_id($id)
- get_product_box($row)
- get_top($cid,$cnt,$side)
- get_products_by_category($cid)
- get_categories($parent,$order,$level)
- get_recent($limit)
You will need to edit the following methods to match your cart paths / database settings:
- cart_path()
- cart_uri()
- get_connection() -- This is the PDO connection, fill in the host, dbname, user, password
- getProductUrl() -- Check the SEO settings, I'm using the 3.7 custom URL: %CategoryName%/%ProductTitle%/
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
class PCProduct { private function cart_path() { return "/home/mydomain/domains/mydomain.com/public_html/cart/"; } private function cart_uri() { return "http://mydomain.com/cart/"; } private function get_connection() { $conn = new PDO("mysql:host=localhost;dbname=mydatabase", 'root', 'root'); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $conn; } /* THESE ARE CUSTOM FUNCTIONS FOR PINNACLE CART */ public function imageFileName($product_id){ } return $s; } ////////////////////////////////////// //check for product thumb public function ProductHasThumb($product_id){ $product_thumbs_dir = self::cart_path() . 'images/products/thumbs'; $product_imgs_dir = self::cart_path() . 'images/products'; $product_preview_dir = self::cart_path() . 'images/products/preview'; $prod_thumbs = self::cart_uri() . 'images/products/preview'; $prod_large = self::cart_uri() . 'images/products'; $pi = self::imageFileName($product_id); // products/preview/123.jpg return $prod_thumbs."/".$pi.".jpg"; } // products/123.jpg return $prod_large."/".$pi.".jpg"; } // products/123.gif return $prod_large."/".$pi.".gif"; } // products/preview/123.png return $prod_thumbs."/".$pi.".png"; } // products/preview/123.gif return $prod_thumbs."/".$pi.".gif"; } else{ return self::cart_uri() . "images/images/english/imageNoImageSmall.gif"; } } public function get_product($id) { # PDO CONNECT try { $conn = self::get_connection(); # PDO PREPARED STATEMENT $stmt = $conn->prepare('SELECT * FROM products where pid= :id limit 1');//LIMIT 0 , $num" 'id' => $id )); $result = $stmt->fetchAll(); foreach( $result as $key => $row ){ //output $data[$key] = $row; $data[$key]['thumb'] = self::ProductHasThumb($row['product_id']); $data[$key]['url'] = self::getProductUrl($row['pid']); } return $data; } } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } public function get_product_by_product_id($id) { # PDO CONNECT try { $conn = self::get_connection(); # PDO PREPARED STATEMENT $stmt = $conn->prepare('SELECT * FROM products where product_id= :id or pid = :id limit 1');//LIMIT 0 , $num" 'id' => $id )); $result = $stmt->fetchAll(); foreach( $result as $key => $row ){ //output $data[$key] = $row; $data[$key]['thumb'] = self::ProductHasThumb($row['product_id']); $data[$key]['url'] = self::getProductUrl($row['pid']); } return $data; } } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } public function get_product_box( $row ) { $product_thumb = self::ProductHasThumb($row['product_id']); $product_url = self::getProductUrl($row['pid']); $output = '<div class="product-box"> <div class="thumb"><a title="Click here to shop our ' . $row['title'] . '" href="' . $product_url . '"> <img src="' . $product_thumb . '" alt="'.$row['title'].'" title="'.$row['title'].'" /></a></div> <a title="Click here to shop our ' . $row['title'] . '" href="' . $product_url . '"><strong>' . $row['title'] . '</strong></a> <br /><small>Product ID: ' . $row['pid'] . '</small><br /> <form action="' . self::cart_uri() . 'index.php?" method="post"> <input type="hidden" name="oa" value="AddItem"/> <input type="hidden" name="oa_id" value="'.$row['product_id'].'"/> <input type="hidden" name="oa_quantity" maxlength="6" size="2" value="1"/> <table cellpadding="0" cellspacing="0" border="0" style="margin:0 auto;width:100%"><tr><td class="CatalogItemLight" align="center"><input type="image" src="' . self::cart_uri() . 'images/buttons/english/buttonAddToCart.gif" alt="Add To Cart"/></td></tr></table> </form></div>'; //} return $output; } } public function get_top($id,$cnt,$side=false) { # PDO CONNECT try { $conn = self::get_connection(); # PDO PREPARED STATEMENT $stmt = $conn->prepare('SELECT * FROM products WHERE cid = :id ORDER BY rand() LIMIT :cnt'); 'id' => $id, 'cnt' => $cnt )); // fetch assoc array $result = $stmt->fetchAll(); //output vars if($side==true){$float='';}else{$float='float:left;';} $output = '<div style="width:600px;height:auto;margin:20px 0 0 10px">'; foreach( $result as $prods ){ //loop through each product and display $prod_thumb = self::ProductHasThumb($prods['product_id']); $output .= '<div style="width:190px;'.$float.'text-align:center;margin:0 0 0 10px;height:220px;"><div style="width:150px;height:90px;margin:0 auto;"><a title="Click here to shop our '.$prods['title'].'" href="' . self::getProductUrl($prods['pid']) . '"><img src="'.$prod_thumb.'" style="border: 1px solid rgb(204, 204, 204); margin: 0pt 10px 0px 10px; padding: 5px; background: rgb(241, 241, 241) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;max-height:95px;max-width:95px" alt="'.$prods['title'].'" title="'.$prods['title'].'" /></a></div><br style="clear:both" /><a title="Click here to shop our '.$prods['title'].'" href="' . self::getProductUrl($prods['pid']) . '"><strong>'.$prods['title'].'</strong></a><br /><small>Product ID: '.$prods['pid'].'</small><br /><span style="color:red;font-weight:bold;font-size:14px;">$'.number_format($prods['price'], 2, '.', '').'</span><form action="' . self::cart_uri() . 'index.php?" method="post"> <input type="hidden" name="oa" value="AddItem"/> <input type="hidden" name="oa_id" value="'.$prods['product_id'].'"/> <input type="hidden" name="oa_quantity" maxlength="6" size="2" value="1"/> <table cellpadding="0" cellspacing="0" border="0" style="margin:0 auto;"> <tr> <td class="CatalogItemLight"><input type="image" src="' . self::cart_uri() . 'images/buttons/english/buttonAddToCart.gif" alt="Add To Cart"/></td> </tr> </table> </form></div>'; } $output .= "</div>"; return $output; } } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } public function get_products_by_category($id) { # PDO CONNECT try { $conn = self::get_connection(); # PDO PREPARED STATEMENT : Get all related products $p_stmt = $conn->prepare('SELECT * FROM products_categories WHERE cid = :id'); 'id' => $id )); $products = $p_stmt->fetchAll(); // check each product to see if its available foreach( $products as $product ){ $stmt = $conn->prepare('SELECT * FROM products WHERE pid = :id AND is_visible = "Yes"');//LIMIT 0 , $num" 'id' => $product['pid'] )); $result = $stmt->fetch(); $data[] = $result; } } return $data; } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } public function get_categories($parent=0,$order='priority',$level=1) { # PDO CONNECT try { $conn = self::get_connection(); # PDO PREPARED STATEMENT $stmt = $conn->prepare('SELECT * FROM catalog WHERE level = :level AND parent = :parent AND is_visible = "Yes" ORDER BY :order ASC'); 'level' => $level, 'parent' => $parent, 'order' => $order )); foreach($stmt->fetchAll() as $cats) { 'key_name' => $cats['key_name'], 'name' => $cats['name'], 'description' => $cats['description'], 'cid' => $cats['cid'] ); }//end while return $categories; } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } public function get_recent($limit=5) { # PDO CONNECT try { $conn = self::get_connection(); $row_number = 0; # PDO PREPARED STATEMENT $stmt = $conn->prepare('SELECT * FROM products ORDER BY added DESC LIMIT ?, ?'); $stmt->bindValue(1, $row_number, PDO::PARAM_INT); $stmt->bindValue(2, $limit, PDO::PARAM_INT); $stmt->execute(); $result = $stmt->fetchAll(); return $result; } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } public function getProductUrl($pid){ // SEO setting for product page: %CategoryName%/%ProductTitle%/ // custom url: ~/category-name/product-title/ $conn = self::get_connection(); # PDO PREPARED STATEMENT : Get category name and product title for custom URL $stmt = $conn->prepare('SELECT t2.name, t1.title FROM products AS t1 INNER JOIN catalog AS t2 ON t2.cid = t1.cid WHERE t1.pid = :pid'); 'pid' => $pid )); $result = $stmt->fetchAll(); foreach( $result as $key => $row ){ $data['category_name'] = self::url_string( $row['name'] ); $data['product_title'] = self::url_string( $row['title'] ); } $custom_url = self::cart_uri() . $data['category_name'] . "/" . $data['product_title'] . "/"; return $custom_url; } } public function url_string($str) { if($str){ return $str; } } }