2016-04-07 2 views
0

У меня есть конкретная страница с информацией (идентификатор страницы - 12), а с панели администратора я присвоил этот идентификатор страницы конкретному продукту. Например, Information-id 12 присваивается Product1. Когда пользователь покупает этот продукт, а когда статус заказа установлен на «Завершить», пользователь должен иметь доступ к этой странице (идентификатор информации). Я имею в виду, чтобы получить доступ к этой странице, пользователь должен купить, что продукт и статус заказа должны быть заполнены, и пользователь должен войти в систему.Доступ к определенной странице с некоторыми критериями в opencart

Я не понимаю, как это сделать. В order.tpl, я старался делать так, но если я скопировать URL и вставить, она может быть доступна без регистрации.

вот мой order_list.tpl

$end_date= date('Y-m-d', strtotime($start_date. ' + '.$date1. 'days')); 

     echo date('d/m/Y',strtotime($end_date)); 
     ?></td> 
     </tr> 
     <tr> 
     <td class="history">Product Name</td> 
     <?php $today = date('Y-m-d'); ?> 

     <?php if(($order['status']='Complete') AND ($today > $end_date)) { ?> 
     <td><strong><h4><font color="#FF0000">Either Your Course date is Expired or Order is not completed!!</font></h4></strong> </td> 
     <?php } 
     else { ?> 
     <td><a href="<?php echo $order['href1']; ?>"><strong><?php echo $order['pname']; ?></strong></a></td> 
     <?php } ?> 
     </tr> 

Здесь я также проверка дата истечения срока действия, которую захватывает через администратора.

Если я поставил customer_islogged(), в information.php (controller), я не могу получить доступ к другим страницам.

ответ

0

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

//catalog/model/account/order.php 

    public function checkForAccess($product_id_list){ 
     $exists = false; 
     $query = $this->db->query("SELECT product_id FROM ".DB_PREFIX."order o LEFT JOIN ".DB_PREFIX."order_product op ON (o.order_id=op.order_id) WHERE o.order_status_id=5 AND o.customer_id = '" . (int)$this->customer->getId() ."'"); 
     foreach($query->rows as $product){ 
      if(in_array($product['product_id'],$product_id_list)){ 
       $exists = true; 
       break; 
      } 
     } 
     return $exists; 
    } 

В настоящее время в этой конкретной странице вы можете проверить, если клиент завершенного купил или нет

$this->load->model('account/order'); 
//Eg Customer will have access who have purchased product 20 and 22   
$product_list = array(20,22); 
$results = $this->model_account_order->checkForAccess($product_list); 

if(!$results){ 
    //where to redirect if not valid 
    $this->response->redirect($this->url->link('common/home')); 
}