Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

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


Blackseabreathe
 Поделиться

Рекомендованные сообщения

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

 

Подскажите кто знаток в 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 сказал:

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

Это Вы в каком файле нашли?

Ссылка на комментарий
Поделиться на других сайтах


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
Ссылка на комментарий
Поделиться на других сайтах

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

define('VERSION', '2.3.0.2.3');

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

Ссылка на комментарий
Поделиться на других сайтах


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

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

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

Ссылка на комментарий
Поделиться на других сайтах

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

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

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

 

Ссылка на комментарий
Поделиться на других сайтах


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

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

 

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

Ссылка на комментарий
Поделиться на других сайтах

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

попробовал на трешке - все ок, выводит email.

Да, отлично, спасибо Вам огроменное, Милорд!

 

 

Ссылка на комментарий
Поделиться на других сайтах


Можно даже так еще сделать, по принципу 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 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.