News:

AbanteCart v1.4.2 is released.

Main Menu

Create next preview button

Started by maulik 1intl, August 05, 2019, 12:08:13 AM

Previous topic - Next topic

Sam_78

So you want link to next product? as far as I can see this will load the whole page why not just change the image? like I suggested. But yes to do what you want you need to change some code. Also how would you determine next product? home->category->subcategory  so all previous and next should be for sub-category ?

maulik 1intl

 Thanks  :)
Could you tell me which code change?
or create code for me i ready for pay to change or create code for me?

Sam_78

#17
You will need to edit core code to get this. Better option is to make an extension

But try this if it works for you because I think you have some custom code already:

https://github.com/abantecart/abantecart-src/blob/master/public_html/storefront/controller/pages/product/product.php#L750

if(isset($category_info) && count($category_info) > 0){
         $nextPrevProducts =  $this->model_catalog_product->getProductNextPrevProducts($product_id, $category_info['category_id']);
         $this->data['nextPrevProducts'] = $nextPrevProducts;
      }

right above foreach ($results as $result) {

-----
https://github.com/abantecart/abantecart-src/blob/master/public_html/storefront/model/catalog/product.php

Add this before last } line

public function getProductNextPrevProducts($productId, $categoryId){
      $sql = "SELECT * FROM " . $this->db->table("products_to_categories") . " WHERE `category_id` = $categoryId and product_id in ( select product_id from " . $this->db->table("products") . " where STATUS = 1)";
      $query = $this->db->query($sql);
      $product_data =  $query->rows;
      $nextPrevProduct = array();
      if(count($product_data) > 0){
         foreach($product_data as $k => $v){
            if($v['product_id'] == $productId){
               $preProductId = isset($product_data[$k - 1]['product_id']) ? $product_data[$k - 1]['product_id'] : 0;
               $nextProductId = isset($product_data[$k + 1]['product_id']) ? $product_data[$k + 1]['product_id'] : 0;
               $cateSql = "SELECT keyword FROM `url_aliases` WHERE `query` LIKE 'category_id=$categoryId'";
               $cateSqlQuery = $this->db->query($cateSql);
               $cateURL =  count($cateSqlQuery->rows) > 0 ? $cateSqlQuery->row['keyword']: '';
               
               $prevProductSql = "SELECT keyword FROM `url_aliases` WHERE `query` LIKE 'product_id=$preProductId'";
               $prevProductSqlQuery = $this->db->query($prevProductSql);
                 $prevProductURL =  count($prevProductSqlQuery->rows) > 0 ? $prevProductSqlQuery->row['keyword']: '';
               
               $nextProductSql = "SELECT keyword FROM `url_aliases` WHERE `query` LIKE 'product_id=$nextProductId'";
               $nextProductSqlQuery = $this->db->query($nextProductSql);
               $nextProductURL =  count($nextProductSqlQuery->rows) > 0 ? $nextProductSqlQuery->row['keyword']: '';
               
               $nextPrevProduct['prev_product'] = (trim($prevProductURL) != '') ? $cateURL . "/" . $prevProductURL : '';
               $nextPrevProduct['next_product'] = (trim($nextProductURL) != '') ? $cateURL . "/" . $nextProductURL : '';
            }
         }
      }
      return $nextPrevProduct;
   }

And last go to product.tpl and add this code where ever you want buttons and style it the way you want.

https://github.com/abantecart/abantecart-src/blob/master/public_html/storefront/view/default/template/pages/product/product.tpl#L268

<?php if(is_array($nextPrevProducts)){ ?>   
<div>
   <div style="float: left">
      <?php if(trim($nextPrevProducts['prev_product']) != '') {?>
         <a href="<?php echo trim($nextPrevProducts['prev_product']); ?>" > Previous Product </a>
      <?php } ?>
   </div>
   <div style="float: right">
      <?php if(trim($nextPrevProducts['next_product']) != '') {?>
         <a href="<?php echo trim($nextPrevProducts['next_product']); ?>" > Next Product </a>
      <?php } ?>
   </div>
</div>
<?php } ?>

You can contact AbanteCart developers (they have paid service abantecart.com/contact-us) or some other developers https://www.fiverr.com/nattoben This developer has made few extension for AbanteCart he might be able to help you https://marketplace.abantecart.com/index.php?rt=product/vendor&v=40 

P.S I am not promoting anyone here just trying to help you as what you want is not an easy thing. It needs some custom development

Sam_78


maulik 1intl

Not tried
i need to get local install my website but some error on it. so after that i will try code and inform you thanks  :)

HADY

Quote from: maulik 1intl on August 08, 2019, 11:51:02 AM
:) :) ok you need to put this code in file best of luck
storefront\view\default\template\common\header.tpl

YES MY FRIEND!

I knew it. thanks a lot.

I have a question about something. can i contact you privately please??


regards
Thank you In Advanced
Regards
HADY

maulik 1intl

Quote from: Sam_78 on August 09, 2019, 12:03:18 PM
You will need to edit core code to get this. Better option is to make an extension

But try this if it works for you because I think you have some custom code already:

https://github.com/abantecart/abantecart-src/blob/master/public_html/storefront/controller/pages/product/product.php#L750

if(isset($category_info) && count($category_info) > 0){
         $nextPrevProducts =  $this->model_catalog_product->getProductNextPrevProducts($product_id, $category_info['category_id']);
         $this->data['nextPrevProducts'] = $nextPrevProducts;
      }

right above foreach ($results as $result) {

-----
https://github.com/abantecart/abantecart-src/blob/master/public_html/storefront/model/catalog/product.php

Add this before last } line

