Skip to content

Instantly share code, notes, and snippets.

@smycek
Created March 12, 2020 03:58
Show Gist options
  • Save smycek/30e3729e7790100975b7b121ded0c696 to your computer and use it in GitHub Desktop.
Save smycek/30e3729e7790100975b7b121ded0c696 to your computer and use it in GitHub Desktop.
<?php
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
use Magento\Framework\App\Action\Action;
// @codingStandardsIgnoreFile
?>
<?php
/**
* Product list template
*
* @var $block \Magento\Catalog\Block\Product\ListProduct
*/
?>
<?php
$_productCollection = $block->getLoadedProductCollection();
$_helper = $this->helper('Magento\Catalog\Helper\Output');
$_imagehelper = $this->helper('Magento\Catalog\Helper\Image');
$_category_config = $this->helper('Smartwave\Porto\Helper\Data')->getConfig('porto_settings/category');
$_category_grid_config = $this->helper('Smartwave\Porto\Helper\Data')->getConfig('porto_settings/category_grid');
$_product_label_config = $this->helper('Smartwave\Porto\Helper\Data')->getConfig('porto_settings/product_label');
$move_actions = "";
$flex_grid = "";
?>
<?php if (!$_productCollection->count()): ?>
<div class="message info empty"><div><?php echo __('We can\'t find products matching the selection.') ?></div></div>
<?php else: ?>
<?php echo $block->getToolbarHtml() ?>
<?php echo $block->getAdditionalHtml() ?>
<?php
if ($block->getMode() == 'grid') {
$viewMode = 'grid';
$image = 'category_page_grid';
$hover_image = 'category_page_grid-hover';
$showDescription = false;
$templateType = \Magento\Catalog\Block\Product\ReviewRendererInterface::SHORT_VIEW;
$columns = 'columns'.$_category_grid_config['columns'];
$move_actions = $_category_grid_config['move_actions'];
if(isset($_category_grid_config['flex_grid']) && $_category_grid_config['flex_grid'])
$flex_grid = "flex-grid";
} else {
$viewMode = 'list';
$image = 'category_page_list';
$hover_image = 'category_page_list-hover';
$showDescription = true;
$templateType = \Magento\Catalog\Block\Product\ReviewRendererInterface::FULL_VIEW;
$columns = '';
}
$image_width = ($_category_config['ratio_width'])?$_category_config['ratio_width']:300;
$image_height = ($_category_config['ratio_height'])?$_category_config['ratio_height']:300;
?>
<div class="products wrapper <?php echo $viewMode; ?> <?php echo $columns; ?> <?php echo $flex_grid; ?> products-<?php echo $viewMode; ?>">
<?php $iterator = 1; ?>
<ol class="products list items product-items">
<?php /** @var $_product \Magento\Catalog\Model\Product */ ?>
<?php foreach ($_productCollection as $_product): ?>
<?php echo($iterator++ == 1) ? '<li class="item product product-item">' : '</li><li class="item product product-item">' ?>
<div class="product-item-info" data-container="product-grid">
<?php // Product Image ?>
<div class="product photo product-item-photo">
<a href="<?php echo $_product->getProductUrl() ?>" tabindex="-1">
<?php
if($_category_config['aspect_ratio'])
$productImage = $_imagehelper->init($_product, $image)->constrainOnly(FALSE)->keepAspectRatio(TRUE)->keepFrame(FALSE)->resize($image_width);
else
$productImage = $_imagehelper->init($_product, $image)->resize($image_width, $image_height);
$productImageUrl = $productImage->getUrl();
?>
<img class="product-image-photo default_image" src="<?php echo $productImageUrl; ?>" alt="<?php echo $productImage->getLabel(); ?>"/>
<?php if($_category_config['alternative_image']): ?>
<?php
if($_category_config['aspect_ratio'])
$productHoverImage = $_imagehelper->init($_product, $hover_image)->constrainOnly(FALSE)->keepAspectRatio(TRUE)->keepFrame(FALSE)->resize($image_width);
else
$productHoverImage = $_imagehelper->init($_product, $hover_image)->resize($image_width, $image_height);
$productHoverImageUrl = $productHoverImage->getUrl();
?>
<?php if($productImageUrl != str_replace("/thumbnail/","/small_image/",$productHoverImageUrl)): ?>
<img class="product-image-photo hover_image" src="<?php echo $productHoverImageUrl; ?>" alt="<?php echo $productHoverImage->getLabel(); ?>"/>
<?php endif; ?>
<?php endif; ?>
</a>
<?php
$product_label = "";
if($_product_label_config['sale_label']) {
$orgprice = $_product->getFinalPrice();
$specialprice = $_product->getSpecialPrice();
$specialfromdate = $_product->getSpecialFromDate();
$specialtodate = $_product->getSpecialToDate();
$today = time();
if(!$specialprice)
$specialprice = $orgprice;
if($specialprice < $orgprice) {
if((is_null($specialfromdate) && is_null($specialtodate)) || ($today >= strtotime($specialfromdate) && is_null($specialtodate)) || ($today <= strtotime($specialtodate) && is_null($specialfromdate)) || ($today >= strtotime($specialfromdate) && $today <= strtotime($specialtodate))){
if($_product_label_config['sale_label_percent']) {
$save_percent = 100-round(($specialprice/$orgprice)*100);
$product_label .= '<div class="product-label sale-label">'.'-'.$save_percent.'%'.'</div>';
} else {
$product_label .= '<div class="product-label sale-label">'.$_product_label_config['sale_label_text'].'</div>';
}
}
}
}
if($_product_label_config['new_label']) {
$now = date("Y-m-d");
$newsFrom= substr($_product->getData('news_from_date'),0,10);
$newsTo= substr($_product->getData('news_to_date'),0,10);
if ($newsTo != '' || $newsFrom != ''){
if (($newsTo != '' && $newsFrom != '' && $now>=$newsFrom && $now<=$newsTo) || ($newsTo == '' && $now >=$newsFrom) || ($newsFrom == '' && $now<=$newsTo)) {
$product_label .= '<div class="product-label new-label">'.$_product_label_config['new_label_text'].'</div>';
}
}
}
if($product_label)
echo '<div class="product-labels">'.$product_label.'</div>';
?>
<?php if($_category_config['actions'] && $move_actions): ?>
<div class="product-item-inner">
<div class="product actions product-item-actions">
<div class="actions-primary">
<?php if ($_product->isSaleable()): ?>
<?php $postParams = $block->getAddToCartPostParams($_product); ?>
<form data-role="tocart-form" action="<?php echo $postParams['action']; ?>" method="post">
<input type="hidden" name="product" value="<?php echo $postParams['data']['product']; ?>">
<input type="hidden" name="<?php echo Action::PARAM_NAME_URL_ENCODED; ?>" value="<?php echo $postParams['data'][Action::PARAM_NAME_URL_ENCODED]; ?>">
<?php echo $block->getBlockHtml('formkey')?>
<button type="submit"
title="<?php echo $block->escapeHtml(__('Add to Cart')); ?>"
class="action tocart primary">
<span><?php echo __('Add to Cart') ?></span>
</button>
</form>
<?php else: ?>
<?php if ($_product->getIsSalable()): ?>
<div class="stock available"><span><?php echo __('In stock') ?></span></div>
<?php else: ?>
<div class="stock unavailable"><span><?php echo __('Out of stock') ?></span></div>
<?php endif; ?>
<?php endif; ?>
</div>
<?php if ($block->getMode() == 'grid'): ?>
<?php if($_category_config['addtowishlist']): ?>
<?php if ($this->helper('Magento\Wishlist\Helper\Data')->isAllow()): ?>
<a href="#"
class="action towishlist actions-secondary"
title="<?php echo $block->escapeHtml(__('Add to Wish List')); ?>"
aria-label="<?php echo $block->escapeHtml(__('Add to Wish List')); ?>"
data-post='<?php echo $block->getAddToWishlistParams($_product); ?>'
data-action="add-to-wishlist"
role="button">
<span><?php echo __('Add to Wish List') ?></span>
</a>
<?php endif; ?>
<?php endif; ?>
<?php endif; ?>
<?php if($_category_config['addtocompare']): ?>
<?php
$compareHelper = $this->helper('Magento\Catalog\Helper\Product\Compare');
?>
<a href="#"
class="action tocompare actions-secondary"
title="<?php echo $block->escapeHtml(__('Add to Compare')); ?>"
aria-label="<?php echo $block->escapeHtml(__('Add to Compare')); ?>"
data-post='<?php echo $compareHelper->getPostDataParams($_product); ?>'
role="button">
<span><?php echo __('Add to Compare') ?></span>
</a>
<?php endif; ?>
</div>
</div>
<?php endif; ?>
</div>
<div class="product details product-item-details">
<?php
$_productNameStripped = $block->stripTags($_product->getName(), null, true);
?>
<strong class="product name product-item-name">
<a class="product-item-link"
href="<?php echo $_product->getProductUrl() ?>">
<?php echo $_helper->productAttribute($_product, $_product->getName(), 'name'); ?>
</a>
</strong>
<?php if($_category_config['rating_star']): ?>
<?php
$review_html = $block->getReviewsSummaryHtml($_product, $templateType);
?>
<?php if($review_html): ?>
<?php echo $review_html; ?>
<?php else: ?>
<div class="product-reviews-summary short">
<div class="rating-summary">
<span class="label"><span>Rating:</span></span>
<div class="rating-result" title="0%">
<span style="width:0"><span>0%</span></span>
</div>
</div>
</div>
<?php endif; ?>
<?php endif; ?>
<?php if ($showDescription):?>
<div class="product description product-item-description">
<?php echo $_helper->productAttribute($_product, $_product->getShortDescription(), 'short_description') ?>
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped ?>"
class="action more"><?php echo __('Learn More') ?></a>
</div>
<?php endif; ?>
<?php if($_category_config['product_price']): ?>
<?php echo $block->getProductPrice($_product) ?>
<?php endif; ?>
<?php echo $block->getProductDetailsHtml($_product); ?>
<?php if($_category_config['actions'] && !$move_actions): ?>
<div class="product-item-inner">
<div class="product actions product-item-actions">
<?php if ($block->getMode() == 'grid'): ?>
<?php if($_category_config['addtowishlist']): ?>
<?php if ($this->helper('Magento\Wishlist\Helper\Data')->isAllow()): ?>
<a href="#"
class="action towishlist actions-secondary"
title="<?php echo $block->escapeHtml(__('Add to Wish List')); ?>"
aria-label="<?php echo $block->escapeHtml(__('Add to Wish List')); ?>"
data-post='<?php echo $block->getAddToWishlistParams($_product); ?>'
data-action="add-to-wishlist"
role="button">
<span><?php echo __('Add to Wish List') ?></span>
</a>
<?php endif; ?>
<?php endif; ?>
<?php endif; ?>
<div class="actions-primary">
<?php if ($_product->isSaleable()): ?>
<?php $postParams = $block->getAddToCartPostParams($_product); ?>
<form data-role="tocart-form" action="<?php echo $postParams['action']; ?>" method="post">
<input type="hidden" name="product" value="<?php echo $postParams['data']['product']; ?>">
<input type="hidden" name="<?php echo Action::PARAM_NAME_URL_ENCODED; ?>" value="<?php echo $postParams['data'][Action::PARAM_NAME_URL_ENCODED]; ?>">
<?php echo $block->getBlockHtml('formkey')?>
<button type="submit"
title="<?php echo $block->escapeHtml(__('Add to Cart')); ?>"
class="action tocart primary">
<span><?php echo __('Add to Cart') ?></span>
</button>
</form>
<?php else: ?>
<?php if ($_product->getIsSalable()): ?>
<div class="stock available"><span><?php echo __('In stock') ?></span></div>
<?php else: ?>
<div class="stock unavailable"><span><?php echo __('Out of stock') ?></span></div>
<?php endif; ?>
<?php endif; ?>
</div>
<?php if ($block->getMode() != 'grid'): ?>
<?php if($_category_config['addtowishlist']): ?>
<?php if ($this->helper('Magento\Wishlist\Helper\Data')->isAllow()): ?>
<a href="#"
class="action towishlist actions-secondary"
title="<?php echo $block->escapeHtml(__('Add to Wish List')); ?>"
aria-label="<?php echo $block->escapeHtml(__('Add to Wish List')); ?>"
data-post='<?php echo $block->getAddToWishlistParams($_product); ?>'
data-action="add-to-wishlist"
role="button">
<span><?php echo __('Add to Wish List') ?></span>
</a>
<?php endif; ?>
<?php endif; ?>
<?php endif; ?>
<?php if($_category_config['addtocompare']): ?>
<?php
$compareHelper = $this->helper('Magento\Catalog\Helper\Product\Compare');
?>
<a href="#"
class="action tocompare actions-secondary"
title="<?php echo $block->escapeHtml(__('Add to Compare')); ?>"
aria-label="<?php echo $block->escapeHtml(__('Add to Compare')); ?>"
data-post='<?php echo $compareHelper->getPostDataParams($_product); ?>'
role="button">
<span><?php echo __('Add to Compare') ?></span>
</a>
<?php endif; ?>
</div>
</div>
<?php endif; ?>
</div>
</div>
<?php echo($iterator == count($_productCollection)+1) ? '</li>' : '' ?>
<?php endforeach; ?>
</ol>
</div>
<?php echo $block->getToolbarHtml() ?>
<?php if (!$block->isRedirectToCartEnabled()) : ?>
<script type="text/x-magento-init">
{
"[data-role=tocart-form], .form.map.checkout": {
"catalogAddToCart": {}
}
}
</script>
<?php endif; ?>
<?php if ($block->getMode() == 'grid'): ?>
<script type="text/javascript">
require([
'jquery'
], function ($) {
$('.main .products.grid .product-items li.product-item:nth-child(2n)').addClass('nth-child-2n');
$('.main .products.grid .product-items li.product-item:nth-child(2n+1)').addClass('nth-child-2np1');
$('.main .products.grid .product-items li.product-item:nth-child(3n)').addClass('nth-child-3n');
$('.main .products.grid .product-items li.product-item:nth-child(3n+1)').addClass('nth-child-3np1');
$('.main .products.grid .product-items li.product-item:nth-child(4n)').addClass('nth-child-4n');
$('.main .products.grid .product-items li.product-item:nth-child(4n+1)').addClass('nth-child-4np1');
$('.main .products.grid .product-items li.product-item:nth-child(5n)').addClass('nth-child-5n');
$('.main .products.grid .product-items li.product-item:nth-child(5n+1)').addClass('nth-child-5np1');
$('.main .products.grid .product-items li.product-item:nth-child(6n)').addClass('nth-child-6n');
$('.main .products.grid .product-items li.product-item:nth-child(6n+1)').addClass('nth-child-6np1');
$('.main .products.grid .product-items li.product-item:nth-child(7n)').addClass('nth-child-7n');
$('.main .products.grid .product-items li.product-item:nth-child(7n+1)').addClass('nth-child-7np1');
$('.main .products.grid .product-items li.product-item:nth-child(8n)').addClass('nth-child-8n');
$('.main .products.grid .product-items li.product-item:nth-child(8n+1)').addClass('nth-child-8np1');
});
</script>
<?php endif; ?>
<?php endif; ?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment