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

Вывод данных на карточке в категориях


Sepika

Recommended Posts

Здравствуйте уважаемые!

 

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

 

Ситуация следующая:

OpenCart 2.3 + тема Welldone

Я создал для товаров в админке доп. поле "подарок" с ответом да/нет, записывается в б/д значением 0 - нет, 1 - да. Добавил в модель, контроллер и в карточке товара if ==1 выводится иконка со значком подарка на изображении - все как надо. То же самое в quickview - все работает.

Соответственно надо чтобы в категории, на главной - везде где товары отображаются, при условии наличия в б/д у товара 1 в строке present выводился этот значок.

 

В теме за выведение товаров отвечает listing.php, который подключается в category.tpl. В сам listing я добавил такую же запись, как и в product и quickview:

<?php if ($present==1) {?>
	<div class="present_label present_with_desc"><span><?php echo $text_present; ?></span></div>
<?php } ?>

У listing своего контроллера нет. Как я не пробовал вводить в контроллер category.php - все время ошибка "Notice: Undefined variable: present in .../listing.php".

 

В контроллер product.php я добавил в таком виде:

249ая строка - текст

$data['text_present'] = $this->language->get('text_present');

282ая строка - значение

$data['present'] = $product_info['present'];

 

Как это все правильно записать в контроллер категории? Знания PHP, к сожалению, не хватает((

И в правильный ли я контроллер пытаюсь записать...

Если что, вот как этот listing подключается в шаблоне category.tpl:

<div class="products-grid products-listing products-col products-isotope <?php echo $content_class;?> <?php if($this->welldone->get_settings('category_listing_view','grid') == 'list'){echo 'row-view';}?>">
          <?php include("catalog/view/theme/welldone/template/welldone/listing.php");?> 
</div>

 

Надіслати
Поділитися на інших сайтах


10 часов назад, fanatic сказал:

покажите файл listing.php

 

<?php

static $sec_id = 0;

if (!isset($this->session->data['countdown-index']))
  $this->session->data['countdown-index'] = 1;

$this->session->data['countdown-index']++;  
 
foreach ($products as $product) {?>
<div class="product-preview-wrapper<?php echo isset($product['isotope_class_id']) ? ' '.$product['isotope_class_id'] : '';?><?php if (isset($visibility_class)){echo $visibility_class;}?>">
      <div class="product-preview">
        <div class="product-preview__image"><a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" alt="<?php echo $product['name']; ?>" title="<?php echo $product['name']; ?>"/></a>
        
        <?php $count_down_end = '';$color_options = array();$sizes_options = array();
        
         foreach($product['labels'] as $label_type=>$label_text){
          if ($label_type == 'new')
            echo '<div class="product-preview__label product-preview__label--left product-preview__label--new"><span>'.$label_text.'</span></div>';
          elseif ($label_type == 'discount')
            echo '<div class="product-preview__label product-preview__label--right product-preview__label--sale"><span>'.$label_text.'</span></div>';
          elseif ($label_type == 'outofstock')
            echo '<div class="product-preview__outstock">'.$label_text.'</div>';
          elseif ($label_type == 'countdown')
            $count_down_end = $label_text;
          elseif ($label_type == 'colors')
            $color_options = $label_text;
          elseif ($label_type == 'sizes')
            $sizes_options = $label_text;       
         }
		 
         
         if ($count_down_end != '')
         {
           $ret = explode('-',$count_down_end);
           $y = (int)$ret[0];
           $m = (int)$ret[1]; 
           $d = (int)$ret[2];
           
           if ($y && $m && $d)
           {
             $c_id = $this->session->data['countdown-index'].'-'.$product['product_id'];
             
             echo '<div class="countdown_box"><div class="countdown_inner"><div class="title">'.$this->welldone->get_settings('countdown_title','special price valid:').'</div><div id="countdown-'.$c_id.'"></div></div></div>';
             echo '<script type="text/javascript">jQuery(function ($) {if ($("#countdown-'.$c_id.'").length > 0){$(\'#countdown-'.$c_id.'\').countdown({until: new Date('.$y.', '.($m - 1).', '.$d.')});}});</script>';
           }
         }
        ?>
		<!-- ПОДАРОК -->
			<?php if ($present==1) {?>
				<div class="present_label present_with_desc"><span><?php echo $text_present; ?></span></div>
			<?php } ?>
        <!-- /ПОДАРОК -->
        </div>
        
        <div class="product-preview__info text-center">
          <div class="product-preview__info__btns">
            <a href="#" class="btn btn--round" onclick="welldone_add_to_cart('<?php echo $product['product_id']; ?>', '1');return false;"><span class="icon-ecommerce"></span></a> 
            <a href="index.php?route=welldone/quickview&product_id=<?php echo $product['product_id']; ?>" class="btn btn--round btn--dark btn-quickview" data-toggle="modal" data-target="#quickView"><span class="icon icon-eye"></span></a>
          </div>
          <div class="product-preview__info__title">
            <h2><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></h2>
          </div>
          
          <div class="rating">
          
          <?php if ($product['rating']) { ?>
          <div class="rating">
            <?php for ($i = 1; $i <= 5; $i++) { ?>
            <?php if ($product['rating'] < $i) { ?>
            <span class="icon-star"></span>
            <?php } else { ?>
            <span class="icon-star-fill"></span>
            <?php } ?>
            <?php } ?>
          </div>
          <?php } ?>
          
          </div>
          
          <?php if(count($color_options) && $this->welldone->get_settings('label_color_listing_status','show') == 'show' && in_array($this->welldone->get_settings('show_options','both'),array('both','colors'))) {?>
          <ul class="options-swatch options-swatch--color">
          <?php foreach ($color_options as $option_value) { ?>
						<li data-toggle="tooltip" title="<?php echo $option_value['name'];?>">
              <span class="swatch-label"><img src="<?php echo $option_value['image']; ?>" alt="<?php echo $option_value['name'] . ($option_value['price'] ? ' ' . $option_value['price_prefix'] . $option_value['price'] : ''); ?>" /></span>
            </li>
          <?php } ?> 
					</ul>
          <?php }if(count($sizes_options) && $this->welldone->get_settings('label_sizes_listing_status','show') == 'show' && in_array($this->welldone->get_settings('show_options','both'),array('both','sizes'))){ ?>
            <ul class="options-swatch options-swatch--size">
            <?php foreach ($sizes_options as $option_value) { ?>
  						<li data-toggle="tooltip" title="<?php echo $option_value['name'];?>" class="size-option">
                <?php echo $option_value['name']; ?>
              </li>
            <?php } ?> 
  					</ul>
          <?php } ?>
          
          <?php if ($product['price']) { ?>
          <div class="price-box">
            <?php if (!$product['special']) { ?>
            <?php echo $product['price']; ?>
            <?php } else { ?>
            <span class="price-box__new"><?php echo $product['special']; ?></span> <span class="price-box__old"><?php echo $product['price']; ?></span>
            <?php } ?>
          </div>
          <?php } ?>
          
          <?php if (isset($product['description'])){ ?>
          <div class="product-preview__info__description">
						<p><?php echo $product['description']; ?></p>
					</div>
          <?php }?>
          
          <div class="product-preview__info__link">
            <a href="#" class="compare-link" onclick="welldone_add_to_compare('<?php echo $product['product_id']; ?>');return false;"><span class="icon icon-bars"></span><span class="product-preview__info__link__text"><?php echo $button_compare; ?></span></a> 
            <a href="#" onclick="welldone_add_to_whishlist('<?php echo $product['product_id']; ?>');return false;"><span class="icon icon-favorite"></span><span class="product-preview__info__link__text"><?php echo $button_wishlist; ?></span></a>
            <?php if(isset($button_cart)){ ?>
              <a href="#" onclick="welldone_add_to_cart('<?php echo $product['product_id']; ?>', '1');return false;" class="btn btn--wd buy-link"><span class="icon icon-ecommerce"></span><span class="product-preview__info__link__text"><?php echo $button_cart; ?></span></a>
            <?php }?>
          </div>
        </div>
      </div>
    </div>
<?php }?>    

 

Надіслати
Поділитися на інших сайтах


в модели  catalog/model/catalog/product.php в методе getProduct,  добавляем поле present

		if ($query->num_rows) {
			return array(
				'product_id'       => $query->row['product_id'],
				'name'             => $query->row['name'],
				'description'      => $query->row['description'],
				'meta_title'       => $query->row['meta_title'],
				'meta_h1'          => $query->row['meta_h1'],
				'meta_description' => $query->row['meta_description'],
				'meta_keyword'     => $query->row['meta_keyword'],
				'tag'              => $query->row['tag'],
				'model'            => $query->row['model'],
				'sku'              => $query->row['sku'],
				'upc'              => $query->row['upc'],
				'ean'              => $query->row['ean'],
				'jan'              => $query->row['jan'],
				'isbn'             => $query->row['isbn'],
				'mpn'              => $query->row['mpn'],
				'location'         => $query->row['location'],
				'quantity'         => $query->row['quantity'],
				'stock_status'     => $query->row['stock_status'],
				'image'            => $query->row['image'],
				'manufacturer_id'  => $query->row['manufacturer_id'],
				'manufacturer'     => $query->row['manufacturer'],
				'price'            => ($query->row['discount'] ? $query->row['discount'] : $query->row['price']),
				'special'          => $query->row['special'],
				'reward'           => $query->row['reward'],
				'points'           => $query->row['points'],
				'tax_class_id'     => $query->row['tax_class_id'],
				'date_available'   => $query->row['date_available'],
				'weight'           => $query->row['weight'],
				'weight_class_id'  => $query->row['weight_class_id'],
				'length'           => $query->row['length'],
				'width'            => $query->row['width'],
				'height'           => $query->row['height'],
				'length_class_id'  => $query->row['length_class_id'],
				'subtract'         => $query->row['subtract'],
				'rating'           => round($query->row['rating']),
				'reviews'          => $query->row['reviews'] ? $query->row['reviews'] : 0,
				'minimum'          => $query->row['minimum'],
				'sort_order'       => $query->row['sort_order'],
				'status'           => $query->row['status'],
				'date_added'       => $query->row['date_added'],
				'date_modified'    => $query->row['date_modified'],
				'viewed'           => $query->row['viewed'],
                                'present'          => $guery->row['present']//добавили в массив поле present
			);
		} else {
			return false;
		}

в контроллере catalog/controller/product/category.php, в массив $data['products']    тоже добавляем present

                $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($this->config->get('config_theme') . '_product_description_length')) . '..',
                    'price' => $price,
                    'special' => $special,
                    'tax' => $tax,
                    'minimum' => ($result['minimum'] > 0) ? $result['minimum'] : 1,
                    'rating' => $rating,
                    'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url),
                    'present' => $result['present']
                );

в listing.php

			<?php if ($product['present']==1) {?>
				<div class="present_label present_with_desc"><span><?php echo $text_present; ?></span></div>
			<?php } ?>

 

Надіслати
Поділитися на інших сайтах

Вот ведь спасибище fanatic! Все получилось - осталось только text_present в контроллер категории подключить. Но это я думаю я уже методом тыка найду. А чтобы на главной странице все это заработало, нашел контроллер модуля, отвечающий за вывод того же listing'а.

Спасибо огромное!

...как бы теперь еще понять как тему в "решено" перевести...

Надіслати
Поділитися на інших сайтах


8 минут назад, Sepika сказал:

осталось только text_present в контроллер категории подключить.

 

В 28.07.2017 в 09:23, Sepika сказал:

$data['text_present'] = $this->language->get('text_present');

и в catalog/language/ru-ru/product/category.php  добавить

$_['text_present'] = 'нужный текст';

 

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

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

Important Information

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