public function getProductNextPrevProducts($productId, $categoryId){
      $sql = "SELECT * FROM " . $this->db->table("products_to_categories") . " WHERE `category_id` = $categoryId and product_id in ( select product_id from " . $this->db->table("products") . " where STATUS = 1)";
      $query = $this->db->query($sql);
      $product_data =  $query->rows;
      $nextPrevProduct = array();
      if(count($product_data) > 0){
         foreach($product_data as $k => $v){
            if($v['product_id'] == $productId){
               $preProductId = isset($product_data[$k - 1]['product_id']) ? $product_data[$k - 1]['product_id'] : 0;
               $nextProductId = isset($product_data[$k + 1]['product_id']) ? $product_data[$k + 1]['product_id'] : 0;
               $cateSql = "SELECT keyword FROM `url_aliases` WHERE `query` LIKE 'category_id=$categoryId'";
               $cateSqlQuery = $this->db->query($cateSql);
               $cateURL =  count($cateSqlQuery->rows) > 0 ? $cateSqlQuery->row['keyword']: '';
               
               $prevProductSql = "SELECT keyword FROM `url_aliases` WHERE `query` LIKE 'product_id=$preProductId'";
               $prevProductSqlQuery = $this->db->query($prevProductSql);
                 $prevProductURL =  count($prevProductSqlQuery->rows) > 0 ? $prevProductSqlQuery->row['keyword']: '';
               
               $nextProductSql = "SELECT keyword FROM `url_aliases` WHERE `query` LIKE 'product_id=$nextProductId'";
               $nextProductSqlQuery = $this->db->query($nextProductSql);
               $nextProductURL =  count($nextProductSqlQuery->rows) > 0 ? $nextProductSqlQuery->row['keyword']: '';
               
               $nextPrevProduct['prev_product'] = (trim($prevProductURL) != '') ? $cateURL . "/" . $prevProductURL : '';
               $nextPrevProduct['next_product'] = (trim($nextProductURL) != '') ? $cateURL . "/" . $nextProductURL : '';
            }
         }
      }
      return $nextPrevProduct;
   }

And last go to product.tpl and add this code where ever you want buttons and style it the way you want.

https://github.com/abantecart/abantecart-src/blob/master/public_html/storefront/view/default/template/pages/product/product.tpl#L268

<?php if(is_array($nextPrevProducts)){ ?>   
<div>
   <div style="float: left">
      <?php if(trim($nextPrevProducts['prev_product']) != '') {?>
         <a href="<?php echo trim($nextPrevProducts['prev_product']); ?>" > Previous Product </a>
      <?php } ?>
   </div>
   <div style="float: right">
      <?php if(trim($nextPrevProducts['next_product']) != '') {?>
         <a href="<?php echo trim($nextPrevProducts['next_product']); ?>" > Next Product </a>
      <?php } ?>
   </div>
</div>
<?php } ?>

You can contact AbanteCart developers (they have paid service abantecart.com/contact-us) or some other developers https://www.fiverr.com/nattoben This developer has made few extension for AbanteCart he might be able to help you https://marketplace.abantecart.com/index.php?rt=product/vendor&v=40 

P.S I am not promoting anyone here just trying to help you as what you want is not an easy thing. It needs some custom development



Nice work and Thanks you so much   :) :) :) :) :)
                           i am just try your code today in my local server but its show me some error.i am just put your code for new install abantecart in localhost and add your above code in it.
/storefront/controller/pages/product/product.php#L750

$results = $this->model_catalog_product->getProductTags($product_id);
      /* Sam_78*/
      if(isset($category_info) && count($category_info) > 0){
         $nextPrevProducts =  $this->model_catalog_product->getProductNextPrevProducts($product_id, $category_info['category_id']);
         $this->data['nextPrevProducts'] = $nextPrevProducts;
      }
      /* Sam_78*/
storefront/model/catalog/product.php
    this code also add after add this code it's start error to show i was put code as after
public function hasTrackOptions{} function is end and also add last line before } this.
i am attach image of error to show.


thanks you so much  :) :) :) :)

Sam_78

what error are you getting? send errors from error log file so I can look at it.

maulik 1intl

#23
Quote from: Sam_78 on August 19, 2019, 10:44:58 AM
what error are you getting? send errors from error log file so I can look at it.

Thanks you so much for replay

Above error is database name table error which i was change and now i was update in live project but Previous Product and next product link not show in page or not get value of product id. i was attach image that not id get.

As per above code add in all file in live project http://1intl.com

Thanks so much  :) :) :)

maulik 1intl

Thanks   :) :) :) :) :)
attach all there file with code but data is not display id.

HADY

Thank you In Advanced
Regards
HADY

maulik 1intl

#26
Quote from: HADY on August 20, 2019, 08:03:53 AM
hi!

Did you fixed that ??

Thanks
No sir i can't fix it.there is no date was found.in query

maulik 1intl


Thanks  :) :) :)

i am also try to display id with this
<?php  echo "<pre>"; print_r($nextPrevProducts['prev_product']);exit;?>
but no data was display??????

Sam_78

Yes that's because you are not using SEO url's
Can you try this https://abantecart.atlassian.net/wiki/spaces/AD/pages/7962664/SEO+URL+s
Right now your url is http://1intl.com/10121?product_id=382 which is not good for SEO as url doesn't mean anything to google or any other search engine. Once you have SEO url turned on you will have table url_aliases which will have values like query = product_id=382 keyword= shirt-pant 
and my code will work. I have tested it on fresh install and it worked for me.

maulik 1intl

Thanks bro Sam_78 your awesome great your great's in this filed bro.
Thanks you very much bro  :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :)
He is nice and great skill in this filed.
Thanks Sam_78  very much

Forum Rules Code of conduct
AbanteCart.com 2010 -