Σύγκριση προϊόντων στο header
Δημοσιεύτηκε: 11 Ιαν 2022, 0:46
Με το default θέμα του opencart δεν είναι εύκολο ο χρήστης να έχει πρόσβαση στην σύγκριση προϊόντων και έτσι σκέφτηκα να την προσθέσω στο header.
Έκανα τις παρακάτω αλλαγές:
Πρόσθεσα την γλώσσα, στο cataloc/language/el-gr/el-gr.php
Στο controller/common/header.php
Μετά το
Στο ίδιο αρχείο για να ανακατευθύνει το κουμπί στην σύγκριση προϊόντων μετά το
Έπειτα πήγα στο catalog/view/theme/default/template/common/header.twig και έπειτα από:
Τέλος στο catalog/view/javascript/common.js 'άλλαξα την παρακάτω συνάρτηση
Προκύπτουν 2 προβλήματα. Το 1 είναι ότι όταν είναι 0 τα προϊόντα στην σύγκριση, δεν εμφανίζεται ο αριθμός 0 αλλά (%s). Αν προστεθεί κάποιον προϊόν το νούμερο εμφανίζεται σωστά (εικόνα στα συνημμένα)
Το 2ο πρόβλημα είναι στο σύνδεσμο του κουμπιού ο οποίος σε κατευθύνει στην αρχική σελίδα και όχι στην σύγκριση προϊόντων. Πρακτικά εμφανίζεται με το href κενό(εικόνα στα συνημμένα)
Έκανα τις παρακάτω αλλαγές:
Πρόσθεσα την γλώσσα, στο cataloc/language/el-gr/el-gr.php
Κώδικας: Επιλογή όλων
Αντίστοιχα έπραξα και στο en-gb.php....
// Buttons
$_['text_compare'] = 'Σύγκριση Προϊόντων (%s)';
$_['button_address_add'] = 'Προσθήκη Διεύθυνσης';
$_['button_back'] = 'Επιστροφή';
....
Στο controller/common/header.php
Μετά το
Κώδικας: Επιλογή όλων
πρόσθεσα την παρακάτω γραμμή για να εμφανίζεται η σύγκριση προϊόντων καθώς και ο αριθμός των προϊόντων που είναι στην σύγκριση
$data['direction'] = $this->language->get('direction');
Κώδικας: Επιλογή όλων
$data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));
Στο ίδιο αρχείο για να ανακατευθύνει το κουμπί στην σύγκριση προϊόντων μετά το
Κώδικας: Επιλογή όλων
πρόσθεσα :
$data['telephone'] = $this->config->get('config_telephone');
Κώδικας: Επιλογή όλων
$data['compare'] = $this->url->link('product/compare', '', true);
Έπειτα πήγα στο catalog/view/theme/default/template/common/header.twig και έπειτα από:
Κώδικας: Επιλογή όλων
πρόσθεσα την παρακάτω γραμμή:
<li><a href="{{ wishlist }}" id="wishlist-total" title="{{ text_wishlist }}"><i class="fa fa-heart"></i> <span class="hidden-xs hidden-sm hidden-md">{{ text_wishlist }}</span></a></li>
Κώδικας: Επιλογή όλων
<li><a href="{{ compare }}" id="compare-total" title="{{ text_compare }}"><i class="fa fa-exchange"></i> <span class="hidden-xs hidden-sm hidden-md">{{ text_compare }}</span></a></li>
Τέλος στο catalog/view/javascript/common.js 'άλλαξα την παρακάτω συνάρτηση
Κώδικας: Επιλογή όλων
με την παρακάτω:
var compare = {
'add': function(product_id) {
$.ajax({
url: 'index.php?route=product/compare/add',
type: 'post',
data: 'product_id=' + product_id,
dataType: 'json',
success: function(json) {
$('.alert-dismissible').remove();
if (json['success']) {
$('#content').parent().before('<div class="alert alert-success alert-dismissible"><i class="fa fa-check-circle"></i> ' + json['success'] + ' <button type="button" class="close" data-dismiss="alert">×</button></div>');
$('#compare-total').html(json['total']);
$('html, body').animate({ scrollTop: 0 }, 'slow');
}
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
},
'remove': function() {
}
}
Κώδικας: Επιλογή όλων
Οι γνώσεις μου από ajax είναι νηπιαγωγείου και έφτιαξα τα παραπάνω αντιγράφοντας λίγο τον κώδικα του wishlist και λίγο ψάχνοντας στο internet var compare = {
'add': function(product_id) {
$.ajax({
url: 'index.php?route=product/compare/add',
type: 'post',
data: 'product_id=' + product_id,
dataType: 'json',
success: function(json) {
$('.alert-dismissible').remove();
//ΑDD THIS
if (json['redirect']) {
location = json['redirect'];
}
if (json['success']) {
$('#content').parent().before('<div class="alert alert-success alert-dismissible"><i class="fa fa-check-circle"></i> ' + json['success'] + ' <button type="button" class="close" data-dismiss="alert">×</button></div>');
//CHANGE THIS
$('#compare-total span').html(json['total']);
$('#compare-total').attr('title', json['total']);
$('html, body').animate({ scrollTop: 0 }, 'slow');
}
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
},
'remove': function() {
}
}
Προκύπτουν 2 προβλήματα. Το 1 είναι ότι όταν είναι 0 τα προϊόντα στην σύγκριση, δεν εμφανίζεται ο αριθμός 0 αλλά (%s). Αν προστεθεί κάποιον προϊόν το νούμερο εμφανίζεται σωστά (εικόνα στα συνημμένα)
Το 2ο πρόβλημα είναι στο σύνδεσμο του κουμπιού ο οποίος σε κατευθύνει στην αρχική σελίδα και όχι στην σύγκριση προϊόντων. Πρακτικά εμφανίζεται με το href κενό(εικόνα στα συνημμένα)