OpenCart-Hellas 

Η Ελληνική κοινότητα υποστήριξης του Opencart

Θέματα που αφορούν ρυθμίσεις λειτουργίας της εφαρμογής.
#5771
Καλησπέρα σας
Δοκίμασα να τρέξω την υπηρεσία του σκρουτζ αξιολόγησης προϊόντος στην καρτέλα αξιολόγηση του opencart
Η έκδοση που χρησιμοποιώ είναι η 2.3.χ και το θέμα είναι το journal 3 . Το div που δίνει το skroutz το έβαλα στην σελίδα view/theme/journal3/template/product/review.tpl
Καθώς δεν υπάρχει η δεν βρήκα κάποια σελίδα στο controler που να αντιστοιχεί στη σελίδα αυτή, φόρτωσα το product_id μέσω του session απο την σελίδα product.
έβαλα ένα τεστ echo πριν και μετά το script ώστε να βεβαιωθώ ότι οι τιμές θα είναι αυτές που πρέπει και έτρεξα το σιτε.
Οι αξιολογήσεις μοιάζανε να δουλεύουν σωστά , όμως μετά το καθάρισμα τις cache οι αξιολογήσεις χάνονταν, χωρίς όμως να έχει χαθεί το echo που εμφάνιζε το product_id.
Μπορεί κάποιος να έχει κάποια ιδέα του τι μπορεί να φταίει.
Και τα Skroutz Analytics καθώς και η κατάσταση του καταστήματος στο skroytz λειτουργούν κανονικά
Ευχαριστώ πολύ
#5772
Κώδικας: Επιλογή όλων
$product_id = ($_SESSION['product_id']);
echo $product_id ;
unset($_SESSION['product_id']);
echo "<br/>";
echo $product_id ; 
?> 
<div id="skroutz-product-reviews-extended" data-product-id= "<?php echo htmlspecialchars($product_id) ?>"></div>
<?php 
echo "<br/>"; 
?> 
Έχω κάνει echo την μεταβλητή και μόλις πάρει τιμή απο το session και αφού κάνω unset το session και μετά το πέρασμα απο το div και δουλεύει σωστά .
Όμως οι αξιολογήσεις προϊόντων δεν δουλεύουν.
Παρακάτω είναι το αποτέλεσμα που βγάζει η προβολή inspector
Κώδικας: Επιλογή όλων
61200
61200
<div id="skroutz-product-reviews-extended" data-product-id"61200"> </div>
61200
Όπου φαίνεται το print του product-id πριν και μετά το div καθώς και η εισαγωγή του στο script
Και τα analytics καθώς και η λειτουργία προβολής είναι ενεργοποιημένα απο το skroutz
ευχαριστώ
#5773
Καλησπέρα σας
Η απάντηση που πήρα στο ticket που έκανα στο skroutz αναφέρει ότι
Ο λόγος για τον οποίο οι αξιολογήσεις στο κατάστημά σας εμφανίζονται τυχαία μετά από κάθε refresh στις σελίδες, οφείλεται στο ότι μόλις φορτωθεί ο κώδικας του Skroutz Analytics ψάχνει να βρει το αντίστοιχο html element και να κάνει render τις αξιολογήσεις.

Όμως εσείς αυτό το html element το κάνετε append στο body ασύχρονα (κάνετε ajax call).

Συνεπώς αν ο κώδικάς σας τρέξει πριν από τον κώδικα του Skroutz Analytics και προλάβει να βάλει το div με id=skroutz-product-reviews-inline οι αξιολογήσεις θα εμφανιστούνε.

Αν όμως ο κώδικας του Skroutz Analytics τρέξει πριν "μπει" το html element από τον κώδικά σας δεν θα το βρει και δεν θα εμφανίσει τίποτα.

Η προτεινόμενη λύση είναι αυτό το html element (div id=skroutz-product-reviews-inline) να γίνεται render server side, σύγχρονα, δηλαδή στο αρχικό html που σερβίρεται έτσι ώστε μόλις τρέξει ο κώδικας του Skroutz Analytics να υπάρχει πάντα το element.
όμως δυστυχώς τα review πρέπει να παραμείνουν μέσα στην καρτέλα "αξιολογήσεις " οπου είναι μέσα σε ένα ajax.
Υπάρχει κάποιος τρόπος να διασφαλίσω οτι το skroutz Analytics θα τρέχει αφού οριστεί το div id= skroutz-product-reviews-inline χωρίς όμως να καταστρέψει τις άλλες λειτουργίες του σκρουτζ analytics?
το analytics βρίσκετε στο header για τις ανάγκες της αποθήκευσης παραγγελιών
#5775
Καλησπέρα,

Το περιεχόμενο της καρτέλας αξιολόγησης δεν υπάρχει στο DOM κατά τη δημιουργία της σελίδας, γι' αυτό δεν μπορεί το script του Skroutz analytics να προσαρτήσει περιεχόμενο στο element της αξιολόγησης Skroutz που εμφανίζεται με ajax όταν πατηθεί το κουμπί της καρτέλας αξιολόγησης.

Για να λυθεί αυτό το πρόβλημα, θα σου πρότεινα να περιλάβεις το element της αξιολόγησης Skroutz αρχικά στο DOM και να παραμείνει κρυφό και αν πατηθεί το κουμπί της καρτέλας αξιολόγησης να εμφανίζεται αλλιώς να εξαφανίζεται.

- Αρχικά αφαίρεσε όλον τον κώδικα που πρόσθεσες καθώς και τον κώδικα php εμφάνισης του product_id.

