Добро пожаловать в наше сообщество!
skripters.net - небольшой форум для вэб-мастеров на котором вам предоставляется широкий выбор скриптов, плагинов, стилей и много чего еще для запуска собственного проекта: интернет-магазина, форума, корпоративного сайта, продающего лендинга. Здесь вы найдете много решений по заработку в интернет. Сможете продать или купить нужное вам решение для старта своего веб-проекта. Опытные пользователи проконсультируют вас если вы вначале пути, подскажут как лучше, помогут в установке и настройке.
1. Для регистрации доступна только одна почтовая служба - GMAIL
2. Если после регистрации вы не получили письмо - проверьте папку СПАМ

Помощь Опции и варианы в плагине "Слайдер товаров"

myfavoriteday

Участник
Регист
20 Дек 2017
Сообщения
10
Реакции
18
Всем привет.
Имеется плагин "Слайдер товаров"
Помогите в нем вывести характеристики (опции) и варианты.
Спасибо!
 

Катерина

Premium+
Регист
12 Дек 2017
Сообщения
19
Реакции
22
Т.к мне надо было выводить по id товара, и количество товаров в CMS у меня не превышало 1000 то эту задачу решила так

Этот код из файла slider-products\index.php
PHP:
  $sql = '
      SELECT distinct p.id,
        CONCAT(c.parent_url,c.url) as category_url,
        p.url as product_url,
        p.*,pv.product_id as variant_exist,
        rate,(p.price_course + p.price_course * (IFNULL(rate,0))) as `price_course`,
        p.currency_iso
      FROM `' . PREFIX . 'product` p
      LEFT JOIN `' . PREFIX . 'category` c
        ON c.id = p.cat_id
      LEFT JOIN `' . PREFIX . 'product_variant` pv
        ON p.id = pv.product_id
     WHERE  ' . $filter.' LIMIT 0, '.$countProduct;
  $res = DB::query($sql);
  //$catalog = new Models_Catalog();
  //$products = $catalog->getListByUserFilter($countProduct, $filter);
   $products = array();
  while ($row = DB::fetchArray($res)) {
     $products[] = $row;
   }
Я поменяла на
PHP:
$catalog = new Models_Catalog();
$products_arr = $catalog->getListByUserFilter(1000, $filter);
$products = $products_arr['catalogItems'];

