2016-10-11 2 views
1

Извините. Я очень новичок в opencart-шаблоне, который включает в себя модель-вид-контроллер-язык. В моем проекте хотят создать многопользовательский продавец, используя opencart version 2.3.0.2. Но opencart обеспечивает только 1 продавца. Поэтому я использую расширение, которое составляет dream multiuser.Opencart 2.3.0.2: дополнительная колонка в списке продуктов с использованием многопользовательского расширения

После установки я мог видеть изменения в моем пользователе базы данных, которые добавляют новое имя столбца user_id. table user

В каталоге admin-> панели приборов есть еще один столбец, который является user_id. enter image description here

  1. Возможно ли переименовать столбец user_id с именем продавца и показать атрибут firstname? если user_id = 1, например, показанное первым именем alvin. Сделайте больше пользователей дружелюбными. Легко читаемое имя продавца вместо id.
  2. Как добавить поле фильтра имени пользователя/продавца в поле фильтров?

Благодарим вас заранее. надеюсь, вы понимаете, что написал им. Извините за плохой английский.

админ/вид/шаблон/Каталог/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(); 
} 

ответ

0

Откуда: user_ID? Можете ли вы предоставить контроллер продукта (защищенная функция getList() {)? Так что я могу дать вам полный код.

На самом деле вы можете использовать этот код для получения информации о пользователе (Имя и фамилия).

$this->load->model('user/user'); 
$user_info = $this->model_user_user->getUser(user_ID); 
$data['firstname'] = $user_info['firstname']; 
$data['lastname'] = $user_info['lastname']; 

изменить user_ID с реальными данными user_ID.