- Στο αρχείο catalog/view/theme/journal3/template/product/product.tpl πριν από το:
Κώδικας: Επιλογή όλων
<?php if ($review_status && !$j3->document->isPopup()): ?>
- Πρόσθεσε αυτό:
Κώδικας: Επιλογή όλων
<div id="sk-rating"><div id="skroutz-product-reviews-inline" data-product-id="<?php echo $product_id; ?>"></div></div>
<script>
  $('#sk-rating').hide();
  $(document).on('click', '#product .tabs-container .nav-tabs li', function(){
    if ($(this).index() === 1) {
      $('#sk-rating').show();
    } else {
      $('#sk-rating').hide();
    }
  });
</script>
Αναλόγως το theme που έχεις ενδέχεται να χρειαστεί να κάνει κάποια αλλαγή στο selector που επιλέγει την καρτέλα
Κώδικας: Επιλογή όλων
#product .tabs-container .nav-tabs li 
και στο index της καρτέλας (εδώ με index 1 επιλέγει την δεύτερη καρτέλα ως καρτέλα αξιολογήσεων)
Κώδικας: Επιλογή όλων
if ($(this).index() === 1) { 
#5778
Καλησπέρα σας και ευχαριστώ για την βοήθεια
δοκίμασα να εκτελέσω την ιδέα που μου προτείνατε αλλά δυστυχώς το αποτέλεσμα είναι το ίδιο.
όταν πατάω στην καρτέλα αξιολογήσεις index() === 2 τότε εμφανίζετε άδειο το div sk_rating, ενώ το αποτέλεσμα του κώδικα δείχνει να έχει πάρει το id κανονικά.
Δοκίμασα και με την χρήση της append να το περάσω σε κάποιο άλλο div αλλά δεν είχε διαφορά.
Το πρόβλημα είναι οτι πρέπει κάπως να εκτελείτε πριν εκτελεστεί το skrouz analytics αλλά δεν ξέρω πως μπορώ να το κάνω αυτό ? η αν είναι κάποιο άλλο το λάθος που κάνω .
Με εκτίμηση
#5779
Καλησπέρα,

το index() === 2 δεν επιλέγει την δεύτερη καρτέλα αλλά την τρίτη, τα indexes ξεκινάνε από 0.
Αυτό που σου έγραψα είναι δοκιμασμένο και λειτουργεί. Κάτι δεν κάνεις σωστά.
Το script φορτώνει το skroutz rating πάνω από τα αστεράκια της αξιολόγησης και το κρατάει κρυφό. Έτσι βρίσκεται ήδη στο DOM κατά το φόρτωμα της σελίδας και γίνεται populate από το Skroutz analytics. Αν επιλεγεί η καρτέλα 2 δηλαδή index() === 1 τότε το εμφανίζει και αν επιλεγεί άλλη καρτέλα το εξαφανίζει.
#5780
εννοείτε με το index ==2 είναι η τρίτη καρτέρα απλά είναι έτσι η δομή του σιτε μου, καταλαβαίνετε οτι δεν μένω σε αυτό και εννοείτε οτι τεσταρα αν όντως το div κάνει show η hiden.
Απλά όταν κάνει show εμφανίζει ένα κενό div πάνω απο το rating
Κώδικας: Επιλογή όλων
<div id="sk-rating"><div id="skroutz-product-reviews-inline" data-product-id="<?php echo $product_id; ?>"></div></div>

<script>
  $('#sk-rating').hide();
  $(document).on('click', '#product-product .tabs-container .nav-tabs li', function(){
    if ($(this).index() === 2) {
      $('#sk-rating').show();
	  console.log("telikotest"); 
    } else {
      $('#sk-rating').hide();
    }
  });
</script>
          <?php if ($review_status && !$j3->document->isPopup()):
 ?>
#product-product το είναι το element στο θέμα για αυτό το άλλαξα
ευχαριστώ πολύ
#5781
Κάτι άλλο φταίει. Για να το εντοπίσεις κάνε το βήμα βήμα.

Πάνω από το:
Κώδικας: Επιλογή όλων
<?php if ($review_status && !$j3->document->isPopup()): ?>
Βάλε το ακόλουθο χωρίς το script και λογικά θα πρέπει να βλέπεις μονίμως το skroutz rate.
Κώδικας: Επιλογή όλων
<div id="sk-rating"><div id="skroutz-product-reviews-inline" data-product-id="<?php echo $product_id; ?>"></div></div>
Αν δεν το βλέπεις, τότε ψάξε την αιτία. Εναλλακτικά αν το site είναι online και μπορώ να το δω, θα μπορέσω να σε βοηθήσω περισσότερο.
#5783
ακόμα και ξερό όταν δοκίμασα να βάλω
<?php endif; ?>
Κώδικας: Επιλογή όλων
<div id="skroutz-product-reviews-inline" data-product-id="<?php echo $product_id; ?>"></div>

<?php echo $product_id; ?>
εμφάνιζε απο κάτω το product_id άρα δουλεύει η echo αλλα δν δουλεύει το skroutz_id
στον ισπέκτροα όμως μου δείχνει οτι το έχει πάρει :(
τι μπορεί να φταίει
#5784
Είσαι σίγουρος ότι στο skroutz backend το έχεις ενεργοποιημένο;

Αν δεν είναι αυτό, για να σου πω περισσότερα θα πρέπει να δω κώδικα.

Σας ευχαριστώ πολύ για την απάντηση, σκεφτείτε η ε[…]

Έλεγξε αν έχεις πολύ μεγάλα αρχεία εικόνων και αν […]

Κάνε ένα restart τον σερβερ. (βασικα την λειτουργι[…]

Vqmod and SEARCH NOT FOUND

Καλησπέρα, έχω ένα xml που βγάζει αυτό το λάθος […]

Πριν ζητήσετε βοήθεια στο φόρουμ, παρακαλούμε ελέγξτε αν υπάρχει έτοιμη λύση στο OpenCart Extension Marketplace!