ArticleOpenCart index.php. Php opencart


OpenCart index.php | OpenCart Blog

В этой статье я расскажу о самом главном файле OpenCart, файле с которого начинается загрузка всего OpenCart, файле в котором подключаются все основные классы и настройки системы. Если вы хотите понять как работает OpenCart то вам обязательно нужно знать что происходит в этом файле. Встречайте, index.php.

 

Далее я приведу все строки index.php с комментариями 

 

С самого начала определяется версия системы, это нужно для некоторых модулей - знать, на какой версии их запустили

 

define('VERSION', '2.0.0.0');

 

Загружается конфигурационный файл, в котором определятся все рабочие папки OpenCart и настройки базы данных 

 

if (is_file('config.php')) { require_once('config.php'); }

 

Если папка приложения не определена, значит система еще не установлена - запускаем установку, выходим с этого файла

 

 

Загружаются основные классы, библиотеки, хелперы и проверяется версия PHP, для OpenCart 2.0 нужна версия PHP не ниже 5.3, устанавливается временная зона, глобальные переменные, если они не установлены: DOCUMENT_ROOT, REQUEST_URI, HTTP_HOST, HTTPS.

 

require_once(DIR_SYSTEM . 'startup.php');

 

Создается реестр - здесь будет храниться все: все основные классы и настройки (класс config). Этот класс есть в каждом контроллере, модели, представлении, поэтому благодаря этому классу мы получаем возможность обратиться к любому классу или настройке с любого места.

 

$registry = new Registry();

 

Создается загрузчик - с помощью него будут загружаться другие контроллеры, модели, библиотеки итд. После создания он стразу добавляется в реестр, как и все другие классы, чтобы быть доступным в любом месте из этого реестра.

 

$loader = new Loader($registry); $registry->set('load', $loader);

 

Конфигурационный класс, с помощью него можно добавлять и получать конфигурационные настройки

 

$config = new Config(); $registry->set('config', $config);

 

Класс базы данных, с помощью него можно посылать запросы базе данных и получать ответы.

 

$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE); $registry->set('db', $db);

 

Определяем магазин, это нужно для мультимагазина, когда на 1 движке может работать несколько магазинов и у каждого свои настройки

 

