Извините. Я очень новичок в opencart-шаблоне, который включает в себя модель-вид-контроллер-язык. В моем проекте хотят создать многопользовательский продавец, используя opencart version 2.3.0.2. Но opencart обеспечивает только 1 продавца. Поэтому я использую расширение, которое составляет dream multiuser.Opencart 2.3.0.2: дополнительная колонка в списке продуктов с использованием многопользовательского расширения
После установки я мог видеть изменения в моем пользователе базы данных, которые добавляют новое имя столбца user_id.
В каталоге admin-> панели приборов есть еще один столбец, который является user_id.
- Возможно ли переименовать столбец user_id с именем продавца и показать атрибут firstname? если user_id = 1, например, показанное первым именем alvin. Сделайте больше пользователей дружелюбными. Легко читаемое имя продавца вместо id.
- Как добавить поле фильтра имени пользователя/продавца в поле фильтров?
Благодарим вас заранее. надеюсь, вы понимаете, что написал им. Извините за плохой английский.
админ/вид/шаблон/Каталог/product_list.tpl
<td class="text-left"><?php if ($sort == 'p.user_id') { ?>
<a href="<?php echo $sort_user_id; ?>" class="<?php echo strtolower($order); ?>"><?php echo "User_ID"; ?></a>
<?php } else { ?>
<a href="<?php echo $sort_user_id; ?>"><?php echo "User_ID"; ?></a>
<?php } ?></td>
админ/модель/пользователь/user.php
public function getUsers($data = array()) {
$sql = "SELECT * FROM `" . DB_PREFIX . "user`";
$sort_data = array(
'username',
'status',
'date_added'
);
if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
$sql .= " ORDER BY " . $data['sort'];
} else {
$sql .= " ORDER BY username";
}
if (isset($data['order']) && ($data['order'] == 'DESC')) {
$sql .= " DESC";
} else {
$sql .= " ASC";
}
if (isset($data['start']) || isset($data['limit'])) {
if ($data['start'] < 0) {
$data['start'] = 0;
}
if ($data['limit'] < 1) {
$data['limit'] = 20;
}
$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
}
$query = $this->db->query($sql);
return $query->rows;
}
админ/модель/каталог/product.php
public function getProduct($product_id) {
$query = $this->db->query("SELECT DISTINCT *, (SELECT keyword FROM " . DB_PREFIX . "url_alias WHERE query = 'product_id=" . (int)$product_id . "') AS keyword FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "'");
return $query->row;
}
public function getProducts($data = array()) {
$sql = "SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "'";
if (!empty($data['filter_name'])) {
$sql .= " AND pd.name LIKE '" . $this->db->escape($data['filter_name']) . "%'";
}
if (!empty($data['filter_model'])) {
$sql .= " AND p.model LIKE '" . $this->db->escape($data['filter_model']) . "%'";
}
if (isset($data['filter_price']) && !is_null($data['filter_price'])) {
$sql .= " AND p.price LIKE '" . $this->db->escape($data['filter_price']) . "%'";
}
if (isset($data['filter_quantity']) && !is_null($data['filter_quantity'])) {
$sql .= " AND p.quantity = '" . (int)$data['filter_quantity'] . "'";
}
if (isset($data['filter_status']) && !is_null($data['filter_status'])) {
$sql .= " AND p.status = '" . (int)$data['filter_status'] . "'";
}
if (isset($data['filter_image']) && !is_null($data['filter_image'])) {
if ($data['filter_image'] == 1) {
$sql .= " AND (p.image IS NOT NULL AND p.image <> '' AND p.image <> 'no_image.png')";
} else {
$sql .= " AND (p.image IS NULL OR p.image = '' OR p.image = 'no_image.png')";
}
}
if(!$this->user->hasPermission('access', 'extension/module/separate_products') and !$this->user->hasPermission('modify', 'localisation/order_status')){
$sql .= " AND p.user_id = '" . $this->session->data['user_id'] . "'";
}
$sql .= " GROUP BY p.product_id";
$sort_data = array(
'pd.name',
'p.model',
'p.price',
'p.quantity',
'p.user_id',
'p.status',
'p.sort_order'
);
if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
$sql .= " ORDER BY " . $data['sort'];
} else {
$sql .= " ORDER BY pd.name";
}
if (isset($data['order']) && ($data['order'] == 'DESC')) {
$sql .= " DESC";
} else {
$sql .= " ASC";
}
if (isset($data['start']) || isset($data['limit'])) {
if ($data['start'] < 0) {
$data['start'] = 0;
}
if ($data['limit'] < 1) {
$data['limit'] = 20;
}
$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
}
$query = $this->db->query($sql);
return $query->rows;
}
admin/controller/catalog/product.php
class ControllerCatalogProduct extends Controller {
private $error = array();
public function index() {
$this->load->language('catalog/product');
$this->document->setTitle($this->language->get('heading_title'));
$this->load->model('catalog/product');
$this->getList();
}