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

Как вывести счетчик количества заказов на фронтенд?


Recommended Posts

16 минут назад, chukcha сказал:

также..

Кэп очевидность)), я функцию php из контролера добавил в контроллер хедера, и код счетчика вынес в тплку хедера, но че то ругается ундефенед индекс, что то значит не до конца сделал, куда копать?

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


14 минут назад, zagarrussia сказал:

Кэп очевидность)), я функцию php из контролера добавил в контроллер хедера, и код счетчика вынес в тплку хедера, но че то ругается ундефенед индекс, что то значит не до конца сделал, куда копать?

У меня нет магического шара

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

13 минут назад, nikifalex сказал:

в какой строке ? там дальше в сообщении написано "в строке ...." приведите тут номер строки

не он просто говорит что то что я вставил неопределеный индекс 

Notice: Undefined variable: total in .../catalog/view/theme/newstore/template/common/header.tpl

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


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

и дальше должен быть номер строки. in line ....

если нет номер строки, то у вас php бракованный, надо менять

 

а есть, только что это дает? 367 строка это где я вставил

 <h2 class="pull-right"><?php echo $total; ?></h2>

image.thumb.png.733b1c4aec71260a5a4a399efc7e890e.png

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


19 часов назад, buslikdrev сказал:

Покажите, что вставили и куда именно и обновили-ли модификаторы и кэш?

модификаторы обновлял.

Вставил это:

class ControllerExtensionDashboardOrder extends Controller {
	private $error = array();

	public function index() {
		$this->load->language('extension/dashboard/order');

		$this->document->setTitle($this->language->get('heading_title'));

		$this->load->model('setting/setting');

		if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
			$this->model_setting_setting->editSetting('dashboard_order', $this->request->post);

			$this->session->data['success'] = $this->language->get('text_success');

			$this->response->redirect($this->url->link('extension/extension', 'token=' . $this->session->data['token'] . '&type=dashboard', true));
		}

		$data['heading_title'] = $this->language->get('heading_title');
		
		$data['text_edit'] = $this->language->get('text_edit');
		$data['text_enabled'] = $this->language->get('text_enabled');
		$data['text_disabled'] = $this->language->get('text_disabled');

		$data['entry_width'] = $this->language->get('entry_width');
		$data['entry_status'] = $this->language->get('entry_status');
		$data['entry_sort_order'] = $this->language->get('entry_sort_order');

		$data['button_save'] = $this->language->get('button_save');
		$data['button_cancel'] = $this->language->get('button_cancel');

		if (isset($this->error['warning'])) {
			$data['error_warning'] = $this->error['warning'];
		} else {
			$data['error_warning'] = '';
		}

		$data['breadcrumbs'] = array();

		$data['breadcrumbs'][] = array(
			'text' => $this->language->get('text_home'),
			'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], true)
		);

		$data['breadcrumbs'][] = array(
			'text' => $this->language->get('text_extension'),
			'href' => $this->url->link('extension/extension', 'token=' . $this->session->data['token'] . '&type=dashboard', true)
		);

		$data['breadcrumbs'][] = array(
			'text' => $this->language->get('heading_title'),
			'href' => $this->url->link('extension/dashboard/order', 'token=' . $this->session->data['token'], true)
		);

		$data['action'] = $this->url->link('extension/dashboard/order', 'token=' . $this->session->data['token'], true);

		$data['cancel'] = $this->url->link('extension/extension', 'token=' . $this->session->data['token'] . '&type=dashboard', true);

		if (isset($this->request->post['dashboard_order_width'])) {
			$data['dashboard_order_width'] = $this->request->post['dashboard_order_width'];
		} else {
			$data['dashboard_order_width'] = $this->config->get('dashboard_order_width');
		}
		
		$data['columns'] = array();
		
		for ($i = 3; $i <= 12; $i++) {
			$data['columns'][] = $i;
		}
				
		if (isset($this->request->post['dashboard_order_status'])) {
			$data['dashboard_order_status'] = $this->request->post['dashboard_order_status'];
		} else {
			$data['dashboard_order_status'] = $this->config->get('dashboard_order_status');
		}

		if (isset($this->request->post['dashboard_order_sort_order'])) {
			$data['dashboard_order_sort_order'] = $this->request->post['dashboard_order_sort_order'];
		} else {
			$data['dashboard_order_sort_order'] = $this->config->get('dashboard_order_sort_order');
		}

		$data['header'] = $this->load->controller('common/header');
		$data['column_left'] = $this->load->controller('common/column_left');
		$data['footer'] = $this->load->controller('common/footer');

