Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

OC API как получить значение поля?


Blackseabreathe

Recommended Posts

И снова привет.

 

Подскажите кто знаток в oc api, пожалуйста.

 

У любого магазина есть поле config_email.

В корне сайта я создал файл feedback.php, в параметр "to:" мне нужно вставить email из админки.

 

Как это сделать? Можно ссылку на нормальную документацию? Желательно php

 

Или есть другой вариант получить значение этого поля? Как я понял config_email не хранится в базе, да?

 

Ту доку что я читал не совсем понял. да и пример там был на питоне, к сожалению. Да и в целом доки получше не нашел.

Надіслати
Поділитися на інших сайтах


25 минут назад, Blackseabreathe сказал:

Как я понял config_email не хранится в базе, да?

Непонятно, почему вы так поняли. config_email хранится в совершенно неожиданном месте - в таблице oc_setting.
Кто бы мог подумать :)

 

Надіслати
Поділитися на інших сайтах


5 минут назад, Shureg сказал:

config_email хранится в совершенно неожиданном месте - в таблице oc_setting.

Да, только что нашел его там, спасибо за ответ. Как можно получить его в стороннем файле? Ну кроме SELECT config_email FROM .....

 

Знаете ли Вы способ подключения api в стороннем файле и путем этого api получить нужные данные? Например, в Modx api проблем с этим нет, все делается в 3-4 строки. С oc api я вообще первые раз столкнулся

Змінено користувачем Blackseabreathe
Надіслати
Поділитися на інших сайтах


Не совсем понятно, что вы понимаете под api и под "сторонним файлом".  В контексте ОС мэйл получается $this->config->get('config_email'). А со стороны, думаю, только запросом в БД.

Надіслати
Поділитися на інших сайтах


Только что, Shureg сказал:

Не совсем понятно, что вы понимаете под api и под "сторонним файлом".

 

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

 

Я так понимаю структура должна быть примерно следующая.

 

// подключаем api
if oc api !define{
define oc api, $where
}

$where = mysite->authentication(
$user = username,
$apikey = apikey
);

 

Надіслати
Поділитися на інших сайтах


Вот как config заполняется в самом опенкарте:

// Settings
$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "setting` WHERE store_id = '0' OR store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY store_id ASC");
		
foreach ($query->rows as $result) {
	if (!$result['serialized']) {
		$this->config->set($result['key'], $result['value']);
	} else {
		$this->config->set($result['key'], json_decode($result['value'], true));
	}
}

 

Надіслати
Поділитися на інших сайтах

2 часа назад, Prooksius сказал:

foreach ($query->rows as $result) { if (!$result['serialized']) { $this->config->set($result['key'], $result['value']); } else { $this->config->set($result['key'], json_decode($result['value'], true)); } }

а как получить конкретно email?

Надіслати
Поділитися на інших сайтах


как-то так

// для основного магазина
$query = $this->db->query("SELECT `value` FROM `" . DB_PREFIX . "setting` WHERE `key` = 'config_email' AND `store_id` = 0 LIMIT 1"); 
if ($query->num_rows) {
	$email = $query->row['value'];
} else {
	$email = 'не найдено';
}
Надіслати
Поділитися на інших сайтах

Если вы хотите это сделать вообще в отдельном файле, не в рамках опенкарта, можно как-то так:

// Version
define('VERSION', '2.3.0.2.3');

// Configuration
require_once('../config.php'); // путь тут зависит от того, где находится этот скрипт.

// Startup
require_once(DIR_SYSTEM . 'startup.php');

// DB
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE, DB_PORT);

$query = $db->query("SELECT `value` FROM `" . DB_PREFIX . "setting` WHERE `key` = 'config_email' AND `store_id` = 0 LIMIT 1"); 
if ($query->num_rows) {
	$email = $query->row['value'];
} else {
	$email = 'не найдено';
}

echo 'Email магазина: ' . $email;

 

  • +1 1
Надіслати
Поділитися на інших сайтах

2 минуты назад, Blackseabreathe сказал:

а тут что писать если версия например oc 3.0.3.3 так и писать 3.0.3.3?

да, должно работать, попробуйте

Надіслати
Поділитися на інших сайтах

15 минут назад, Prooksius сказал:

// Configuration require_once('../config.php'); // путь тут зависит от того, где находится этот скрипт.

этот файл, который лежит в корне, НЕ в ../admin, правильно?

 

Надіслати
Поділитися на інших сайтах


2 минуты назад, Blackseabreathe сказал:

этот файл, который лежит в корне, НЕ в ../admin, правильно?

 

да, основной предполагается, но в принципе неважно, я думаю. Нам же он нужен только из-за доступов к БД.

Надіслати
Поділитися на інших сайтах

Можно даже так еще сделать, по принципу API, если уж хотите именно API.
Вот простенький файлик, config.php его надо положить в catalog\controller\api\

И можно попробовать вызвать типа запроса API к опенкарту.

Чтобы получить весь config, к примеру, нужно перейти по адресу:
http://opencart3.site/index.php?route=api/config&api_token=###############

Чтобы получить какую-то одну настройку, надо так:
http://opencart3.site/index.php?route=api/config&key=config_email&api_token=###############

api_token - это для безопасности, чтобы никто посторонний не читал настройки.

 

 

Выдавать будет json
Надо еще поработать с правами доступа, я их не учел полноценно, ну как старт можно использовать

config.php

Змінено користувачем Prooksius
  • +1 1
Надіслати
Поділитися на інших сайтах

4 часа назад, Prooksius сказал:

// Configuration

 

require_once('../config.php'); // путь тут зависит от того, где находится этот скрипт.

Предлагаю правку

 

require_once($_SERVER['DOCUMENT_ROOT'].'/config.php');

 

Змінено користувачем Blackseabreathe
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.