if (isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) { $store_query = $db->query("SELECT * FROM " . DB_PREFIX . "store WHERE REPLACE(`ssl`, 'www.', '') = '" . $db->escape('https://' . str_replace('www.', '', $_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\\') . '/') . "'"); } else { $store_query = $db->query("SELECT * FROM " . DB_PREFIX . "store WHERE REPLACE(`url`, 'www.', '') = '" . $db->escape('http://' . str_replace('www.', '', $_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\\') . '/') . "'"); }   if ($store_query->num_rows) { $config->set('config_store_id', $store_query->row['store_id']); } else { $config->set('config_store_id', 0); }

 

Теперь зная магазин получаем настройки для него..

 

$query = $db->query("SELECT * FROM `" . DB_PREFIX . "setting` WHERE store_id = '0' OR store_id = '" . (int)$config->get('config_store_id') . "' ORDER BY store_id ASC");

 

.. и записываем в конфиг каждую настройку. OpenCart при старте получает ВСЕ настройки. 

 

foreach ($query->rows as $result) { if (!$result['serialized']) { $config->set($result['key'], $result['value']); } else { $config->set($result['key'], unserialize($result['value'])); } }   if (!$store_query->num_rows) { $config->set('config_url', HTTP_SERVER); $config->set('config_ssl', HTTPS_SERVER); }

 

Класс для URL адресов, отвечает за создание ссылок

 

$url = new Url($config->get('config_url'), $config->get('config_secure') ? $config->get('config_ssl') : $config->get('config_url')); $registry->set('url', $url);

 

Класс для записи ошибок и сообщений в лог журнал. 

 

$log = new Log($config->get('config_error_filename')); $registry->set('log', $log);

 

Определяется обработчик ошибок - что нужно делать если появилась ошибка? Выводить ее на екран или писать в лог?

 

function error_handler($errno, $errstr, $errfile, $errline) { global $log, $config;   // error suppressed with @ if (error_reporting() === 0) { return false; }   switch ($errno) { case E_NOTICE: case E_USER_NOTICE: $error = 'Notice'; break; case E_WARNING: case E_USER_WARNING: $error = 'Warning'; break; case E_ERROR: case E_USER_ERROR: $error = 'Fatal Error'; break; default: $error = 'Unknown'; break; }   if ($config->get('config_error_display')) { echo '<b>' . $error . '</b>: ' . $errstr . ' in <b>' . $errfile . '</b> on line <b>' . $errline . '</b>'; }   if ($config->get('config_error_log')) { $log->write('PHP ' . $error . ': ' . $errstr . ' in ' . $errfile . ' on line ' . $errline); }   return true; }

Регистрируется обработчик ошибок

 

set_error_handler('error_handler');

 

Класс для получения данных из $_GET, $_POST, $_REQUEST, $_COOKIE, $_FILE, $_SERVER

 

$request = new Request(); $registry->set('request', $request);

 

Класс для отдачи данных пользователю

 

$response = new Response(); $response->addHeader('Content-Type: text/html; charset=utf-8'); $response->setCompression($config->get('config_compression')); $registry->set('response', $response);

 

Класс кеширования. При создании сразу жестко прописан тип кеширования - с использованием файлов, но OpenCart из коробки также поддерживает кешированеи APC и memcache, но в настройках магазина их выбрать нельзя, нужно прописать в index.php, не очень удобно.

 

$cache = new Cache('file'); $registry->set('cache', $cache);

 

Класс для работы с сессиями

 

$session = new Session(); $registry->set('session', $session);

 

Определения языка пользователя через куки, сессии, язык браузера.

$languages = array();   $query = $db->query("SELECT * FROM `" . DB_PREFIX . "language` WHERE status = '1'");   foreach ($query->rows as $result) { $languages[$result['code']] = $result; }   $detect = '';   if (isset($request->server['HTTP_ACCEPT_LANGUAGE']) && $request->server['HTTP_ACCEPT_LANGUAGE']) { $browser_languages = explode(',', $request->server['HTTP_ACCEPT_LANGUAGE']);   foreach ($browser_languages as $browser_language) { foreach ($languages as $key => $value) { if ($value['status']) { $locale = explode(',', $value['locale']);   if (in_array($browser_language, $locale)) { $detect = $key; break 2; } } } } }   if (isset($session->data['language']) && array_key_exists($session->data['language'], $languages) && $languages[$session->data['language']]['status']) { $code = $session->data['language']; } elseif (isset($request->cookie['language']) && array_key_exists($request->cookie['language'], $languages) && $languages[$request->cookie['language']]['status']) { $code = $request->cookie['language']; } elseif ($detect) { $code = $detect; } else { $code = $config->get('config_language'); }   if (!isset($session->data['language']) || $session->data['language'] != $code) { $session->data['language'] = $code; }   if (!isset($request->cookie['language']) || $request->cookie['language'] != $code) { setcookie('language', $code, time() + 60 * 60 * 24 * 30, '/', $request->server['HTTP_HOST']); }   $config->set('config_language_id', $languages[$code]['language_id']); $config->set('config_language', $languages[$code]['code']);

 

Класс для языков, с его помощью можно загружать языковые файлы. Сразу загружается главный языковый файл.

 

$language = new Language($languages[$code]['directory']); $language->load($languages[$code]['filename']); $registry->set('language', $language);

 

Класс для документа, он может устанавливать заголовок, описание, ключевые слова для страницы, а также добавлять javascript и css файлы на страницу.

 

$registry->set('document', new Document());

 

Класс пользователя

 

$customer = new Customer($registry); $registry->set('customer', $customer);

 

Определяется група пользователя, это важно так как для разных групп пользователей могут быть разные цены для товаров, скидки итд. это также нужно для OpenCart API системы

 

if ($customer->isLogged()) { $config->set('config_customer_group_id', $customer->getGroupId()); } elseif (isset($session->data['customer'])) { // For API calls $config->set('config_customer_group_id', $session->data['customer']['customer_group_id']); } elseif (isset($session->data['guest'])) { $config->set('config_customer_group_id', $session->data['guest']['customer_group_id']); }

 

Трекинг код, новшество OpenCart 2.0, можно присваивать трекинг коды и вести статистику сколько раз открыли страницу с этим кодом

 

if (isset($request->get['tracking'])) { setcookie('tracking', $request->get['tracking'], time() + 3600 * 24 * 1000, '/'); $db->query("UPDATE `" . DB_PREFIX . "marketing` SET clicks = (clicks + 1) WHERE code = '" . $db->escape($request->get['tracking']) . "'"); }

 

Партнерская программа

 

$registry->set('affiliate', new Affiliate($registry));

 

Валюта

 

$registry->set('currency', new Currency($registry));

 

Налоги

 

$registry->set('tax', new Tax($registry));

 

Класс веса

 

$registry->set('weight', new Weight($registry));

 

Класс длины

 

$registry->set('length', new Length($registry));

 

Класс корзины

 

$registry->set('cart', new Cart($registry));

 

Класс кодировщика

 

$registry->set('encryption', new Encryption($config->get('config_encryption')));

 

OpenBay Pro

 

$registry->set('openbay', new Openbay($registry));

 

 

$event = new Event($registry); $registry->set('event', $event);   $query = $db->query("SELECT * FROM " . DB_PREFIX . "event");   foreach ($query->rows as $result) { $event->register($result['trigger'], $result['action']); }

 

Фронт контроллер

 

$controller = new Front($registry);

 

Режим разработки, добавляется через предварительное действие, то есть выполняется раньше любых действий

 

$controller->addPreAction(new Action('common/maintenance'));

 

СЕО ссылки или ЧПУ так же добавляются через предварительное действие

 

$controller->addPreAction(new Action('common/seo_url'));

 

Определяется главный путь, если он есть то создается действие для этого пути, если его нет, то действие создается для домашней страницы

 

if (isset($request->get['route'])) { $action = new Action($request->get['route']); } else { $action = new Action('common/home'); }

 

Действие, созданное перед этим, запускается на выполнение, если контроллер для него не будет найден то запуститься действие "страница не найдена"

 

$controller->dispatch($action, new Action('error/not_found'));

 

Результат выполнения отдается пользователю, обычно выводится на экран

 

$response->output();

 

sv2109.com

php - Удалить index.php? Route = common/home из OpenCart

Шаг 01. Включите URL-адреса USE SEO в настройках сервера магазина

Перейдите в "Систему" ​​и нажмите "Настройки". Найдите магазин, который хотите изменить, и нажмите ссылку "Изменить" справа. Наконец, перейдите на вкладку "Сервер" и установите для параметра "URL-адреса" URL-адреса "Да" и сохраните настройки.

Примечание. Ключевые слова не будут созданы для вас автоматически. У вас также должен быть включен mod_rewrite Apache. Большинство веб-хостов будут иметь это по умолчанию. Шаг 3 этого руководства объяснит, как добавить ключевые слова.

Шаг 02. Измените некоторый контент в вашем файле .htaccess, чтобы сделать свою домашнюю страницу URL-адрес URL-адреса Дружественным

Перейдите на панель управления хостом и отредактируйте файл .htaccess. Иногда этот файл скрыт, чтобы отобразить его, вы можете щелкнуть на файловом менеджере панели управления веб-хостом и пометить опцию show hidden files, а затем кнопку "go".

После обнаружения файла .htaccess измените следующие строки:

RewriteBase / RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L] RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

To:

RewriteBase / RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L] RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] RewriteCond %{QUERY_STRING} ^route=common/home$ RewriteRule ^index\.php$ http://www.yourwebsite.co.uk? [R=301,L]

Если вы сделаете шаг выше своей домашней страницы, это изменится примерно так: http://yourwebsite.com/index.php?route=common/home: http://yourwebsite.com

Шаг 03. Введите ключевые слова SEO для URL-адресов вручную Наконец, вам нужно ввести ключевые слова SEO для каждой страницы, информации, продукта и категории, для которой вы хотите переписать URL. Вы можете найти поле для ключевых слов SEO на вкладке "Данные" при редактировании и создании элементов.

После ввода ключевых слов SEO ваши URL-адреса будут работать.

После того, как вы выполнили все эти инструкции, вы можете начать использовать преимущества более высокого рейтинга, увеличенного трафика и большего числа клиентов.

qaru.site

Установка CMS OpenCart на Ubuntu 16.04

Цикл статей об установке популярных CMS

OpenCart — это платформа для электронной коммерции, ориентированная на создание интернет-магазинов. Она является одной из самых популярных CMS в мире. OpenCart - это свободное программное обеспечение, распространяемым по лицензии GNU General Public License v3. Системой «OpenCart» поддерживается установка различных дополнений.

Примеры установки CMS будут происходить на VDS под управлением "чистой" ОС Ubuntu Server 16.04. Так как операционная система "чистая", первым делом установим LAMP, а именно Apache, MySQL и PHP на Linux. Это можно сделать двумя способами. Первый - при переустановке ОС на VDS можно выбрать в "рецептах" пакет LAMP:

Второй способ - это выполнить команды в терминале, например, для установки Apache: sudo apt-get update sudo apt install apache2 apache2-utils sudo systemctl enable apache2 sudo systemctl start apache2 Устанавливаем PHP и необходимые модули: sudo apt install php7.0 php7.0-mysql libapache2-mod-php7.0 php7.0-cli php7.0-cgi php7.0-gd php7.0-zip php7.0-xml php-curl php7.0-mcrypt Инсталлируем MySQL: sudo apt-get install mysql-server mysql-client

Установка OpenCart

Теперь можно приступить к созданию базы данных. Сначала входим в MySQL: mysql -u root -p Создаем базу данных с параметрами и именем opencart (вы можете задать любое желаемое): create database opencart character set utf8 collate utf8_bin; Делаем пользователя с именем opencart_user и паролем opencartpassopencart. Предоставляем ему доступ к базе данных которую мы создали: grant all privileges on opencart.* to opencart_user@localhost identified by "opencartpassopencart"; flush privileges; Закрываем MySQL: EXIT; Переходим в директорию /var/www/html/: cd /var/www/html/ Скачиваем OpenCart. Версия 2.3.0.2 является актуальной на момент написания материала: wget https://heanet.dl.sourceforge.net/project/ocstore/ocStore-2.3.0.2.zip Распаковываем архив: sudo apt-get install unzip unzip ocStore-2.3.0.2.zip Переименовываем папку: mv upload opencart Называем по другому файлы конфигурации и меняем права доступа: cp /var/www/html/opencart/config-dist.php /var/www/html/opencart/config.php cp /var/www/html/opencart/admin/config-dist.php /var/www/html/opencart/admin/config.php chown -R www-data.www-data /var/www/html/opencart/ chmod -R 755 /var/www/html/opencart/ Перезапускаем сервис Apache: /etc/init.d/apache2 restart Переходим с помощью любого веб-браузера по адресу и соглашаемся с лицензионным соглашением: IP-сервера/opencart/

Проверяем параметры сервера:

Заполняем данные для доступа к базе данных, а так же к CMS:

Удаляем папку install как и требует установка: rm -rf /var/www/html/opencart/install/

Входим в панель администратора:

Опубликовано: Декабрь 27, 2016

Please enable JavaScript to view the comments powered by Disqus.

abc-server.com


Prostoy-Site | Все права защищены © 2018 | Карта сайта