Σελίδα 1 από 2

Εμφανιση τεμαχιων που βρισκονται ηδη στο καλαθι. ΛΥΘΗΚΕ!

Δημοσιεύτηκε: 09 Ιούλ 2021, 0:21
από SPKON
Καλησπερα,
θα ηθελα λιγο τα φωτα σας, αν ειναι εφικτο να εμφανισουμε σε καποιο σημειο στην σελιδα του προιοντος, (πχ κατω απο την τιμη) τα τεμαχια που ηδη εχουν προστεθει στο καλαθι απο το συγκεκριμενο προιον.
Το μονο που εχω βρει ειναι να εμφανιζω το συνολο των τεμαχιων ολων των προιοντων του καλαθιου στην σελιδα.
Ευχαριστω.

Εικόνα

Re: Εμφανιση τεμαχιων που βρισκονται ηδη στο καλαθι.

Δημοσιεύτηκε: 09 Ιούλ 2021, 14:22
από Alexandra
Καλησπέρα,

Σε επίπεδο PHP μπορείς στον controller του product να προσθέσεις το ακόλουθο για να λαμβάνεις στο view την μεταβλητή quantity του εκάστοτε προϊόντος.
Κώδικας: Επιλογή όλων
foreach ($this->cart->getProducts() as $product) {
  if (isset($this->request->get['product_id']) && $this->request->get['product_id'] == $product['product_id']) {
    $data['quantity'] = $product['quantity'];
  }
}

Αν θες να είναι περισσότερο προφέ η υλοποίηση, χρειάζεται να προστεθεί και σε επίπεδο javascript ένα event listener που να ελέγχει αν πατήθηκε προσθήκη στο καλάθι, να κάνει ένα AJAX call σε μία μέθοδο που να τρέχει το παραπάνω και να λαμβάνει το αποτέλεσμα και να το εμφανίζει άμεσα στον browser, αλλά αυτό ξεπερνά το scope της δωρεάν υποστήριξης.

Re: Εμφανιση τεμαχιων που βρισκονται ηδη στο καλαθι.

Δημοσιεύτηκε: 12 Ιούλ 2021, 10:59
από SPKON
Alexandra έγραψε: 09 Ιούλ 2021, 14:22 Καλησπέρα,

Σε επίπεδο PHP μπορείς στον controller του product να προσθέσεις το ακόλουθο για να λαμβάνεις στο view την μεταβλητή quantity του εκάστοτε προϊόντος.
Κώδικας: Επιλογή όλων
foreach ($this->cart->getProducts() as $product) {
  if (isset($this->request->get['product_id']) && $this->request->get['product_id'] == $product['product_id']) {
    $data['quantity'] = $product['quantity'];
  }
}
Αν θες να είναι περισσότερο προφέ η υλοποίηση, χρειάζεται να προστεθεί και σε επίπεδο javascript ένα event listener που να ελέγχει αν πατήθηκε προσθήκη στο καλάθι, να κάνει ένα AJAX call σε μία μέθοδο που να τρέχει το παραπάνω και να λαμβάνει το αποτέλεσμα και να το εμφανίζει άμεσα στον browser, αλλά αυτό ξεπερνά το scope της δωρεάν υποστήριξης.
Σας ευχαριστω θερμα, ημουν τοσο κοντα στην λυση. Ειχα καταφερει να εμφανιζω το συνολο των τεμαχιων ολων των προιοντων του καλαθιου στην σελιδα, αλλα αντιμετωπιζα οπως & τωρα ενα θεμα.
Οταν δεν υπαρχει προιον στο καλαθι εμφανιζει σφαλμα στην σελιδα του προιοντος γιατι δεν βρισκει δηλωμενη μεταβλητη στον controller μαλλον.
Κώδικας: Επιλογή όλων
Notice: Undefined variable: products_quantity in /var/www/vhosts/.../demo/catalog/view/theme/default/template/product/product.tpl on line 144 CURRENT PRODUCT ITEMS IN CART: 
Καλη συνεχεια.

Re: Εμφανιση τεμαχιων που βρισκονται ηδη στο καλαθι. ΛΥΘΗΚΕ!

Δημοσιεύτηκε: 12 Ιούλ 2021, 14:11
από Alexandra
Γι' αυτό στους κανόνες λέμε να αναφέρετε την έκδοση OpenCart.

Επίσης δεν αναφέρεις που/πως χρησιμοποιείς στον controller την μεταβλητή $products_quantity... anyway στο view σε εκδόσεις 2.x, μπορείς να το κάνεις κάπως έτσι για να ελέγχει αν η μεταβλητή υπάρχει, εναλλακτικά θα μπορούσες να την αρχικοποιήσεις στον Controller πριν το loop:
Κώδικας: Επιλογή όλων
<?php echo !empty($products_quantity) ?  $products_quantity : 0; ?>

Re: Εμφανιση τεμαχιων που βρισκονται ηδη στο καλαθι. ΛΥΘΗΚΕ!

