nikolayv Posted August 2, 2017 Report Share Posted August 2, 2017 Привет! Подскажите, плз, как правильно вытянуть конечную категорию для отображения в админке в order.tpl.Очевидно, что надо добавить кусок кода с отображением категории в эту часть кода. foreach($purchases as &$purchase) { if(!empty($products[$purchase->product_id])) $purchase->product = $products[$purchase->product_id]; if(!empty($variants[$purchase->variant_id])) $purchase->variant = $variants[$purchase->variant_id]; $subtotal += $purchase->price*$purchase->amount; $purchases_count += $purchase->amount; } Не могу сообразить как именно добавить, чтобы можно было вытянуть название категории.Еще и бренд желательно. Заранее спасибо за помощь. Quote Link to post Share on other sites
mishanya Posted August 2, 2017 Report Share Posted August 2, 2017 (edited) смотрите тут http://forum.simplacms.ru/topic/6519-%D0%BA%D0%B0%D0%BA-%D0%B2-%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D0%B5-%D0%B2%D1%8B%D0%B2%D0%B5%D1%81%D1%82%D0%B8-%D0%B1%D1%80%D0%B5%D0%BD%D0%B4/ и тут http://forum.simplacms.ru/topic/2807-kategoriya-tovara-v-korzine/ Edited August 2, 2017 by mishanya Quote Link to post Share on other sites
nikolayv Posted August 2, 2017 Author Report Share Posted August 2, 2017 Спасибо, но первый линк вообще пустой, во-втором немного наколеночное решение и не совсем то. Quote Link to post Share on other sites
mishanya Posted August 2, 2017 Report Share Posted August 2, 2017 у меня открывает. и чем вам не подходит решение http://forum.simplacms.ru/topic/2807-kategoriya-tovara-v-korzine/?p=23999 там выбираются категории для всех товаров, дальше раскидываются по товарам. просто нужно правильно поменять для админки Quote Link to post Share on other sites
nikolayv Posted August 2, 2017 Author Report Share Posted August 2, 2017 $categories = $this->categories->get_product_categories($purchase->product_id); foreach($categories as &$category) { $cat = $this->categories->get_category((int)$category->category_id); $p_category->categories[] = $cat; } $purchase->product->category->name=$cat->name; решил так в итоге, топик можно закрывать в order.tpl вывожу {$purchase->product->category->name} Quote Link to post Share on other sites
mishanya Posted August 2, 2017 Report Share Posted August 2, 2017 (edited) $categories = $this->categories->get_product_categories($purchase->product_id); foreach($categories as &$category) { $cat = $this->categories->get_category((int)$category->category_id); $p_category->categories[] = $cat; } $purchase->product->category->name=$cat->name; решил так в итоге, топик можно закрывать в order.tpl вывожу {$purchase->product->category->name} плохо что для каждого товара вызывается отдельно запрос в базу. 20 товаров = +20 запросов. по ссылке что я кинул реализовано лучше. в OrderAdmin.php ПЕРЕД $images = $this->products->get_images(array('product_id'=>$products_ids)); добавляете $categories = $this->categories->get_product_categories($products_ids); foreach($categories as $cs) { $cat = $this->categories->get_category((int)$cs->category_id); $products[$cs->product_id]->categories[] = $cat; } дальше используете как хотите массив категорий Edited August 2, 2017 by mishanya Quote Link to post Share on other sites
nikolayv Posted August 2, 2017 Author Report Share Posted August 2, 2017 плохо что для каждого товара вызывается отдельно запрос в базу. 20 товаров = +20 запросов. по ссылке что я кинул реализовано лучше. в OrderAdmin.php ПЕРЕД $images = $this->products->get_images(array('product_id'=>$products_ids)); добавляете $categories = $this->categories->get_product_categories($products_ids); foreach($categories as $cs) { $cat = $this->categories->get_category((int)$cs->category_id); $products[$cs->product_id]->categories[] = $cat; } дальше используете как хотите массив категорий Да, спасибо! так гораздо лучше Quote Link to post Share on other sites
kislotnik Posted August 27, 2017 Report Share Posted August 27, 2017 плохо что для каждого товара вызывается отдельно запрос в базу. 20 товаров = +20 запросов. по ссылке что я кинул реализовано лучше. в OrderAdmin.php ПЕРЕД $images = $this->products->get_images(array('product_id'=>$products_ids)); добавляете $categories = $this->categories->get_product_categories($products_ids); foreach($categories as $cs) { $cat = $this->categories->get_category((int)$cs->category_id); $products[$cs->product_id]->categories[] = $cat; } дальше используете как хотите массив категорийподскадите как вывести категорию категорию товара на странице всех заказов orders.tpl в order.tpl вывел Quote Link to post Share on other sites
Noxter Posted August 27, 2017 Report Share Posted August 27, 2017 плохо что для каждого товара вызывается отдельно запрос в базу. 20 товаров = +20 запросов. по ссылке что я кинул реализовано лучше. в OrderAdmin.php ПЕРЕД $images = $this->products->get_images(array('product_id'=>$products_ids)); добавляете $categories = $this->categories->get_product_categories($products_ids); foreach($categories as $cs) { $cat = $this->categories->get_category((int)$cs->category_id); $products[$cs->product_id]->categories[] = $cat; } дальше используете как хотите массив категорий Самое глупое решение выполнить запрос к API прямо в цикле. Quote Link to post Share on other sites
mishanya Posted August 27, 2017 Report Share Posted August 27, 2017 Самое глупое решение выполнить запрос к API прямо в цикле. и в чем именно глупо мое решение? подскадите как вывести категорию категорию товара на странице всех заказов orders.tpl в order.tpl вывелнужно для каждого заказа выбирать сначала покукпки а потом уже категории Quote Link to post Share on other sites
kislotnik Posted August 27, 2017 Report Share Posted August 27, 2017 и в чем именно глупо мое решение? нужно для каждого заказа выбирать сначала покукпки а потом уже категорииЕсли не трудно не могли бы подробнее описать? Quote Link to post Share on other sites
Noxter Posted August 27, 2017 Report Share Posted August 27, 2017 и в чем именно глупо мое решение?Позор не знать чем плохо использовать запрос к БД прямо в цикле. Я сначала собираю массив идов, потом выбираю все данные одним запросом, а у тебя сколько интераций столько и запросов к БД. Quote Link to post Share on other sites
mishanya Posted August 27, 2017 Report Share Posted August 27, 2017 Позор не знать чем плохо использовать запрос к БД прямо в цикле.Я сначала собираю массив идов, потом выбираю все данные одним запросом, а у тебя сколько интераций столько и запросов к БД. позор не знать что get_category не делает запрос в базу Quote Link to post Share on other sites
Noxter Posted August 27, 2017 Report Share Posted August 27, 2017 позор не знать что get_category не делает запрос в базуС воздуха берет категорию? Не пиши глупости. Quote Link to post Share on other sites
mishanya Posted August 27, 2017 Report Share Posted August 27, 2017 (edited) С воздуха берет категорию? Не пиши глупости. посмотрите ф-ю а потом пишите или объяснить как работает init_categories Edited August 27, 2017 by mishanya Quote Link to post Share on other sites
Noxter Posted August 27, 2017 Report Share Posted August 27, 2017 посмотрите ф-ю а потом пишите.Я и так симплу отлично знаю, доп. я посмотрел функцию и понимаю как она работает, а ты судя по всему нет. Твой "почерк" написания кода считается плохим тоном. Если тебе не понятно как работают категории в симпле то лучше вообще смени род деятельности. Quote Link to post Share on other sites
mishanya Posted August 27, 2017 Report Share Posted August 27, 2017 Я и так симплу отлично знаю, доп. я посмотрел функцию и понимаю как она работает, а ты судя по всему нет.Твой "почерк" написания кода считается плохим тоном.Если тебе не понятно как работают категории в симпле то лучше вообще смени род деятельности. видимо не понимаете раз считаете что каждый раз делается запрос в базу. Quote Link to post Share on other sites
Noxter Posted August 27, 2017 Report Share Posted August 27, 2017 видимо не понимаете раз считаете что каждый раз делается запрос в базу.Печально читать такое от спеца, ну что же советую начать с основ если ты не понимаешь как нужно писать код оптимально и правильно. Говнокод в большинстве случаев только создаст новых проблем. Quote Link to post Share on other sites
mishanya Posted August 27, 2017 Report Share Posted August 27, 2017 Печально читать такое от спеца, ну что же советую начать с основ если ты не понимаешь как нужно писать код оптимально и правильно.Говнокод в большинстве случаев только создаст новых проблем. так напишите как правильно а все тут посмотрят. и я так и не услышал делает ли в цикле каждый раз запрос в базу или нет. Quote Link to post Share on other sites
Noxter Posted August 27, 2017 Report Share Posted August 27, 2017 так напишите как правильно а все тут посмотрят. и я так и не услышал делает ли в цикле каждый раз запрос в базу или нет.Функция инициализирует категории и да там идёт запрос к базе. Нет блин с воздуха берет категории само так сказать по магии. Quote Link to post Share on other sites
mishanya Posted August 27, 2017 Report Share Posted August 27, 2017 это делается раз и только в случае если до этого небыло инициализации категорий, дальше все категории выбираются с локальной переменной и база не дергается так что не надо писать бред что делается каждый раз запрос в базу Quote Link to post Share on other sites
loxter Posted August 28, 2017 Report Share Posted August 28, 2017 Noxter в теме, наверное, поставил рекорд по количеству ляпов. Неполный список изобретений от Noxter-а: 1. Самое глупое решение выполнить запрос к API прямо в цикле. 2. Позор не знать чем плохо использовать запрос к БД прямо в цикле. 3. С воздуха берет категорию? Не пиши глупости. 4. Печально читать такое от спеца, ну что же советую начать с основ если ты не понимаешь как нужно писать код оптимально и правильно. Даже начинающий програмисты по ответам mishanya мог бы легко понять, что 1. Тут все зависит от деталей, в одних обстоятельствах это глупо, а в друхих - совсем наоборот. 2. Метод mishanya не использует циклические запросы к БД. 3. Категорию можно получать не только из запроса, но и другими методами. 4. Печально читать такие ляпы от форумного спеца с самым большим стажем. Которые к тому же обильно сдобрены грубостями и оскорблениями в адрес человека, предоставившего хорошее решение. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.