Перейти к содержанию
Официальный форум поддержки Simpla

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

Доброго Всем времени суток.

Не как не могу сделать вывод названия группы покупателя на странице Заказы, именно в какой группе он(покупатель) находится на страницы заказов.

Сделал вывод названия группы на странице "Покупатели", через {$user->group_id->name|escape} - получилось.

А вот на странице заказов не как не получается, Помогите люди добрые! 

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

Сделал вывод названия группы на странице "Покупатели", через {$user->group_id->name|escape} - получилось.

 

Это абсурд! Максимум что вы такой переменной выведите - это текст ошибки.

Если же кто то вам туда не всунул объект вместо инта. Тогда руки бы таким мастерам поровнять... 

 

{if $group}
{$group->name} 
{/if}
Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты

 

{if $group}
{$group->name} 
{/if}

 

Этим кодом предлагается способ решения вопроса? У меня такой не работает в админке на странице отдельного заказа (order.tpl). Работает так:

{$user->group_name} 

Если же вопрос ТС относится к странице СПИСКА заказов в админке (orders.tpl), то для вывода там надо и PHP код менять...

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

Этим кодом предлагается способ решения вопроса? У меня такой не работает в админке на странице отдельного заказа (order.tpl). Работает так:

{$user->group_name} 

Если же вопрос ТС относится к странице СПИСКА заказов в админке (orders.tpl), то для вывода там надо и PHP код менять...

Спасибо за ответ. Но мне надо что бы выводилось в (orders.tpl). Что надо в общем. Что бы в списке заказов, ну допустим ( Заказ №11111, было рядом где то, ну допустим под номером заказа, было написано : "Частый покупатель"), где "частый покупатель" - это одна из групп пользователя.

Изменено пользователем snappk
Ссылка на сообщение
Поделиться на другие сайты
  • Решение

Спасибо за ответ. Но мне надо что бы выводилось в (orders.tpl). Что надо в общем. Что бы в списке заказов, ну допустим ( Заказ №11111, было рядом где то, ну допустим под номером заказа, было написано : "Частый покупатель"), где "частый покупатель" - это одна из групп пользователя.

Файл simpla/OrdersAdmin.php найти:

// Отображение
$orders = array();
foreach($this->orders->get_orders($filter) as $o)
	$orders[$o->id] = $o;

И заменить на:

// Отображение
$orders = array();
foreach($this->orders->get_orders($filter) as $o)
{
	if(!empty($o->user_id))
	{
		$o->user = $this->users->get_user(intval($o->user_id));
	}
	$orders[$o->id] = $o;
}

В шаблоне вам теперь будет доступен объект {$order->user->group_name}.

Конечно решение не лучшее т.к. делает лишние запросы в БД в каждой интерации цикла.

Правильнее будет расширить функцию get_users добавив фильтрацию по ID пользователей передавая массив айдишек, но у меня не так уж много времени чтобы расписывать кучу мануала, так что кому не нравиться молча проходим мимо не воняя (особенно касается Корса).

Изменено пользователем Noxter
Ссылка на сообщение
Поделиться на другие сайты

Файл simpla/OrdersAdmin.php найти:

// Отображение
$orders = array();
foreach($this->orders->get_orders($filter) as $o)
	$orders[$o->id] = $o;

И заменить на:

// Отображение
$orders = array();
foreach($this->orders->get_orders($filter) as $o)
{
	if(!empty($o->user_id))
	{
		$o->user = $this->users->get_user(intval($o->user_id));
	}
	$orders[$o->id] = $o;
}

В шаблоне вам теперь будет доступен объект {$order->user->group_name}.

Конечно решение не лучшее т.к. делает лишние запросы в БД в каждой интерации цикла.

Правильнее будет расширить функцию get_users добавив фильтрацию по ID пользователей передавая массив айдишек, но у меня не так уж много времени чтобы расписывать кучу мануала, так что кому не нравиться молча проходим мимо не воняя (особенно касается Корса).

Noxter - спасибо большое Вам! Всё работает. Задача решена! 

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

Файл simpla/OrdersAdmin.php найти:

// Отображение
$orders = array();
foreach($this->orders->get_orders($filter) as $o)
	$orders[$o->id] = $o;

И заменить на:

// Отображение
$orders = array();
foreach($this->orders->get_orders($filter) as $o)
{
	if(!empty($o->user_id))
	{
		$o->user = $this->users->get_user(intval($o->user_id));
	}
	$orders[$o->id] = $o;
}

