• Как можно получить способ доставки в order_list?

    lazuren
    @lazuren
    В методе index контроллера order.php после строк -
    $data['orders'][] = array(
    				'order_id'   => $result['order_id'],
    				'name'       => $result['firstname'] . ' ' . $result['lastname'],
    				'status'     => $result['status'],
    				'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
    				'products'   => ($product_total + $voucher_total),
    				'total'      => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']),
    				'view'       => $this->url->link('account/order/info', 'order_id=' . $result['order_id'], true),
    			);

    Вставляете -
    $totals = $this->model_account_order->getOrderTotals($result['order_id']);
    
                foreach ($totals as $total) {
                    if($total['code'] == 'shipping'){
                        $data['shipping'] = array(
                            'title' => $total['title'],
                            'value'  => $total['value'],
                        );
                    }
                }

    После этого в файле вида order_list получаете массив shipping с ключами title (название способа доставки) и value (сумма доставки)
    Ответ написан
    1 комментарий
  • Как сделать регистрацию без пароля в Opencart?

    @Asokr
    Не принимайте в контроллере пароль от пользователя - генерите его сами, и отправляйте пользователю...
    catalog/controller/account/register.php
    Переписывайте
    if (isset($this->request->post['password'])) {
    			$data['password'] = $this->request->post['password'];
    		} else {
    			$data['password'] = '';
    		}

    на что-то типа
    $data['password'] = вами сгенерированный пароль
    И тут -же можно отправить письмо о регистрации...
    Ответ написан
    1 комментарий
  • Путь к файлу одной статьи в bitrix'e?

    rpsv
    @rpsv
    делай либо хорошо, либо никак
    Находите компонент который отображает статью (по адресу и urlrewrite можете найти сам файл который компонент подключает).
    Далее смотрите какой компонент и шаблон используется, и далее ищите в следующем порядке (порядок ВАЖЕН):
    1. /local/templates/[имя текущего шаблона]/components/[имя вендора]/[имя компонента]/[имя шаблона]/template.php
    2. /local/templates/.default/components/[имя вендора]/[имя компонента]/[имя шаблона]/template.php
    3. /local/components/[имя вендора]/[имя компонента]/templates/[имя шаблона]/template.php
    4. /bitrix/templates/[имя текущего шаблона]/components/[имя вендора]/[имя компонента]/[имя шаблона]/template.php
    5. /bitrix/templates/.default/components/[имя вендора]/[имя компонента]/[имя шаблона]/template.php
    6. /bitrix/components/[имя вендора]/[имя компонента]/templates/[имя шаблона]/template.php
    Ответ написан
    1 комментарий
  • Где можно редактировать обязательные поля у продукта?

    lazuren
    @lazuren
    для продукта есть обязательное поле Артикул.


    Изначально в OpenCart обязательное поле не Артикул, а Модель.

    Смотрел в admin/controller но там ничего!


    В функции validateForm() из контроллера admin/controller/catalog/product.php закомментируйте эти строки:
    if ((utf8_strlen($this->request->post['model']) < 1) || (utf8_strlen($this->request->post['model']) > 64)) {
    			$this->error['model'] = $this->language->get('error_model');
    		}


    А чтобы удалить красную звездочку рядом с полем, нужно в файле admin/view/template/catalog/recurring_form.twig
    Удалить класс required.
    <div class="form-group required">
                    <label class="col-sm-2 control-label" for="input-model">{{ entry_model }}</label>
                    <div class="col-sm-10">
                      <input type="text" name="model" value="{{ model }}" placeholder="{{ entry_model }}" id="input-model" class="form-control"/>
                      {% if error_model %}
                        <div class="text-danger">{{ error_model }}</div>
                      {% endif %}</div>
                  </div>
    Ответ написан
    Комментировать
  • Где можно редактировать обязательные поля у продукта?

    @caballero
    Программист
    \admin\controller\catalog\product.php
    там проверка на поле model
    Ответ написан
    Комментировать
  • Как вывести все дочерние категории в header.tpl?

    @Asokr
    Модуль входит в состав Opencart.pro (бесплатной версии;) ) - можете скачать - и посмотреть более подробно, но в общем - как -то так:
    Контролер
    $data['categories'] = array();
    
    		$categories = $this->model_catalog_category->getCategories(0);
    
    		foreach ($categories as $category) {
    
    			$children_data = array();
    
    			$children = $this->model_catalog_category->getCategories($category['category_id']);
    
    			foreach ($children as $child) {
    			
    			$children2_data = array();
    			$children2 = $this->model_catalog_category->getCategories($child['category_id']);
    			
    				foreach ($children2 as $child2) {
    				
    					$children3_data = array();
    					$children3 = $this->model_catalog_category->getCategories($child2['category_id']);
    					
    						foreach ($children3 as $child3) {
    							
    							$filter_data3 = array(
    								'filter_category_id'  => $child3['category_id'],
    							);				
    
    							$children3_data[] = array(
    								'category_id' => $child3['category_id'],
    								'name'        => $child3['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data3) . ')' : ''),
    								'href'        => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']. '_' . $child2['category_id']. '_' . $child3['category_id'])	
    							);		
    						
    						
    						}
    				
    					$filter_data2 = array(
    						'filter_category_id'  => $child2['category_id'],
    					);				
    
    					$children2_data[] = array(
    						'category_id' => $child2['category_id'],
    						'name'        => $child2['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data2) . ')' : ''),
    						'children3'    => $children3_data,
    						'href'        => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']. '_' . $child2['category_id'])	
    					);		
    				
    				
    				}
    				
    				$filter_data1 = array(
    						'filter_category_id'  => $child['category_id'],
    					);	
    
    				$children_data[] = array(
    					'category_id' => $child['category_id'],
    					'name'        => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data1) . ')' : ''),
    					'children2'    => $children2_data,
    					'href'        => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])	
    				);		
    			}
    			
    			$filter_data = array(
    				'filter_category_id'  => $category['category_id'],
    			);
    
    			$data['categories'][] = array(
    				'category_id' => $category['category_id'],
    				'name'        => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
    				'children'    => $children_data,
    				'href'        => $this->url->link('product/category', 'path=' . $category['category_id'])
    			);	
    		}

    Код шаблона
    <div class="list-group">
          <?php foreach ($categories as $category) { ?>
            <?php if ($category['category_id'] == $category_id) { ?>
            <a href="<?php echo $category['href']; ?>" class="list-group-item active"><?php echo $category['name']; ?></a>
            <?php } else { ?>
            <a href="<?php echo $category['href']; ?>" class="list-group-item"><?php echo $category['name']; ?></a>
            <?php } ?>
            <?php if (($category['children']) && ($category['category_id'] == $category_id)) { ?>
              <?php foreach ($category['children'] as $child) { ?>
                <?php if ($child['category_id'] == $child_id) { ?>
                <a href="<?php echo $child['href']; ?>" class="list-group-item active">&nbsp;- <?php echo $child['name']; ?></a>
                <?php } else { ?>
                <a href="<?php echo $child['href']; ?>" class="list-group-item">&nbsp;- <?php echo $child['name']; ?></a>
                <?php } ?>
    			        <?php if (($child['children2']) &&  ($category['category_id'] == $category_id)) { ?>
    						  <?php foreach ($child['children2'] as $child2) { ?>
    							<?php if ($child2['category_id'] == $child_id2) { ?>
    							<a href="<?php echo $child2['href']; ?>" class="list-group-item active">&nbsp;&nbsp;&nbsp;- <?php echo $child2['name']; ?></a>
    							<?php } else { ?>
    							<a href="<?php echo $child2['href']; ?>" class="list-group-item">&nbsp;&nbsp;&nbsp;- <?php echo $child2['name']; ?></a>
    							<?php } ?>
    								<?php if (($child2['children3']) &&  ($category['category_id'] == $category_id)) { ?>
    									  <?php foreach ($child2['children3'] as $child3) { ?>
    										<?php if ($child3['category_id'] == $child_id3) { ?>
    										<a href="<?php echo $child3['href']; ?>" class="list-group-item active">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- <?php echo $child3['name']; ?></a>
    										<?php } else { ?>
    										<a href="<?php echo $child3['href']; ?>" class="list-group-item">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- <?php echo $child3['name']; ?></a>
    										<?php } ?>
    									  <?php } ?>
    								 <?php } ?>
    						  <?php } ?>
    					 <?php } ?>
              <?php } ?>
            <?php } ?>
          <?php } ?>
    </div>
    Ответ написан
    1 комментарий
  • Каким образом получить новый массив из текущего?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    1. Сгруппировать товары по catID и категории также:
    $products = [];  // ваш массив с товарами
    
    /** 
     *  Группирует любой массив  массивов по любому полю $indexKey в качестве индекса
     */
    function groupBy(array $input, string $indexKey): array
    {
        return array_reduce($input,  function($res, $data) use ($indexKey){
            if (!isset($data[$indexKey])) {
                 return $res;
            }
            
            $res[$data[$indexKey]][] = $data;
                
            return $res;
        }, []);
    }
    
    $groupedProducts = groupBy($products, 'catID');
    // такое работает при условии, что категория с одним id будет иметь последнее название из найденных, 
    // то есть если id один, а название разные, то возможны не ожидаемые результаты
    $categories = array_column($products, 'catName', 'catID');


    2. Потом просто идете в цикле и выводите:
    foreach($groupedProducts as $catId => $catProducts) {
         // тут доступно название категории $categories[$catId] и ее $catId
    
         foreach($catProducts as $product) {
              // тут выводим сами товары $product
         }
    }


    Для PHP 5 нужно [] заменить на array(), предлагаю это сделать самому :)
    Ответ написан
    7 комментариев
  • Как поставить пароль от Github?

    z808z
    @z808z
    Fullstack web-разработчик c уклоном во фронт
    Тебе нужно подключение через ssh https://help.github.com/en/github/authenticating-t...
    Ответ написан
    Комментировать
  • Как сократить такой код, Waypoints.js?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    var allWaypoints = [];
    $('.any, .odds, .simple, .faq, .doctors, .consultation, .stages, .start, .seven').each(function() {
      var $this = $(this);
      allWaypoints.push($this.waypoint(function(direction) {
        $this.addClass('loader');
      }));
    });
    Ответ написан
    1 комментарий
  • Как исправить ошибки 404 ссылок /javascript?

    Punkie
    @Punkie
    Плагину fancybox не нужен href='javascript;' . Замените на href="#" .
    Ответ написан
    Комментировать
  • Как получить лишь array?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    public function action($action, $table, $where){
      if (count($where) === 3){
        $operators = ['=', '>', '<', '<=', '>='];
        $field = $where[0];
        $operator = $where[1];
        $value = $where[2];
    
        if (in_array($operator, $operators)){
          $sql = "{$action} * FROM {$table} WHERE {$field} {$operator} ?";
    
          if ( !$this->query($sql, [$value])->showError() ){
            return $this->results;
          }
        }
      }
    }


    Вы, может, уже начнёте собственный код читать и анализировать, что он делает? Тостер за вас приложение не напишет.
    Ответ написан
    3 комментария
  • Почему не работает метод Delete?

    0xD34F
    @0xD34F
    $sql = "{$action} * FROM {$table} WHERE {$field} {$operator} ?";

    То есть, вы пытаетесь выполнить DELETE * FROM .... Круто. Не знал, что так можно. Или всё-таки нельзя?
    Ответ написан
    1 комментарий
  • Какая разница между private static или private, php?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Потому что так работает язык.
    Ответ написан
    Комментировать
  • Как бороться с 1054 ошибкой Mysql?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Правильные кавычки надо использовать
    INSERT INTO `shassi`(`color`, `videocarts`) VALUES ('Черный', '6-8')
    Ответ написан
    2 комментария
  • Как сделать загрузку изображений на сервере php, mysql?

    meowto16
    @meowto16
    Делаю штуки
    1. Указываем для формы атрибут enctype="multipart/form-data".
    // http://htmlbook.ru/html/form/enctype
    <form enctype="application/x-www-form-urlencoded | multipart/form-data | text/plain">
    ...
    </form>


    2. Указываем инпут в который будем грузить, и даем ему имя с квадратными скобками, чтобы php воспринимал это как массив (если нужно грузить несколько файлов).
    // https://www.php.net/manual/ru/reserved.variables.files
    // https://www.php.net/manual/en/features.file-upload.post-method.php
    <input type="file" name="FILES[]">


    3. Прочитайте про функцию move_uploaded_files https://www.php.net/manual/ru/function.move-upload... . Там пример довольно понятный.
    Ответ написан
    4 комментария
  • Как прокачаться до middle frontend?

    opium
    @opium
    Просто люблю качественно работать
    Работать не пробовали?
    Ответ написан
    Комментировать
  • Как сделать такой круг на svg?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    Ответ написан
    Комментировать
  • Сайт выполнил переадресацию слишком много раз?

    @Lord_Dantes
    Зайдите лучше в базу и пройдитесь циклом по URL всех путей c http на https
    В качестве примера можете взять мой скрипт и закинуть в SQL заведомо заменив все параметры на нужные.
    Сделайте бэкап БД перед использовании скрипта.
    код SQL

    UPDATE wp_options SET option_value = REPLACE(option_value, 'old_url_site', 'new_url_site') WHERE option_name = 'home' OR option_name = 'siteurl';
    UPDATE wp_posts SET guid = REPLACE(guid, 'old_url_site', 'new_url_site');
    UPDATE wp_posts SET post_content = REPLACE(post_content, 'old_url_site', 'new_url_site')

    Ответ написан
    3 комментария