Σελίδα 1 από 1

Σύγκριση προϊόντων στο header

Δημοσιεύτηκε: 11 Ιαν 2022, 0:46
από kainblock
Με το default θέμα του opencart δεν είναι εύκολο ο χρήστης να έχει πρόσβαση στην σύγκριση προϊόντων και έτσι σκέφτηκα να την προσθέσω στο header.

Έκανα τις παρακάτω αλλαγές:
Πρόσθεσα την γλώσσα, στο cataloc/language/el-gr/el-gr.php
Κώδικας: Επιλογή όλων
....
// Buttons
$_['text_compare']          = 'Σύγκριση Προϊόντων (%s)';
$_['button_address_add']    = 'Προσθήκη Διεύθυνσης';
$_['button_back']           = 'Επιστροφή';
....
Αντίστοιχα έπραξα και στο en-gb.php

Στο 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">&times;</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() {

	}
}
με την παρακάτω:
Κώδικας: Επιλογή όλων
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">&times;</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() {

	}
}
Οι γνώσεις μου από ajax είναι νηπιαγωγείου και έφτιαξα τα παραπάνω αντιγράφοντας λίγο τον κώδικα του wishlist και λίγο ψάχνοντας στο internet

Προκύπτουν 2 προβλήματα. Το 1 είναι ότι όταν είναι 0 τα προϊόντα στην σύγκριση, δεν εμφανίζεται ο αριθμός 0 αλλά (%s). Αν προστεθεί κάποιον προϊόν το νούμερο εμφανίζεται σωστά (εικόνα στα συνημμένα)

Το 2ο πρόβλημα είναι στο σύνδεσμο του κουμπιού ο οποίος σε κατευθύνει στην αρχική σελίδα και όχι στην σύγκριση προϊόντων. Πρακτικά εμφανίζεται με το href κενό(εικόνα στα συνημμένα)

Re: Σύγκριση προϊόντων στο header

Δημοσιεύτηκε: 11 Ιαν 2022, 13:46
από Alexandra
Καλησπέρα,

Δοκίμασε τα ακόλουθα
Κώδικας: Επιλογή όλων
$data['text_compare'] = sprintf($this->language->get('text_compare'), !empty($this->session->data['compare']) ? count($this->session->data['compare']) : 0);
Κώδικας: Επιλογή όλων
$data['compare'] = $this->url->link('product/compare');

Re: Σύγκριση προϊόντων στο header

Δημοσιεύτηκε: 02 Μαρ 2022, 11:04
από kainblock
Είχα άλλες προτεραιότητες και έπιασα το συγκεκριμένο ζήτημα μετά από καιρό. Το έλυσα μάλιστα σε λιγότερο από 5 λεπτά.
Το πρόβλημα βρίσκεται στην λανθασμένη επιλογή αρχείου γλώσσας. Η προσθήκη πρέπει να γίνει στο /public_html/catalog/language/el-gr/common/header.php και ΟΧΙ στο cataloc/language/el-gr/el-gr.php

Αντίστοιχα η αλλαγή πρέπει να γίνει και σε όποια άλλη γλώσσα χρησιμοποιείτε.

Αλεξάνδρα σ' ευχαριστώ άλλη μια φορά για την βοήθεια σου. Κρατάς ζωντανή την κοινότητα !

Re: Σύγκριση προϊόντων στο header

Δημοσιεύτηκε: 02 Μαρ 2022, 12:22
από Alexandra
Να 'σαι καλά!