В шаблоне вам теперь будет доступен объект {$order->user->group_name}.

Конечно решение не лучшее т.к. делает лишние запросы в БД в каждой интерации цикла.

Правильнее будет расширить функцию get_users добавив фильтрацию по ID пользователей передавая массив айдишек, но у меня не так уж много времени чтобы расписывать кучу мануала, так что кому не нравиться молча проходим мимо не воняя (особенно касается Корса).

 

Я бы немного переделал. Сделал бы какой то локальный массив для пользователей. То не комильфо будет если заказов много. Получение одного и тоже пользователя будет происходить столько же сколько и заказов (вместо одного) 

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

Я бы немного переделал. Сделал бы какой то локальный массив для пользователей. То не комильфо будет если заказов много. Получение одного и тоже пользователя будет происходить столько же сколько и заказов (вместо одного)

Всё верно, нужно расширять стоковое API симплы, без этого только "костыли".
Ссылка на сообщение
Поделиться на другие сайты

В аналогичных случаях, когда другие предлагают нерациональное решение, укажаемый Noxter на них набрасывается как коршун, например, в теме

http://forum.simplacms.ru/topic/12116-id-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B8-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2-%D0%B2-%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D0%B5/

прямо-таки заклевал

 

Странно то, что ты берешь заказы по программированию, а такую мелочь как решить вопрос ТС не осилил.
Полагаю что ты как был дуб дубом в программировании так и остался, и за тебя делает всё Davinci, не плохо спелись.

 

А теперь сам предлагает решения "дуб дубом"...

 

ИМХО, такие решения можно ожидать от новичков, а мастеру с "большими скилами" за такое стыдно должно быть...

 

В то время как рациональное решение написать не так уж и сложно.

		// Отображение
		$orders = array();
		$uids = array();
		foreach($this->orders->get_orders($filter) as $o){
			$orders[$o->id] = $o;
			$uids[$o->user_id]=$o->user_id;
		}
		if($uids){
			$query = $this->db->placehold("SELECT u.*, g.discount, g.name as group_name FROM __users u
		                                LEFT JOIN __groups g ON u.group_id=g.id 
										WHERE u.id IN (?@)", $uids);
			$this->db->query($query);
			$users = array();
			foreach($this->db->results() as $user)
				$users[$user->id] = $user;
			foreach($orders as &$order)
				$order->user=$users[$order->user_id];
		}

А есть способ, на мой взгляд, и еще лучше: в таблицу заказов сразу при формировании  заказа записывать новое поле названия группы - как это делается стандартно для данных покупателя. Сделать совсем несложно, зато потом вообще никаких особых запросов не потребовалось бы...

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

Так и знал напиши сразу говно начнёт вонять на весь форум...

Тьфу на тебя Корс ты вонючее

А по факту крыть чем-то можешь?

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

А по факту крыть чем-то можешь?

Тем что ничего кроме говнокода ты не смог придумать, вместо того чтобы в выборке пользователей добавить ещё один фильтр по ID пользователей (я выше даже подсказку дал) ты тупо хяуришь SQL запрос в контроллере что по концепции MVC считается плохим тоном.

Ну да откуда ты мог знать об этом если ты олдскульный говнокодер-псевдо-программист?

Как тебе такой факт - ты былокодер?

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

А по факту крыть чем-то можешь?

 

Во-первых, надо было бы конкретизировать вопрос, что именно крыть.

 

1. Основная претензия к Noxter-у была в том, что он выложил решение, подобное тому, которое сам оценил в указанной теме еще в 2016 году "дуб дубом".

И этот момент он крыть даже не пытается - должно быть,  нечем.

 

2. А поскольку, вероятно, религия не позволяет Noxter-у просто признать свой ляп, он переводит стрелки на другое. Прием знакомый. Нашел мелкий недостаток в предложенном решении

 

...SQL запрос в контроллере что по концепции MVC считается плохим тоном.

 

и бьет теперь на него. А недостаток чисто формальный, крайне спорный и особо недостатком-то не является.

 

3. А недостаток в решении Noxter-а куда хуже и и идейно ведет в тупик. В текущем решении прибавляет на странице 20-50 запросов БД вместо одного. Вроде и не страшно, если страница в админке. А мне как-то раз приходилось исправлять сайт после одного мастера, который такой прием применил дважды циклом в цикле. Так там реально приходилось ждать загрузки некоторых страниц по 20-30 сек. Причина была в том, что в итоге запросов создавалось по 2-3  тысячи на страницу...

Изменено пользователем phukortsin
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...