Δημοσιεύτηκε: 12 Ιούλ 2021, 18:00
από SPKON
Alexandra έγραψε: 12 Ιούλ 2021, 14:11 Γι' αυτό στους κανόνες λέμε να αναφέρετε την έκδοση OpenCart.

Επίσης δεν αναφέρεις που/πως χρησιμοποιείς στον controller την μεταβλητή $products_quantity... anyway στο view σε εκδόσεις 2.x, μπορείς να το κάνεις κάπως έτσι για να ελέγχει αν η μεταβλητή υπάρχει, εναλλακτικά θα μπορούσες να την αρχικοποιήσεις στον Controller πριν το loop:
Κώδικας: Επιλογή όλων
<?php echo !empty($products_quantity) ?  $products_quantity : 0; ?>
Εχετε δικιο, απολογουμε για την εκδοση του OC. Επειδη ειχα σηκωσει το ιδιο ερωτημα και στο αγγλοφωνο νομισα το εγραψα και εδω.
Ειχα συμπεριλαβει τον ελεγχο στον controller μετα απο την λυση που προτεινες οπως παρακατω αλλα δεν μου δουλεψε.
Κώδικας: Επιλογή όλων
 if (.....){
.......
}
else {
	$data['products_quantity'] = '';
}
	
kai sto view ...
Κώδικας: Επιλογή όλων
<?php if ($products_quantity) { ?>
<li><?php echo "CURRENT PRODUCT ITEMS IN CART: " . $products_quantity; ?>   </li>         
<?php } 
else { ?>
<li> <?php echo "" ; ?>   </li>
Ευχαριστω.

Re: Εμφανιση τεμαχιων που βρισκονται ηδη στο καλαθι. ΛΥΘΗΚΕ!

Δημοσιεύτηκε: 12 Ιούλ 2021, 18:18
από Alexandra
Κώδικας: Επιλογή όλων
<?php echo !empty($products_quantity) ?  'CURRENT PRODUCT ITEMS IN CART: ' . $products_quantity : ''; ?>
όπου το 'CURRENT PRODUCT ITEMS IN CART: ' το αντικαθιστάς με μεταβλητή γλώσσας αργότερα.

Re: Εμφανιση τεμαχιων που βρισκονται ηδη στο καλαθι. ΛΥΘΗΚΕ!

Δημοσιεύτηκε: 12 Ιούλ 2021, 18:43
από SPKON
Alexandra έγραψε: 12 Ιούλ 2021, 18:18
Κώδικας: Επιλογή όλων
<?php echo !empty($products_quantity) ?  'CURRENT PRODUCT ITEMS IN CART: ' . $products_quantity : ''; ?>
όπου το 'CURRENT PRODUCT ITEMS IN CART: ' το αντικαθιστάς με μεταβλητή γλώσσας αργότερα.
:D :D

Re: Εμφανιση τεμαχιων που βρισκονται ηδη στο καλαθι. ΛΥΘΗΚΕ!

Δημοσιεύτηκε: 12 Ιούλ 2021, 18:47
από SPKON
SPKON έγραψε: 12 Ιούλ 2021, 18:43
Alexandra έγραψε: 12 Ιούλ 2021, 18:18
Κώδικας: Επιλογή όλων
<?php echo !empty($products_quantity) ?  'CURRENT PRODUCT ITEMS IN CART: ' . $products_quantity : ''; ?>
όπου το 'CURRENT PRODUCT ITEMS IN CART: ' το αντικαθιστάς με μεταβλητή γλώσσας αργότερα.
Επισης προσθεσα και στο javascript που ελεγχει το button-cart την εντολη location.reload(); στην συναρτηση function(json) για να κανει το refresh η σελιδα μετα την προσθεση του προιοντος στο καλαθι.

:D :D

Re: Εμφανιση τεμαχιων που βρισκονται ηδη στο καλαθι. ΛΥΘΗΚΕ!

Δημοσιεύτηκε: 12 Ιούλ 2021, 18:47
από SPKON
SPKON έγραψε: 12 Ιούλ 2021, 18:47
SPKON έγραψε: 12 Ιούλ 2021, 18:43
Alexandra έγραψε: 12 Ιούλ 2021, 18:18
Κώδικας: Επιλογή όλων
<?php echo !empty($products_quantity) ?  'CURRENT PRODUCT ITEMS IN CART: ' . $products_quantity : ''; ?>
όπου το 'CURRENT PRODUCT ITEMS IN CART: ' το αντικαθιστάς με μεταβλητή γλώσσας αργότερα.
Επισης προσθεσα και στο javascript στο τελος της product.tpl, που ελεγχει το button-cart την εντολη location.reload(); στην συναρτηση function(json) για να κανει το refresh η σελιδα μετα την προσθεση του προιοντος στο καλαθι.

:D :D

Re: Εμφανιση τεμαχιων που βρισκονται ηδη στο καλαθι. ΛΥΘΗΚΕ!

Δημοσιεύτηκε: 12 Ιούλ 2021, 18:52
από Alexandra
Εντελώς καλοπροαίρετα, η λύση location.reload(); είναι σαν να σερβίρεις σούπα κονσέρβα σε γκουρμέ εστιατόριο.