OpenCart-Hellas 

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

Αναφορές νέων & επίλυση γνωστών bugs.
#7828
Για την αυτόματη ανανέωση ισοτιμιών, το OpenCart χρησιμοποιεί την υπηρεσία finance.yahoo.com API η οποία δεν λειτουργεί πλέον.
Η ακόλουθη λύση που είναι συμβατή με εκδόσεις 2.x.x και 3.x.x, επιλύει το πρόβλημα μέσω της δωρεάν υπηρεσίας λήψης ισοτιμιών free.currencyconverterapi.com.

1. Στο https://free.currencyconverterapi.com/ πατάμε το κουμπί "Get Your Free API Key".
Στο επόμενο βήμα δίνουμε το email μας όπου θα λάβουμε το API key για δωρεάν κλήσεις στην υπηρεσία.

2. Σε ένα text editor ανοίγουμε το αρχείο: admin/model/localisation/currency.php

3. Βρίσκουμε το ακόλουθο:
Κώδικας: Επιλογή όλων
public function refresh($force = false) {

Και το μετονομάζουμε σε:
Κώδικας: Επιλογή όλων
public function old_refresh($force = false) {

4. Επάνω από την γραμμή:
Κώδικας: Επιλογή όλων
public function old_refresh($force = false) {

Προσθέτουμε την ακόλουθη μέθοδο αντικαθιστώντας το XXXXXXX στη μεταβλητή $api_key, με το API key που λάβαμε στο email.
Κώδικας: Επιλογή όλων
  public function refresh($force = false) {
    /* Compatible with currencyconverterapi.com - API v7.0 */

    $api_key = 'XXXXXXXX';

    $default_currency = $this->config->get('config_currency');

    if ($force) {
      $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");
    } else {
      $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "' AND date_modified < '" .  $this->db->escape(date('Y-m-d H:i:s', strtotime('-1 day'))) . "'");
    }

    if ($query->num_rows) {

      foreach ($query->rows as $result) {

        $currency = $result['code'];
        $currency_pair = $default_currency . '_' . $currency;

        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, 'https://free.currconv.com/api/v7/convert?q=' . $currency_pair . '&compact=ultra&apiKey=' . $api_key);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
        curl_setopt($curl, CURLOPT_TIMEOUT, 30);

        $response = curl_exec($curl);

        curl_close($curl);

        $response = json_decode($response);

        if (is_object($response) && !isset($response->error)) {

          $value = round($response->$currency_pair, 8);

          if (!empty((float)$value) && (float)$value > 0) {
            $this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . (float)$value . "', date_modified = '" .  $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = '" . $this->db->escape($currency) . "'");
          }

          $this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '1.00000', date_modified = '" .  $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = '" . $default_currency . "'");

          $this->cache->delete('currency');

        } else {
           $this->log->write(var_export($response, true));
        }

      }
    }
  }

Σημείωση: Η κλήση στο API γίνεται ξεχωριστά για κάθε νόμισμα γιατί η δωρεάν υπηρεσία ελέγχου ισοτιμιών υποστηρίζει έως δύο νομίσματα ανά κλήση.

Καλησπέρα στην ομάδα, θέλω να ρωτήσω το εξής: Σε O[…]

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

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

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

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