		$this->response->setOutput($this->load->view('extension/dashboard/order_form', $data));
	}

	protected function validate() {
		if (!$this->user->hasPermission('modify', 'extension/analytics/google_analytics')) {
			$this->error['warning'] = $this->language->get('error_permission');
		}

		return !$this->error;
	}
	
	public function dashboard() {
		$this->load->language('extension/dashboard/order');

		$data['heading_title'] = $this->language->get('heading_title');

		$data['text_view'] = $this->language->get('text_view');

		$data['token'] = $this->session->data['token'];

		// Total Orders
		$this->load->model('sale/order');

		$today = $this->model_sale_order->getTotalOrders(array('filter_date_added' => date('Y-m-d', strtotime('-1 day'))));

		$yesterday = $this->model_sale_order->getTotalOrders(array('filter_date_added' => date('Y-m-d', strtotime('-2 day'))));

		$difference = $today - $yesterday;

		if ($difference && $today) {
			$data['percentage'] = round(($difference / $today) * 100);
		} else {
			$data['percentage'] = 0;
		}

		$order_total = $this->model_sale_order->getTotalOrders();

		if ($order_total > 1000000000000) {
			$data['total'] = round($order_total / 1000000000000, 1) . 'T';
		} elseif ($order_total > 1000000000) {
			$data['total'] = round($order_total / 1000000000, 1) . 'B';
		} elseif ($order_total > 1000000) {
			$data['total'] = round($order_total / 1000000, 1) . 'M';
		} elseif ($order_total > 1000) {
			$data['total'] = round($order_total / 1000, 1) . 'K';
		} else {
			$data['total'] = $order_total;
		}

		$data['order'] = $this->url->link('sale/order', 'token=' . $this->session->data['token'], true);

		return $this->load->view('extension/dashboard/order_info', $data);
	}
}

 

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


Нашел вывод счетчика для страницы продукта

в файл catalog/model/catalog/product.php


public function getOrdersCount($product_id){
		$sql = $this->db->query('SELECT COUNT(order_id) as total_orders 
                        FROM '.DB_PREFIX.'order_product 
                        WHERE product_id = ' . $product_id);
        return $sql->rows[0]['total_orders'];
	}

если правильно понимаю, то убрав строчку WHERE product_id = ' . $product_id); получаем все количество заказов а не отдельного товара.

 

в catalog/controller/product/product.php

 


$data['total_orders'] = $this->model_catalog_product->getOrdersCount($product_id);

и в catalog/view/theme/your_theme/template/product/product.tpl

<div class="total_orders">
<h3>Total Orders</h3>
<?php
echo $total_orders;
?>
</div>

 

Но для хедера нет пхп файла в разделе model, как быть?

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


17 минут назад, zagarrussia сказал:

Но для хедера нет пхп файла в разделе model, как быть?

1. сделать свою модель

2. в модель product,  добавить свои методы

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

4 минуты назад, fanatic сказал:

1. сделать свою модель

2. в модель product,  добавить свои методы

а как его подключать, создам допустим я файл в model/header.php вставлю скрипт в него, но его же надо как то определить он сам по себе ведь не будет этот файл работать?

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


файл model/header/header.php

подключаем

$this->load->model('header/header');

вызываем метод

$this->model_header_header->ваш метод();

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

9 минут назад, fanatic сказал:

файл model/header/header.php

подключаем


$this->load->model('header/header');

вызываем метод

$this->model_header_header->ваш метод();

 

$this->load->model('header/header'); – Это получается в контроллере хедера пишу?

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


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

Это получается в контроллере хедера пишу?

да.  в каком контроллере нужно вызвать метод модели, в том и подгужаете

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

я в контроллер хедера вставил следующее в конце: 

     $this->load->model('header/header');
		$this->model_header_header->getOrdersCount($product_id);
		$data['total_orders'] = $this->model_header_header->getOrdersCount($product_id);

и еще не понимаю надо ли model хедера в класс оборачивать?

сейчас файл модели хедера выглядет так и что то где то не работает ((

<?php
class Modelheadertotal extends Model {
public function getOrdersCount($product_id){
		$sql = $this->db->query('SELECT COUNT(order_id) as total_orders 
                        FROM '.DB_PREFIX.'order_product);
        return $sql->rows[0]['total_orders'];
	}
}

вылезает ошибка Notice: Undefined variable: total_orders in ...httpdocs/catalog/view/theme/newstore/template/common/header.tpl on line 367

 

кэш чистил

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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