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

nash

Користувачі
  
  • Публікації

    421
  • З нами

  • Відвідування

Повідомлення, опубліковані користувачем nash

  1. Добрый вечер! Сделал модуль подписка на рассылку - текстовое поле для ввода e-mail и кнопка "Подписаться". 

    При нажатии на кнопку происходит проверка e-mail заказчика, если такого заказчика нет, то добавляется в базу новый покупатель, генерируется пароль из 8 символов, записывается в базу и на почту покупателю отправляется пароль от ЛК.

     

    Но при попытке авторизоваться, при вводе e-mail и пароля, система сообщает, что e-mail или пароль неверный. В чем может быть причина? Пароль сохраняю в базу таким же способом как и при обычной регистрации.

       $passgen = generatePassword(8); // генерация пароля из 8 символов
    			if($this->db->query("INSERT INTO " . DB_PREFIX . "customer SET customer_group_id = 1, email = '".$data['email']."', status = 1, approved = 1, salt = '".$salt = token(9)."', password = '".sha1($salt . sha1($salt . sha1($passgen)))."', newsletter = 1, date_added = NOW()"))
    			{
    			        $mail = new Mail();
    				$mail->protocol = $this->config->get('config_mail_protocol');
    				$mail->parameter = $this->config->get('config_mail_parameter');
    				$mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
    				$mail->smtp_username = $this->config->get('config_mail_smtp_username');
    				$mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
    				$mail->smtp_port = $this->config->get('config_mail_smtp_port');
    				$mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');
    
    				$mail->setTo($data['email']);
    				$mail->setFrom($this->config->get('config_email'));
    				$mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'));
    				$mail->setSubject("Подписка на рассылку");
    				$mail->setText($passgen);
    				$mail->send();
    				
    				return "Вы подписались на рассылку новостей";
    			}
    
    	function generatePassword($length = 8){
    $chars = 'abdefhiknrstyzABDEFGHKNQRSTYZ23456789';
    $numChars = strlen($chars);
    $string = '';
    for ($i = 0; $i < $length; $i++) {
    $string .= substr($chars, rand(1, $numChars) - 1, 1);
    }
    return $string;
    }
    
  2. потому что нужно писать под это запрос и выбирать товары 

    почему этот model_catalog_product->getProductRelated($filter_data); не подходит?

    public function getProductRelated($product_id) {
    		$product_data = array();
    
    		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.related_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pr.product_id = '" . (int)$product_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
    
    		foreach ($query->rows as $result) {
    			$product_data[$result['related_id']] = $this->getProduct($result['related_id']);
    		}
    
    		return $product_data;
    	}
    
  3. Добрый вечер! есть задача вывести сопутствующие товары каждого товара, у которых они есть, на странице категории.

    AD7h4cs6.png

    с контролера и шаблона страницы товара перенес код соотв. на страницу категории.

    код шаблона category.tpl и контролера:

     

          <?php if ($products) { ?>
          <p><a href="<?php echo $compare; ?>" id="compare-total"><?php echo $text_compare; ?></a></p>
          <div class="row">
            <div class="col-md-3">
              <div class="btn-group hidden-xs">
                <button type="button" id="list-view" class="btn btn-default" data-toggle="tooltip" title="<?php echo $button_list; ?>"><i class="fa fa-th-list"></i></button>
                <button type="button" id="grid-view" class="btn btn-default" data-toggle="tooltip" title="<?php echo $button_grid; ?>"><i class="fa fa-th"></i></button>
              </div>
            </div>
            <div class="col-md-2 text-right">
              <label class="control-label" for="input-sort"><?php echo $text_sort; ?></label>
            </div>
            <div class="col-md-3 text-right">
              <select id="input-sort" class="form-control" onchange="location = this.value;">
                <?php foreach ($sorts as $sorts) { ?>
                <?php if ($sorts['value'] == $sort . '-' . $order) { ?>
                <option value="<?php echo $sorts['href']; ?>" selected="selected"><?php echo $sorts['text']; ?></option>
                <?php } else { ?>
                <option value="<?php echo $sorts['href']; ?>"><?php echo $sorts['text']; ?></option>
                <?php } ?>
                <?php } ?>
              </select>
            </div>
            <div class="col-md-2 text-right">
              <label class="control-label" for="input-limit"><?php echo $text_limit; ?></label>
            </div>
            <div class="col-md-2 text-right">
              <select id="input-limit" class="form-control" onchange="location = this.value;">
                <?php foreach ($limits as $limits) { ?>
                <?php if ($limits['value'] == $limit) { ?>
                <option value="<?php echo $limits['href']; ?>" selected="selected"><?php echo $limits['text']; ?></option>
                <?php } else { ?>
                <option value="<?php echo $limits['href']; ?>"><?php echo $limits['text']; ?></option>
                <?php } ?>
                <?php } ?>
              </select>
            </div>
          </div>
          <br />
          <div class="row">
            <?php foreach ($products as $product) { ?>
            <div class="product-layout product-list col-xs-12">
              <div class="product-thumb">
                <div class="image"><a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" alt="<?php echo $product['name']; ?>" title="<?php echo $product['name']; ?>" class="img-responsive" /></a></div>
                <div>
                  <div class="caption">
                    <h4><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></h4>
                    <p><?php echo $product['description']; ?></p>
                    <?php if ($product['rating']) { ?>
                    <div class="rating">
                      <?php for ($i = 1; $i <= 5; $i++) { ?>
                      <?php if ($product['rating'] < $i) { ?>
                      <span class="fa fa-stack"><i class="fa fa-star-o fa-stack-2x"></i></span>
                      <?php } else { ?>
                      <span class="fa fa-stack"><i class="fa fa-star fa-stack-2x"></i><i class="fa fa-star-o fa-stack-2x"></i></span>
                      <?php } ?>
                      <?php } ?>
                    </div>
                    <?php } ?>
                    <?php if ($product['price']) { ?>
                    <p class="price">
                      <?php if (!$product['special']) { ?>
                      <?php echo $product['price']; ?>
                      <?php } else { ?>
                      <span class="price-new"><?php echo $product['special']; ?></span> <span class="price-old"><?php echo $product['price']; ?></span>
                      <?php } ?>
                      <?php if ($product['tax']) { ?>
                      <span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span>
                      <?php } ?>
                    </p>
                    <?php } ?>
                  </div>
                  <div class="button-group">
                    <button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>
                    <button type="button" data-toggle="tooltip" title="<?php echo $button_wishlist; ?>" onclick="wishlist.add('<?php echo $product['product_id']; ?>');"><i class="fa fa-heart"></i></button>
                    <button type="button" data-toggle="tooltip" title="<?php echo $button_compare; ?>" onclick="compare.add('<?php echo $product['product_id']; ?>');"><i class="fa fa-exchange"></i></button>
                  </div>
                </div>
              </div>
            </div>
            <?php } ?>
          </div>
    	  сопутствующие
    	  <!-- сопутствующие -->
    	  <?php if ($podtovary) { ?>
          <h3><?php echo $text_related; ?></h3>
          <div class="row">
            <?php $i = 0; ?>
            <?php foreach ($podtovary as $podtovar) { ?>
            <?php if ($column_left && $column_right) { ?>
            <?php $class = 'col-lg-6 col-md-6 col-sm-12 col-xs-12'; ?>
            <?php } elseif ($column_left || $column_right) { ?>
            <?php $class = 'col-lg-4 col-md-4 col-sm-6 col-xs-12'; ?>
            <?php } else { ?>
            <?php $class = 'col-lg-3 col-md-3 col-sm-6 col-xs-12'; ?>
            <?php } ?>
            <div class="<?php echo $class; ?>">
              <div class="product-thumb transition">
                 <div class="caption">
                  <h4><a href="<?php echo $podtovar['href']; ?>"><?php echo $podtovar['name']; ?></a></h4>
                  <p><?php echo $podtovar['description']; ?></p>
                  <?php if ($podtovar['rating']) { ?>
                  <div class="rating">
                    <?php for ($i = 1; $i <= 5; $i++) { ?>
                    <?php if ($podtovar['rating'] < $i) { ?>
                    <span class="fa fa-stack"><i class="fa fa-star-o fa-stack-1x"></i></span>
                    <?php } else { ?>
                    <span class="fa fa-stack"><i class="fa fa-star fa-stack-1x"></i><i class="fa fa-star-o fa-stack-1x"></i></span>
                    <?php } ?>
                    <?php } ?>
                  </div>
                  <?php } ?>
                  <?php if ($podtovar['price']) { ?>
                  <p class="price">
                    <?php if (!$podtovar['special']) { ?>
                    <?php echo $podtovar['price']; ?>
                    <?php } else { ?>
                    <span class="price-new"><?php echo $podtovar['special']; ?></span> <span class="price-old"><?php echo $podtovar['price']; ?></span>
                    <?php } ?>
                    <?php if ($podtovar['tax']) { ?>
                    <span class="price-tax"><?php echo $text_tax; ?> <?php echo $podtovar['tax']; ?></span>
                    <?php } ?>
                  </p>
                  <?php } ?>
                </div>
                <div class="button-group">
                  <button type="button" onclick="cart.add('<?php echo $podtovar['product_id']; ?>', '<?php echo $podtovar['minimum']; ?>');"><span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span> <i class="fa fa-shopping-cart"></i></button>
                  <button type="button" data-toggle="tooltip" title="<?php echo $button_wishlist; ?>" onclick="wishlist.add('<?php echo $podtovar['product_id']; ?>');"><i class="fa fa-heart"></i></button>
                  <button type="button" data-toggle="tooltip" title="<?php echo $button_compare; ?>" onclick="compare.add('<?php echo $podtovar['product_id']; ?>');"><i class="fa fa-exchange"></i></button>
                </div>
              </div>
            </div>
            <?php if (($column_left && $column_right) && ($i % 2 == 0)) { ?>
            <div class="clearfix visible-md visible-sm"></div>
            <?php } elseif (($column_left || $column_right) && ($i % 3 == 0)) { ?>
            <div class="clearfix visible-md"></div>
            <?php } elseif ($i % 4 == 0) { ?>
            <div class="clearfix visible-md"></div>
            <?php } ?>
            <?php $i++; ?>
            <?php } ?>
          </div>
          <?php } ?>
    	  <!-- сопутствующие -->
    	  
          <div class="row">
            <div class="col-sm-6 text-left"><?php echo $pagination; ?></div>
            <div class="col-sm-6 text-right"><?php echo $results; ?></div>
          </div>
          <?php } ?> 
    			$data['products'] = array();
    
    			$filter_data = array(
    				'filter_category_id' => $category_id,
    				'filter_filter'      => $filter,
    				'sort'               => $sort,
    				'order'              => $order,
    				'start'              => ($page - 1) * $limit,
    				'limit'              => $limit
    			);
    
    			$product_total = $this->model_catalog_product->getTotalProducts($filter_data);
    
    			$results = $this->model_catalog_product->getProducts($filter_data);
    
    			foreach ($results as $result) {
    				if ($result['image']) {
    					$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
    				} else {
    					$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
    				}
    
    				if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
    					$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
    				} else {
    					$price = false;
    				}
    
    				if ((float)$result['special']) {
    					$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));
    				} else {
    					$special = false;
    				}
    
    				if ($this->config->get('config_tax')) {
    					$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);
    				} else {
    					$tax = false;
    				}
    
    				if ($this->config->get('config_review_status')) {
    					$rating = (int)$result['rating'];
    				} else {
    					$rating = false;
    				}
    
    				$data['products'][] = array(
    					'product_id'  => $result['product_id'],
    					'thumb'       => $image,
    					'name'        => $result['name'],
    					'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..',
    					'price'       => $price,
    					'special'     => $special,
    					'tax'         => $tax,
    					'minimum'     => $result['minimum'] > 0 ? $result['minimum'] : 1,
    					'rating'      => $result['rating'],
    					'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
    				);
    			}
    
    			
    			/*Сопутствующие товары*/
    			$data['podtovary'] = array();
    
    			$results = $this->model_catalog_product->getProductRelated($filter_data);
    
    			foreach ($results as $result1) {
    				if ($result1['image']) {
    					$image = $this->model_tool_image->resize($result1['image'], $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height'));
    				} else {
    					$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height'));
    				}
    
    				if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
    					$price = $this->currency->format($this->tax->calculate($result1['price'], $result1['tax_class_id'], $this->config->get('config_tax')));
    				} else {
    					$price = false;
    				}
    
    				if ((float)$result1['special']) {
    					$special = $this->currency->format($this->tax->calculate($result1['special'], $result1['tax_class_id'], $this->config->get('config_tax')));
    				} else {
    					$special = false;
    				}
    
    				if ($this->config->get('config_tax')) {
    					$tax = $this->currency->format((float)$result1['special'] ? $result1['special'] : $result1['price']);
    				} else {
    					$tax = false;
    				}
    
    				if ($this->config->get('config_review_status')) {
    					$rating = (int)$result1['rating'];
    				} else {
    					$rating = false;
    				}
    
    				$data['podtovary'][] = array(
    					'product_id'  => $result1['product_id'],
    					'thumb'       => $image,
    					'name'        => $result1['name'],
    					'description' => utf8_substr(strip_tags(html_entity_decode($result1['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..',
    					'price'       => $price,
    					'special'     => $special,
    					'tax'         => $tax,
    					'minimum'     => $result1['minimum'] > 0 ? $result1['minimum'] : 1,
    					'rating'      => $rating,
    					'href'        => $this->url->link('product/product', 'product_id=' . $result1['product_id'])
    				);
    			}
    			
    			/**////сопутствующие товары*/ 

    ни один сопутствующий товар не выводится. Подскажите, пожалуйста, как исправить

  4. Ну я делал не опциями а список создавал с помощу товаров. А связь между товарами делал через SCU.

     

     

    Подобного рода функционал я делал для ocstore 2.1*, что-то типа сборного товара. В сборном товаре выводится список вложенных в него. В базе опенкарта идут как отдельные позиции

    А можете показать реализацию данной задачи?

  5. Добрый день! Хочу сделать также как тут подтовары. В принципе в опенкарте это опции с кнопкой "купить" - это понятно. Но как под каждую опцию сделать отдельную страницу товара, чтобы с выгрузкой из и в 1С не было проблем, так как в 1С каждая опция опенкарта = отдельный товар в 1С.

  6. Добрый день! Я добавил основное изображение к доп. изображениям

    NGYkKkcm.png

     

    для того, чтобы можно было "прокликать" (посмотреть) изображения - то есть как тут.

     

    При клике по главному изображению - открывается попап, но в попапе дублируется изображение. Как убрать этот "дубляж"?

    product.tpl приложил.

     

     

    product_tpl.zip

  7. Добрый вечер! хочу на странице категории у товаров для админа вывести id и ссылку на редактирование соотв. товара.

    <?php 
    	$user = new User($this->registry);
    	if ($user->isLogged()) { ?> 
    	<div class="edit">ID #<?php echo $product['product_id']; ?>
    			
    	[ <a target="_blank" href="/admin/index.php?route=catalog/product/edit&token=<?php echo $this->session->data['token']; ?>&product_id=<?php echo $product['product_id']; ?>" rel="nofollow">Редактировать</a> ]
    			
    	</div>
    	<?php } ?>
    

    вылезает ошибка на "строке с токеном":

    PHP Notice:  Undefined property: Loader::$session in /catalog/view/theme/default/template/product/category.tpl on line 105
    PHP Notice:  Trying to get property of non-object in /catalog/view/theme/default/template/product/category.tpl on line 105
    

    как сделать, чтобы токен подгружался?

  8. Добрый вечер! после очистки сайта от вирусов, вылезла ошибка:

     

    Warning: strpos() [function.strpos]: Empty needle in /public_html/vqmod/vqcache/vq2-catalog_controller_common_header.php on line 64

    // Daniel's robot detector
    		$status = true;
    		
    		if (isset($this->request->server['HTTP_USER_AGENT'])) {
    			$robots = explode("\n", trim($this->config->get('config_robots')));
    
    			foreach ($robots as $robot) {
    				if ($robot && strpos($this->request->server['HTTP_USER_AGENT'], trim($robot)) !== false) { // ошибка здесь
    					$status = false;
    
    					break;
    				}
    			}
    		}
    

    Как ее победить?

  9. Доброе утро! Подскажите, пожалуйста, как мне проверить базовую валюту у товара? у меня стоит модуль "Покупка в 1 клик" (автор freelancer). Я сделал запись заказов в базу данных. Но как мне проверить программно базовую валюту? она может быть и в долларах и в евро, а записать стоимость товара мне надо в рублях.

  10. Добрый день! Сделал в админке у атрибута текстовое поле, соотв. вношу значения 0 и 1, где 1 - вывод атрибута на странице категории у товара.

     

    в шаблоне вывел эти атрибуты следующим образом:

    <!-- Вывод необходимых атрибутов -->
    	<?php if($product['attribute_groups']) { ?>
                    <?php foreach($product['attribute_groups'] as $attribute_group) { ?>
                        <?php if(!strpos($attribute_group['name'], "—")) {?>
                            <?php foreach($attribute_group['attribute'] as $attribute) { ?>
    			   <?php if(($attribute['atr_tov']) != 0 ){ ?>
                                <div class="cat_atrib"><?php echo $attribute['name']; ?> <span><?php echo $attribute['text']; ?></span></div>							<?php } ?>
                            <?php } ?>
                        <?php } ?>
                    <?php } ?>
                <?php } ?>
    	<!-- Вывод необходимых атрибутов -->
    

    и в javascript в function display(view) { добавил следующие строки (в табличном виде и в сетке)

    var cat_atrib = $(element).find('.cat_atrib').html();
    if (cat_atrib != null) {
        html += '<div class="cat_atrib">'+ cat_atrib + '</div>';
    }
    

    в итоге выводится только один атрибут, хотя в админке проставлены единички у пяти атрибутов. Подскажите, пожалуйста, что я сделал не так. Спасибо!

  11. Я смотрю, вы уж больно шустрый :)) В хорошем смысле этого слова.

    Вы считаете, что вам обязаны ответить тутже? Прям сразу?

    В лс ответил, и давайте вести себя корректнее. Написали в лс и хватит. Для чего дублировать здесь? Показать всем, какой плохой разработчик? Айаяй, не ответил вам в течение часа. А самое интересное то, что после того как вам в лс помогут, вы тут отписать о том что вашу проблему решили, не удосужитесь.

    простите, за мой тон. Но личное сообщение я писал еще 13 мая, а в онлайне вы появлялись регулярно. Еще раз простите. Да и с удовольствием отписываюсь, если мне помогут, либо попробуют решить какую-то проблему.

  12. Уважаемый разработчик, вы на сообщения принципиально не отвечаете? Проблема с ЧПУ, с seopro. Внес изменения исходя из вашего файла seopro.php - на наборах чпу стало работать, а на производителях и товарах перестало. На демо у вас вообще чпу отключено. Помогите, пожалуйста, решить эту проблему.

×
×
  • Створити...

Important Information

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