И чтобы нормально работали кнопки, после начала цикла foreach ($products as $item) { (к стати надо его немного поменять на foreach ($products as $k=>$item) { )
прописала эти строки
PHP:
$product_am = new Models_Product;
$liteFormData = $product_am->createPropertyForm($param = array(
          'id' => $item['id'],
          'maxCount' => $item['count'],
          'productUserFields' => $item['thisUserFields'],
          'action' => "/catalog",
          'method' => "POST",
          'ajax' => true,
          'blockedProp' => $blockedProp,
          'noneAmount' => false,
          'titleBtn' => "В корзину",
          'blockVariants' => $blocksVariants[$item['id']],
          'buyButton' => $buyButton
        ));

        $products[$k]['buyButton'] = $liteFormData['html'];

Кнопки теперь выводятся так <div class="product-buttons">'.$products[$k]['buyButton'].'</div>

А сами характеристики так <div class="value">'.$item['thisUserFields'][80]['value'].'</div> где 80 это id характеристики
 

myfavoriteday

Участник
Регист
20 Дек 2017
Сообщения
10
Реакции
18
Т.к мне надо было выводить по id товара, и количество товаров в CMS у меня не превышало 1000 то эту задачу решила так

Этот код из файла slider-products\index.php
PHP:
  $sql = '
      SELECT distinct p.id,
        CONCAT(c.parent_url,c.url) as category_url,
        p.url as product_url,
        p.*,pv.product_id as variant_exist,
        rate,(p.price_course + p.price_course * (IFNULL(rate,0))) as `price_course`,
        p.currency_iso
      FROM `' . PREFIX . 'product` p
      LEFT JOIN `' . PREFIX . 'category` c
        ON c.id = p.cat_id
      LEFT JOIN `' . PREFIX . 'product_variant` pv
        ON p.id = pv.product_id
     WHERE  ' . $filter.' LIMIT 0, '.$countProduct;
  $res = DB::query($sql);
  //$catalog = new Models_Catalog();
  //$products = $catalog->getListByUserFilter($countProduct, $filter);
   $products = array();
  while ($row = DB::fetchArray($res)) {
     $products[] = $row;
   }
Я поменяла на
PHP:
$catalog = new Models_Catalog();
$products_arr = $catalog->getListByUserFilter(1000, $filter);
$products = $products_arr['catalogItems'];

И чтобы нормально работали кнопки, после начала цикла foreach ($products as $item) { (к стати надо его немного поменять на foreach ($products as $k=>$item) { )
прописала эти строки
PHP:
$product_am = new Models_Product;
$liteFormData = $product_am->createPropertyForm($param = array(
          'id' => $item['id'],
          'maxCount' => $item['count'],
          'productUserFields' => $item['thisUserFields'],
          'action' => "/catalog",
          'method' => "POST",
          'ajax' => true,
          'blockedProp' => $blockedProp,
          'noneAmount' => false,
          'titleBtn' => "В корзину",
          'blockVariants' => $blocksVariants[$item['id']],
          'buyButton' => $buyButton
        ));

        $products[$k]['buyButton'] = $liteFormData['html'];

Кнопки теперь выводятся так <div class="product-buttons">'.$products[$k]['buyButton'].'</div>

А сами характеристики так <div class="value">'.$item['thisUserFields'][80]['value'].'</div> где 80 это id характеристики
Спасибо! Я очень благодарен за ответ и вашу помощь.
Получилось вывести кнопку вашим способом, но характеристики нет.
Можно как то получить ваш код файла? Может что то еще надо сделать.
 

Катерина

Premium+
Регист
12 Дек 2017
Сообщения
19
Реакции
22
PHP:
<?php

/*
  Plugin Name: Слайдер товаров
  Description: Выводит в любое место страницы слайдер товаров. В разметкe страницы товара необходимо вставить шорт код: [slider-products] с аргументами. Пример использования:  [slider-products countProduct="6" countPrint="3" categoryId="0" product="1,29,33,47"], где countProduct - количество товаров, countPrint - количество одновременно показываемых товаров, categoryId - id категории из которой выводятся товары. Или [slider-products] с аргументами. Пример использования:  [slider-products countPrint="3" product="1,29,33,47"], где product - перечисление id конкретных товаров для вывода. Все аргументы не обязательны.
  Author: Avdeev Mark
  Version: 1.1.5
 */

/*
  Пример использования.
  В разметке страница товара необходимо вставить шорт код:
  [slider-products countProduct="6" countPrint="3" categoryId="0"]
 */

function sliderProducts($args) {
  $countProduct = !empty($args['countproduct']) ? $args['countproduct'] : 6; //количество товаров в ленте
  $countPrint = !empty($args['countprint']) ? $args['countprint'] : 3; //количество выводимых товаров
  $categoryId = !empty($args['categoryid']) ? $args['categoryid'] : 0; //id категории из которой нужно выводить товары
  $product = !empty($args['product']) ? $args['product'] : ''; //id категории из которой нужно выводить товары
  $filter = $categoryId ? 'c.id = '.$categoryId : '1=1';
  $filter .= ' and p.activity = 1';
  if ($product != '') {
    $filter = '';
    $products = explode(',', $product);
    foreach ($products as $id) {
      $filter .= ' p.id = '.DB::quote($id).' OR';
    }
    $filter = substr($filter, 0, strlen($str)-2);
    $countProduct = count($products);
  }
  $catalog = new Models_Catalog();
  $products = $catalog->getListByUserFilter(1000, $filter);

  $html = '
      <div class="m-p-products recommend">
      <div class="m-p-products-slider">
      <div class="index-slider owl-carousel owl-theme">
    ';
  $currency = MG::getSetting('currency');
  foreach ($products['catalogItems'] as $k=>$item) {
    $product_am = new Models_Product;
    $liteFormData = $product_am->createPropertyForm($param = array(
      'id' => $item['id'],
      'maxCount' => $item['count'],
      'productUserFields' => $item['thisUserFields'],
      'action' => "/catalog",
      'method' => "POST",
      'ajax' => true,
      'blockedProp' => $blockedProp,
      'noneAmount' => false,
      'titleBtn' => "В корзину",
      'blockVariants' => $blocksVariants[$item['id']],
      'buyButton' => $buyButton
    ));

    $products['catalogItems'][$k]['buyButton'] = $liteFormData['html'];

    $imagesUrl = explode("|", $item['image_url']);
    $item["image_url"] = "";
    if (!empty($imagesUrl[0])) {
      $item["image_url"] = $imagesUrl[0];
    }

    if(function_exists('mgImageProductPath')){
      $imgSrc = mgImageProductPath($item['image_url'], $item['id']);
    }else{
      $imgSrc = SITE.'/uploads/thumbs/70_'.$item['image_url'];
    }

    if ($item['count'] == 'много' || $item['count'] == -1){$availability = 'В наличии';}
    else {$availability ='Нет в наличии';}

    $html.='
      <div class="product-wrapper">

        <a class="product-image" href="'.SITE.'/'.$item['category_url'].'/'.$item['product_url'].'" title="'.$item['title'].'">
             <img src="'.$imgSrc.'" alt="'.$item['title'].'" title="'.$item['title'].'" class="mg-product-image">
          </a>

        <div class="product-details">
        <a class="product-name" href="'.SITE.'/'.$item['category_url'].'/'.$item['product_url'].'"><span>'.$item['title'].'</span></a>
        <div class="value">Температура: '.$item['thisUserFields'][53]['value'].'</div>
        <div class="value">Мощность: '.$item['thisUserFields'][67]['value'].'</div>
        <div class="value">Напряжение: '.$item['thisUserFields'][68]['value'].'</div>
        <span class="count-on-storage">

        <span> <span itemprop="availability">
        '.$availability.'
        </span> </span>
        </span>
        <div class="product-footer">
        <div class="product-price">'.MG::priceCourse($item['price_course']).' '.$currency.'</div>
        <div class="product-buttons">'.$products['catalogItems'][$k]['buyButton'].'</div>
      </div>
      </div>
      </div>';
  }

  $html .= '
 </div>
 </div>
 </div>
    <script>
      $(document).ready(function(){

    $(".mg-plugin-slider").owlCarousel({
        loop: true,
        nav: true,
        responsive: {
            0: {
                items: 2,
                margin: 10
            },
            768: {
                items: 3
            },
            990: {
                items                : 4,margin: 16
            }

        }
    });
      });
    </script>
';

  return $html;
}
mgAddMeta('<link href="'.SITE.'/mg-plugins/slider-products/css/style.css" rel="stylesheet" type="text/css">');
mgAddMeta('<script type="text/javascript" src="'.SITE.'/mg-plugins/slider-products/js/jquery.carouFredSel-6.2.0-packed.js" charset="utf-8"></script>');
mgAddShortcode('slider-products', 'sliderProducts');
 

myfavoriteday

Участник
Регист
20 Дек 2017
Сообщения
10
Реакции
18
Спасибо большое. Все получилось. Вы очень помогли.
Желаю чтоб вам тоже всегда встречались доброжелательные люди.
 

myfavoriteday

Участник
Регист
20 Дек 2017
Сообщения
10
Реакции
18
PHP:
<?php

/*
  Plugin Name: Слайдер товаров
  Description: Выводит в любое место страницы слайдер товаров. В разметкe страницы товара необходимо вставить шорт код: [slider-products] с аргументами. Пример использования:  [slider-products countProduct="6" countPrint="3" categoryId="0" product="1,29,33,47"], где countProduct - количество товаров, countPrint - количество одновременно показываемых товаров, categoryId - id категории из которой выводятся товары. Или [slider-products] с аргументами. Пример использования:  [slider-products countPrint="3" product="1,29,33,47"], где product - перечисление id конкретных товаров для вывода. Все аргументы не обязательны.
  Author: Avdeev Mark
  Version: 1.1.5
*/

/*
  Пример использования.
  В разметке страница товара необходимо вставить шорт код:
  [slider-products countProduct="6" countPrint="3" categoryId="0"]
*/

function sliderProducts($args) {
  $countProduct = !empty($args['countproduct']) ? $args['countproduct'] : 6; //количество товаров в ленте
  $countPrint = !empty($args['countprint']) ? $args['countprint'] : 3; //количество выводимых товаров
  $categoryId = !empty($args['categoryid']) ? $args['categoryid'] : 0; //id категории из которой нужно выводить товары
  $product = !empty($args['product']) ? $args['product'] : ''; //id категории из которой нужно выводить товары
  $filter = $categoryId ? 'c.id = '.$categoryId : '1=1';
  $filter .= ' and p.activity = 1';
  if ($product != '') {
    $filter = '';
    $products = explode(',', $product);
    foreach ($products as $id) {
      $filter .= ' p.id = '.DB::quote($id).' OR';
    }
    $filter = substr($filter, 0, strlen($str)-2);
    $countProduct = count($products);
  }
  $catalog = new Models_Catalog();
  $products = $catalog->getListByUserFilter(1000, $filter);

  $html = '
      <div class="m-p-products recommend">
      <div class="m-p-products-slider">
      <div class="index-slider owl-carousel owl-theme">
    ';
  $currency = MG::getSetting('currency');
  foreach ($products['catalogItems'] as $k=>$item) {
    $product_am = new Models_Product;
    $liteFormData = $product_am->createPropertyForm($param = array(
      'id' => $item['id'],
      'maxCount' => $item['count'],
      'productUserFields' => $item['thisUserFields'],
      'action' => "/catalog",
      'method' => "POST",
      'ajax' => true,
      'blockedProp' => $blockedProp,
      'noneAmount' => false,
      'titleBtn' => "В корзину",
      'blockVariants' => $blocksVariants[$item['id']],
      'buyButton' => $buyButton
    ));

    $products['catalogItems'][$k]['buyButton'] = $liteFormData['html'];

    $imagesUrl = explode("|", $item['image_url']);
    $item["image_url"] = "";
    if (!empty($imagesUrl[0])) {
      $item["image_url"] = $imagesUrl[0];
    }

    if(function_exists('mgImageProductPath')){
      $imgSrc = mgImageProductPath($item['image_url'], $item['id']);
    }else{
      $imgSrc = SITE.'/uploads/thumbs/70_'.$item['image_url'];
    }

    if ($item['count'] == 'много' || $item['count'] == -1){$availability = 'В наличии';}
    else {$availability ='Нет в наличии';}

    $html.='
      <div class="product-wrapper">

        <a class="product-image" href="'.SITE.'/'.$item['category_url'].'/'.$item['product_url'].'" title="'.$item['title'].'">
             <img src="'.$imgSrc.'" alt="'.$item['title'].'" title="'.$item['title'].'" class="mg-product-image">
          </a>

        <div class="product-details">
        <a class="product-name" href="'.SITE.'/'.$item['category_url'].'/'.$item['product_url'].'"><span>'.$item['title'].'</span></a>
        <div class="value">Температура: '.$item['thisUserFields'][53]['value'].'</div>
        <div class="value">Мощность: '.$item['thisUserFields'][67]['value'].'</div>
        <div class="value">Напряжение: '.$item['thisUserFields'][68]['value'].'</div>
        <span class="count-on-storage">

        <span> <span itemprop="availability">
        '.$availability.'
        </span> </span>
        </span>
        <div class="product-footer">
        <div class="product-price">'.MG::priceCourse($item['price_course']).' '.$currency.'</div>
        <div class="product-buttons">'.$products['catalogItems'][$k]['buyButton'].'</div>
      </div>
      </div>
      </div>';
  }

  $html .= '
</div>
</div>
</div>
    <script>
      $(document).ready(function(){

    $(".mg-plugin-slider").owlCarousel({
        loop: true,
        nav: true,
        responsive: {
            0: {
                items: 2,
                margin: 10
            },
            768: {
                items: 3
            },
            990: {
                items                : 4,margin: 16
            }

        }
    });
      });
    </script>
';

  return $html;
}
mgAddMeta('<link href="'.SITE.'/mg-plugins/slider-products/css/style.css" rel="stylesheet" type="text/css">');
mgAddMeta('<script type="text/javascript" src="'.SITE.'/mg-plugins/slider-products/js/jquery.carouFredSel-6.2.0-packed.js" charset="utf-8"></script>');
mgAddShortcode('slider-products', 'sliderProducts');
У меня еще вопрос. В кода указана кнопка В КОРЗИНУ, но у меня КУПИТЬ. Не могу найти как изменить. Подскажите пожалуйста куда копать. Спасибо
 

Катерина

Premium+
Регист
12 Дек 2017
Сообщения
19
Реакции
22
Вот поменял и не работает
Ну не знаю что сказать, т.к. у меня работает.


PHP:
<?php

/*
  Plugin Name: Слайдер товаров
  Description: Выводит в любое место страницы слайдер товаров. В разметкe страницы товара необходимо вставить шорт код: [slider-products] с аргументами. Пример использования:  [slider-products countProduct="6" countPrint="3" categoryId="0" product="1,29,33,47"], где countProduct - количество товаров, countPrint - количество одновременно показываемых товаров, categoryId - id категории из которой выводятся товары. Или [slider-products] с аргументами. Пример использования:  [slider-products countPrint="3" product="1,29,33,47"], где product - перечисление id конкретных товаров для вывода. Все аргументы не обязательны.
  Author: Avdeev Mark
  Version: 1.1.5
*/

/*
  Пример использования.
  В разметке страница товара необходимо вставить шорт код:
  [slider-products countProduct="6" countPrint="3" categoryId="0"]
*/

function sliderProducts($args) {
  $countProduct = !empty($args['countproduct']) ? $args['countproduct'] : 6; //количество товаров в ленте
  $countPrint = !empty($args['countprint']) ? $args['countprint'] : 3; //количество выводимых товаров
  $categoryId = !empty($args['categoryid']) ? $args['categoryid'] : 0; //id категории из которой нужно выводить товары
  $product = !empty($args['product']) ? $args['product'] : ''; //id категории из которой нужно выводить товары
  $filter = $categoryId ? 'c.id = '.$categoryId : '1=1';
  $filter .= ' and p.activity = 1';
  if ($product != '') {
    $filter = '';
    $products = explode(',', $product);
    foreach ($products as $id) {
      $filter .= ' p.id = '.DB::quote($id).' OR';
    }
    $filter = substr($filter, 0, strlen($str)-2);
    $countProduct = count($products);
  }
  $catalog = new Models_Catalog();
  $products = $catalog->getListByUserFilter(1000, $filter);

  $html = '
      <div class="m-p-products recommend">
      <div class="m-p-products-slider">
      <div class="index-slider owl-carousel owl-theme">
    ';
  $currency = MG::getSetting('currency');
  foreach ($products['catalogItems'] as $k=>$item) {
    $product_am = new Models_Product;
    $liteFormData = $product_am->createPropertyForm($param = array(
      'id' => $item['id'],
      'maxCount' => $item['count'],
      'productUserFields' => $item['thisUserFields'],
      'action' => "/catalog",
      'method' => "POST",
      'ajax' => true,
      'blockedProp' => $blockedProp,
      'noneAmount' => false,
      'titleBtn' => "Купить",
      'blockVariants' => $blocksVariants[$item['id']],
      'buyButton' => $buyButton
    ));

    $products['catalogItems'][$k]['buyButton'] = $liteFormData['html'];

    $imagesUrl = explode("|", $item['image_url']);
    $item["image_url"] = "";
    if (!empty($imagesUrl[0])) {
      $item["image_url"] = $imagesUrl[0];
    }

    if(function_exists('mgImageProductPath')){
      $imgSrc = mgImageProductPath($item['image_url'], $item['id']);
    }else{
      $imgSrc = SITE.'/uploads/thumbs/70_'.$item['image_url'];
    }

    if ($item['count'] == 'много' || $item['count'] == -1){$availability = 'В наличии';}
    else {$availability ='Нет в наличии';}

    $html.='
      <div class="product-wrapper">

        <a class="product-image" href="'.SITE.'/'.$item['category_url'].'/'.$item['product_url'].'" title="'.$item['title'].'">
             <img src="'.$imgSrc.'" alt="'.$item['title'].'" title="'.$item['title'].'" class="mg-product-image">
          </a>

        <div class="product-details">
        <a class="product-name" href="'.SITE.'/'.$item['category_url'].'/'.$item['product_url'].'"><span>'.$item['title'].'</span></a>
        <div class="value">Температура: '.$item['thisUserFields'][53]['value'].'</div>
        <div class="value">Мощность: '.$item['thisUserFields'][67]['value'].'</div>
        <div class="value">Напряжение: '.$item['thisUserFields'][68]['value'].'</div>
        <span class="count-on-storage">

        <span> <span itemprop="availability">
        '.$availability.'
        </span> </span>
        </span>
        <div class="product-footer">
        <div class="product-price">'.MG::priceCourse($item['price_course']).' '.$currency.'</div>
        <div class="product-buttons">'.$products['catalogItems'][$k]['buyButton'].'</div>
      </div>
      </div>
      </div>';
  }

  $html .= '
</div>
</div>
</div>
    <script>
      $(document).ready(function(){

    $(".mg-plugin-slider").owlCarousel({
        loop: true,
        nav: true,
        responsive: {
            0: {
                items: 2,
                margin: 10
            },
            768: {
                items: 3
            },
            990: {
                items                : 4,margin: 16
            }

        }
    });
      });
    </script>
';

  return $html;
}
mgAddMeta('<link href="'.SITE.'/mg-plugins/slider-products/css/style.css" rel="stylesheet" type="text/css">');
mgAddMeta('<script type="text/javascript" src="'.SITE.'/mg-plugins/slider-products/js/jquery.carouFredSel-6.2.0-packed.js" charset="utf-8"></script>');
mgAddShortcode('slider-products', 'sliderProducts');

Попробуйте тупо скопировать этот код и вставить в index.php плагина
 
Последнее редактирование:
Сверху