Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

lakbor

Users
  
  • Posts

    91
  • Joined

  • Last visited

Everything posted by lakbor

  1. То есть вы всё засунули в ячейку с Суммой заказа, и там отображается только сама сумма, больше ничего, я правильно понял?
  2. День добрый. только что скачал: Версия ocStore 2.1.0.2.1 Часть 1. Файл order.php /admin/controller/sale/order.php У меня правки нужно вносить в районе 159 строки, у вас может по-другому (из-за разности версий), но смысл сохраняется В начале цикла foreach ($results as $result) { Вставляем: $my_order_info = $this->model_sale_order->getOrder($result['order_id']); $my_products = $this->model_sale_order->getOrderProducts($result['order_id']); foreach ($my_products as $product) { $my_product[] = array( 'order_product_id' => $product['order_product_id'], 'product_id' => $product['product_id'], 'name' => $product['name'], 'model' => $product['model'], 'quantity' => $product['quantity'], ); } Затем в этом же цикле в массив $data['orders'][] добавляем две строки (my_products и my_comment): $data['orders'][] = array( 'order_id' => $result['order_id'], 'customer' => $result['customer'], 'status' => $result['status'], 'total' => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']), 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])), 'date_modified' => date($this->language->get('date_format_short'), strtotime($result['date_modified'])), 'shipping_code' => $result['shipping_code'], 'view' => $this->url->link('sale/order/info', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, 'SSL'), 'edit' => $this->url->link('sale/order/edit', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, 'SSL'), 'my_products' => $my_product, 'my_comment' => $my_order_info['comment'] ); Часть 2. Файл order_list.tpl Сначала добавляем заголовки столбцов, затем собержимое. для столбца с продуктами: <td class="text-left"> <?php foreach($order['my_products'] as $my_product){ echo $my_product['name'] . '<br />'; } ?> </td> для столбца с комментом: <td class="text-left"> <?=$order['my_comment']?> </td> Из массива $my_product можно соответственно вытянуть ID, model, количество, это на ваше усмотрение. оформление поля в самом списке тоже на ваш вкус, можно через список сделать, или как в примере просто <br>'ом В итоге, в версии 2.1 поменялось только (для данной ситуации, разумеется) расположение места где подгружать информацию о товарах и, соответственно, место впихивания в массив $data
  3. это стандартный предекремент, никакой магии) З.Ы. Ваш способ с использованием array_pop() уменьшает массив хлебных крошек на один элемент, и использовать его (массив) впоследствии не представляется возможным, а вдруг понадобится)
  4. Добрый день, реализация чего именно интересует на 2.1? про адрес или товары?) или не интересует уже?))
  5. Добрый вечер! Как-то давно, в 2013м году я реализовывал нечто похожее следующим образом: <?php $cat1 = '^Сезонность$'; //Первое слово для сравнения, заключается в символы ^ и $ $cat2 = '^Зимняя$'; $text1 = '/' . iconv("windows-1251", "utf-8//IGNORE", $cat1) . '/'; // приведение слова в кодировку utf-8 (можно не делать, если сразу сохраняться в utf-8) $text2 = '/' . iconv("windows-1251", "utf-8//IGNORE", $cat2) . '/'; ?> <?php if (preg_match($text1, $attribute['name']) && preg_match($text2, $attribute['text']) { echo "<img src='/img/zimnyaya.jpg'>"; } ?>
  6. Добрый день! В целом, логичнее сжать столбец "Характеристики", но если нужно всё-таки сжать див с кнопкой купить, то нужно его перегруппировывать: - уменьшить название товара (stylesheet.css тег H1, атрибут font-size) - "кол-во" и конпку "купить" вынести в одну строку (править product.tpl в шаблоне, размеры поля и кнопки в stylesheet.css)
  7. То что вы заполняете в админке "Н1" - это название товара, которое отображается в карточке товара. Поле "Название" - это то, как имя товара выглядит в админке, в категориях, в модулях, в корзине итп. То есть "Название" - это всеселое по CMS имя товара, "H1" - название тлько для карточки товара. Чтобы в карточке товара было то же самое, что и в названии - либо заполняйте в админкеэти поля одинаковым текстом, либо не заполняйте "Н1" вообще (тогда opencart сам подставит на сайте название) Зачем это разделение? - для СЕО. Поисковые роботы ранжируют инфу на странице, учитывая важность заголовков, коим и является тег H1
  8. Открывайте файл: ***/module/category.tpl В нем ищите строку: <?php if ($category['category_id'] == $category_id) { ?> Замените ее на эту: <?php if ($category['category_id'] == $category_id || $category_id == 0) { ?>
  9. Получилось не совсем так, как ты просил, потому что я не особый знаток css, а тут все div'ы на нем завязаны. Итак, в чем отличие полученного от запрошенного? - В том, что в див входят кнопка купить, линки в сравнение и в закладки. Правим: /catalog/view/theme/default/template/product/category.tpl В самое начало вставляем: <style type="text/css"> #divlink { background-color: red; /*красный цвет для примера, чтобы див был виден*/ cursor: pointer; } </style> Дальше ищешь строку: <div class="product-list"> <?php foreach ($products as $product) { ?> <div> последний Див меняешь на <div id="divlink" onClick="clicker('<?php echo $product['href'];?>');"> И последнее, в Javascript внизу перед функцией function display(view) { вставляешь: function clicker (dest){ window.location.href = dest; } готово
  10. Мы в ответе за тех, кому поставили Линукс...

  11. у меня вопрос, после ответа на него подскажу как именно реализовать задумку. Зачем это нужно, что должно получиться в итоге? (цвет иной, расположение, еще что-то? напиши как можно подробнее)
  12. ВНИМАНИЕ! Во время обкатки на одной и той же версии движка (1.5.4.1), но почему-то различающихся в коде, были выявлены ряд ошибок! из-за расхождений в коде, естественно. (расхождения оказались даже в БД) поэтому, если решите воспользоваться кодом выше - лучше свяжитесь со мной чтобы доработать код напильником под вашу уникальную версию движка
  13. Если можно опять поясните не хочу тупо копировать есть желание хоть чего то выучить основы учил на C# думал что пхп будет попроще $my_product = array(); это создаем массив да? но скобки пустые //ОБЪЯВЛЯЕМ массив $my_products = $this->model_sale_order->getOrderProducts($result['order_id']); в $my_products -> вызывает функцию model_sale_order от туда getOrderProducts ?? ($result['order_id']); //Вызываем функцию getOrderProducts() класса model_sale_order и пишем результат ее работы в $my_products foreach ($my_products as $product) ищим $my_products в $product и если находим то выполняем условие да? //Не, этим циклом ПЕРЕБИРАЕМ все элементы массива $my_products и на каждой итерации цикла работаем с каждым элементом в отдельности через переменную $product { $my_product[] = array( 'order_product_id' => $product['order_product_id'], 'product_id' => $product['product_id'], 'name' => $product['name'], 'model' => $product['model'], 'quantity' => $product['quantity'], ); } в 'products_ordered' => заносим массив $my_product, //Это к какой части кода вопрос? <?php $i=0; $my_prods = $order['products_ordered']; while ($i < sizeof($my_prods)) цикл если i < ?? //Пока $i меньше размера массива $my_prods, sizeof() или, что то же самое, count(), возвращает кол-во элементов в массиве { echo '>> '. $my_prods[$i]['quantity'] . ' x ' . $my_prods[$i]['name'] . '<br>'; ???? $i++; инкримент вроде +1 }?> //расписываю цикл полностью: $i обнуляем создаем массив $my_prods и засовываем в него массив проданных товаров, вытянутый из общего массива $order пока ($i меньше количества элементов в массиве $my_prods) { выводим текст ">>" точкой присоединяем к нему значение $my_prods[$i счетчик товарных позиций][количество товара данной позиции] присоединяем к выводимой строке крестик, присоединяем тем же способом название товара из заказа, соответствующее товарной позиции $i, переходим на новую строку Увеличить значение переменной на 1 можно: а) $i = $i + 1; // Тут все понятно, я думаю б) $i++; //ПОСТинкремент в) ++$i; //ПРЕинкремент г) $i += 1; // То же самое, что и под буквой А, только в укороченной форме
  14. ВНИМАНИЕ! Все изменения, вносимые в код вы делаете на свой страх и риск, все файлы советую бэкапить, В ТОМ ЧИСЛЕ БАЗУ ДАННЫХ! Также, есть три нюанса: 1. почему-то не переводит по завершению обратно на страницу категорий, но я думаю не оч сложно нажать в браузере "назад", попозже доработаю 2. при работе выводит кучу мусора на страницу, инфа служебная, я ей пользовался при отладке, не смущайтесь также на ошибки и предупреждения, все работает с ними. 3. если у категории есть подкатегории, то они не копируются при копировании родительской. Приступаем! 1) открываем файл /admin/controller/catalog/category.php Ищем функцию public function insert() { $this->load->language('catalog/category'); $this->document->setTitle($this->language->get('heading_title')); $this->load->model('catalog/category'); if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) { $this->model_catalog_category->addCategory($this->request->post); $this->session->data['success'] = $this->language->get('text_success'); $this->redirect($this->url->link('catalog/category', 'token=' . $this->session->data['token'], 'SSL')); } $this->getForm(); } ПОСЛЕ нее вставляем следующий код: /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public function my_copy() { $this->load->language('catalog/category'); $this->document->setTitle($this->language->get('heading_title')); $this->load->model('catalog/category'); if (isset($this->request->post['selected'])) { foreach ($this->request->post['selected'] as $category_id) { $this->my_copycat($category_id); } $this->redirect($this->url->link('catalog/category', 'token=' . $this->session->data['token'], 'SSL')); } $this->getList(); } private function my_copycat($cid) { // GET LAST CID $query_id = $this->db->query("SELECT * FROM category;"); $last_cid=0; foreach ($query_id as $qwerty_id) { foreach ($qwerty_id as $qqqq) { if ($last_cid < (int)$qqqq['category_id']) { $last_cid = (int)$qqqq['category_id']; } else { ;} } } echo ++$last_cid; // 1-st QUERY ('category' DB) $qq = "SELECT * FROM category WHERE category_id = " . $cid . ";"; $query = $this->db->query($qq); $my_category = array(); foreach ($query as $qwerty) { foreach ($qwerty as $qqqq) { foreach ($qqqq as $mkey => $mval) { if ($mval == '') { $my_category[$mkey] = 'NULL'; } else { $my_category[$mkey] = $mval; } } } } // 2-nd QUERY ('category_description' DB) $qq = "SELECT * FROM category_description WHERE category_id = " . $cid . ";"; $query = $this->db->query($qq); $my_category_description = array(); foreach ($query as $qwerty) { $j=0; foreach ($qwerty as $qqqq) { foreach ($qqqq as $mkey => $mval) { //echo '<h1>' . $j . ' - ' . $mkey .'-'. $mval . '</h1>'; if ($mval == '') { $my_category_description[$j][$mkey] = 'NULL'; } else { $my_category_description[$j][$mkey] = $mval; } } $j++; } } //echo '<h1><font color=red>'.$my_category_description[0]['name'] . '</font></h1>'; // 3-rd QUERY ('category_to_store' DB) $qq = "SELECT * FROM category_to_store WHERE category_id = " . $cid . ";"; $query = $this->db->query($qq); $my_category_to_store = array (); foreach ($query as $qwerty) { foreach ($qwerty as $mkey => $mval) { $my_category_to_store[$mkey] = $mval; } } echo '<h1><font color=green>store_id = ' . $my_category_to_store['store_id'] . 'cat id = ' . $my_category_to_store['category_id'] . '</font></h1>'; // READ QUERIES ENDED // READ QUERIES ENDED // READ QUERIES ENDED // WRITING TO DATABASE!!! // WRITING TO DATABASE!!! // WRITING TO DATABASE!!! //INS 1st ARRAY $qs = ', '; $qq_values = $last_cid . $qs . $my_category['image'] . $qs . $my_category['parent_id'] . $qs . $my_category['top'] . $qs . $my_category['column'] . $qs . $my_category['sort_order'] . $qs . $my_category['status'] . ', \'' . $my_category['date_added'] . '\', \'' . $my_category['date_modified'] . '\''; echo '<h1>' . $qq_values . '</h1>'; echo $qq = 'INSERT INTO category (`category_id` ,`image` ,`parent_id` ,`top` ,`column` ,`sort_order` ,`status` ,`date_added` ,`date_modified`) VALUES (' . $qq_values . ');'; $query = $this->db->query($qq); //INS 2nd ARRAY $li = 0; $qs = ', '; while ($li < sizeof($my_category_description)) { echo '<br><br>' . $qq_values = $last_cid . $qs . $my_category_description[$li]['language_id'] . ', \'' . $my_category_description[$li]['name'] . '\', \'' . $my_category_description[$li]['description'] . '\', \'' . $my_category_description[$li]['meta_description'] . '\', \'' . $my_category_description[$li]['meta_keyword'] . '\', \'' . $my_category_description[$li]['seo_title'] . '\', \'' . $my_category_description[$li]['seo_h1'] . '\''; echo '<br><br>' . $qq = 'INSERT INTO category_description VALUES (' . $qq_values . ');'; $query = $this->db->query($qq); $li++; } //INS 3rd ARRAY echo '<br><br><font color=orange>' . $qq = 'INSERT INTO category_to_store VALUES (' . $last_cid . ', ' . $my_category_to_store['store_id'] . ');'; echo '</font>'; $query = $this->db->query($qq); // WRITING COMPLETED!!! // WRITING COMPLETED!!! // WRITING COMPLETED!!! } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Теперь ищем следующие две строки (у меня они вышли (после добавления кода выше) на 199 и 200 строках: $this->data['insert'] = $this->url->link('catalog/category/insert', 'token=' . $this->session->data['token'], 'SSL'); $this->data['delete'] = $this->url->link('catalog/category/delete', 'token=' . $this->session->data['token'], 'SSL'); ПЕРЕД ними дописываем: $this->data['copy'] = $this->url->link('catalog/category/my_copy', 'token=' . $this->session->data['token'], 'SSL'); /// вмешательство в файл category.php закончили 2) Теперь открываем файл /admin/view/template/catalog/category_list.tpl В нем ищем код: <div class="buttons"> <a onclick="location = '<?php echo $insert; ?>'" class="button"><?php echo $button_insert; ?></a> <a onclick="$('#form').submit();" class="button"><?php echo $button_delete; ?></a></div> </div> и дополняем его чтобы вышло так: <div class="buttons"> <a onclick="$('#form').attr('action', '<?php echo $copy; ?>'); $('#form').submit();" class="button"><?php echo 'Copy Category'; ?></a> <a onclick="location = '<?php echo $insert; ?>'" class="button"><?php echo $button_insert; ?></a> <a onclick="$('#form').submit();" class="button"><?php echo $button_delete; ?></a></div> </div> Г О Т О В О! Еще раз повторюсь - ВСЁ на ваш страх и риск, скрипт работает напрямую с БД, поэтому, чтобы в мой адрес не было мата, делайте бэкапы!
  15. пока попробуй как работает, а объясню когда копирование категорий доделаю)) да, и не забывай делать бэкапы ВСЕГО, что меняешь))
  16. Итак, приступим! Перед той строкой, которую недавно впаивали (в order.php) $my_order_info = $this->model_sale_order->getOrder($result['order_id']); Вставляй вот ЭТО: //////////////////////////////////////////////////////////// $my_product = array(); $my_products = $this->model_sale_order->getOrderProducts($result['order_id']); foreach ($my_products as $product) { $my_product[] = array( 'order_product_id' => $product['order_product_id'], 'product_id' => $product['product_id'], 'name' => $product['name'], 'model' => $product['model'], 'quantity' => $product['quantity'], ); } //////////////////////////////////////////////////////////// Далее, переделай массив, который редактировали недавно (чуть ниже): $this->data['orders'][] = array( 'order_id' => $result['order_id'], 'shipping_address' => $my_order_info['shipping_address_1'], 'products_ordered' => $my_product, // На этот раз добавляем вот этот параметр 'customer' => $result['customer'], 'status' => $result['status'], 'total' => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']), 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])), 'date_modified' => date($this->language->get('date_format_short'), strtotime($result['date_modified'])), 'selected' => isset($this->request->post['selected']) && in_array($result['order_id'], $this->request->post['selected']), 'action' => $action ); Теперь переходим к order_list.tpl: там дописывай старые вмешательства наши, чтоб было как тут: <!--////////////////////--> <td class="left"><?php echo 'ADDRESS'; ?></td> <td class="left"><?php echo 'PRODUCTS'; ?></td> <!--////////////////////--> <!--////////////////////--> <td /> <td /> <!--////////////////////--> <!--////////////////////--> <td><?php echo $order['shipping_address']; ?></td> <td> <?php $i=0; $my_prods = $order['products_ordered']; while ($i < sizeof($my_prods)) { echo '>> '. $my_prods[$i]['quantity'] . ' x ' . $my_prods[$i]['name'] . '<br>'; $i++; }?> </td> <!--////////////////////--> Соответственно отображение можешь менять по своему желанию, я поставил так ( ">> кол-во_товара х наименование_товара"): >> 1 х Товар_1 >> 5 x Товар_2 Да, и массивчик с запасом, можно посмотреть модель товара, например.
  17. спасибо=) да, по идее верно ааха то подскажет какая переменная товар ордера?? о какой именно переменной идет речь? поточнее опиши пожалуйста)
  18. 1) что запихивается в $my_order_info смотри в файле orders.php начиная примерно с 1540-й строки. там такая же переменная фигурирует как $order_info. Что в ней, соответственно, видно из того, что из нее извлекают ($order_info['то_что_извлекается']) 2) Да, то же самое (я не смотрел, что именно ты извлекаешь этим запросом, но СУТЬ такая же), ТОЛЬКО: твой прямой запрос к БД нарушает: а) принципы ООП, б) безопасность, в) тебе придется (ввиду нарушения пункта "а" еще писать код для подключения к БД с вводом логина и пароля (именно поэтому нарушается пункт "б") 3) вся инфа ОБ УЖЕ СДЕЛАННОМ заказе. соответственно никакой корзины нет и быть не может, товар из корзины перекочевал в статус товара в заказе. 4) в какой таблице базы - не знаю, поищи сам... 5) $this - ООПшная отсылка к методу, доступному в данном скрипте т.е. $this->model_sale_order->getOrder($result['order_id']) вызывает функцию getOrder(), $this->data['orders'][] = array( создает массив $orders, который будет доступен из скрипта (шаблона) http://php.net/manual/en/language.oop5.basic.php
  19. незачто) -> - это из области ООП, я понятия не имею как объяснить что она делает человеческим языком, но суть вот в чем: этой строкой мы создаем переменную $my_order_info, в которую помещается вся инфа о заказе. Т.е. ВООБЩЕ ВСЯ. а этой фигней ("->") мы вызываем нужную функцию (точнее указываем путь через класс). => - этим имени в списке присваивается значение. т.е. в обычном массиве значения идут подряд и обращаться к ним надо по индексам (my_array[0] например), а в именованном массиве обращение происходит по именам( my_named_array['first_index'] например). соответственно, когда объявляем обычный массив достаточно просто перечислить значения, а интерпретатор автоматически присвоит их индексам от нуля и далее, а для именованного массива необходимо указывать названия (имена) индексов simple_array[] = array ( abc, def, ghi, jkl); named_array[] = array ( 'first_index' => 'abc', 'second_index' => 'def' ); как-то так... а, вспомнил, эти массивы еще называют ассоциативными, а в PERL'e - Хэшами)
  20. Первым делом открывай /admin/controller/sale/order.php Там надо добавить пару строк: if (strtotime($result['date_added']) > strtotime('-' . (int)$this->config->get('config_order_edit') . ' day')) { $action[] = array( 'text' => $this->language->get('text_edit'), 'href' => $this->url->link('sale/order/update', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, 'SSL') ); } // Вставляем эту строку: $my_order_info = $this->model_sale_order->getOrder($result['order_id']); $this->data['orders'][] = array( 'order_id' => $result['order_id'], 'shipping_address' => $my_order_info['shipping_address_1'], // Добавляем этот параметр 'customer' => $result['customer'], 'status' => $result['status'], 'total' => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']), 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])), 'date_modified' => date($this->language->get('date_format_short'), strtotime($result['date_modified'])), 'selected' => isset($this->request->post['selected']) && in_array($result['order_id'], $this->request->post['selected']), 'action' => $action ); } Далее лезем в шаблон: /admin/view/template/sale/order_list.tpl Там добавляем следующие строки: <td class="right"><?php if ($sort == 'o.order_id') { ?> <a href="<?php echo $sort_order; ?>" class="<?php echo strtolower($order); ?>"><?php echo $column_order_id; ?></a> <?php } else { ?> <a href="<?php echo $sort_order; ?>"><?php echo $column_order_id; ?></a> <?php } ?></td> <!--//////////////////// Вставляем эту строку (1-е вмешательство):--> <td class="left"><?php echo 'ADDRESS'; ?></td> <!--////////////////////--> <td class="left"><?php if ($sort == 'customer') { ?> <a href="<?php echo $sort_customer; ?>" class="<?php echo strtolower($order); ?>"><?php echo $column_customer; ?></a> <?php } else { ?> <a href="<?php echo $sort_customer; ?>"><?php echo $column_customer; ?></a> <?php } ?></td> <tr class="filter"> <td></td> <td align="right"><input type="text" name="filter_order_id" value="<?php echo $filter_order_id; ?>" size="4" style="text-align: right;" /></td> <!--//////////////////// Вставляем строку ниже (2-е вмешательство):--> <td /> <!--////////////////////--> <td><input type="text" name="filter_customer" value="<?php echo $filter_customer; ?>" /></td> <td class="right"><?php echo $order['order_id']; ?></td> <!--//////////////////// Последняя строка, которую добавляем (3-е вмешательство):--> <td><?php echo $order['shipping_address']; ?></td> <!--////////////////////--> <td class="left"><?php echo $order['customer']; ?></td>
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.