Prestashop 1.4 - Как выполнить начальный запрос MySQL на каждый запрос

Prestashop 1.4 - Как выполнить начальный запрос MySQL на каждый запрос

26.07.2019 06:28:30 Просмотров 41 Источник

Вид старой версии Prestashop, я знаю, но мне нужно выполнить начальный запрос MySQL на каждый запрос .

Где мне нужно поместить логику, чтобы alwaysвыполнялась? Вид точки инициализации приложение всегда выполняет, независимо от того, какой URL запрашивается.

Заранее спасибо.

У вопроса есть решение - Посмотреть?

Ответы - Prestashop 1.4 - Как выполнить начальный запрос MySQL на каждый запрос / Prestashop 1.4 - How to execute an initial MySQL query on every request

Является ответом!
andcl

26.07.2019 06:59:17

Наконец-то нашел решение (и умно, я думаю). И я также думаю, что этот подход может быть применим к другим версиям Prestashop (1.5, 1.6, 1.7...).

В classes/MySQL.php-файл, в функции connect, я добавляю свой запрос непосредственно перед возвращением $this->_link:

public function connect()
{
    if (!defined('_PS_DEBUG_SQL_'))
        define('_PS_DEBUG_SQL_', false);
    if ($this->_link = mysql_connect($this->_server, $this->_user, $this->_password))
    {
        if (!$this->set_db($this->_database))
            die('The database selection cannot be made.');
    }
    else
        die('Link to database cannot be established.');
    /* UTF-8 support */
    if (!mysql_query('SET NAMES \'utf8\'', $this->_link))
        die(Tools::displayError('PrestaShop Fatal error: no utf-8 support. Please check your server configuration.'));
    // removed SET GLOBAL SQL_MODE : we can't do that (see PSCFI-1548)

    /** MY QUERY IS INSERTED HERE, USING $this->_link BY THE WAY **/
    mysql_query('...', $this->_link);

    return $this->_link;
}

Таким образом, возникают 2 Преимущества:

  1. Мне не нужно поддерживать копию учетных данных базы данных, отличных от Prestashop
  2. Запрос выполняется в каждом запросе, как фронт-офиса и бэк-офиса пользовательских интерфейсов.

Я надеюсь, что это может помочь кому-нибудь.

Закрыть X