Jump to content

sevsev

Members
  • Posts

    361
  • Joined

  • Last visited

Everything posted by sevsev

  1. Merci pour votre réponse, comment faire ? Voici un lien provisoire https://prestatest.app.sevisuel.com/ J'ai trouvé ce module, peut-il résoudre le soucis ? https://mypresta.eu/modules/front-office-features/material-icons-font-awesome.html
  2. Le développeur du module m'indique de charger la police d'icône que prestashop charge dans le thème de base (material-icons). Comment faire ? Ce qui est étrange c'est que nous utilisons déjà cette police d'icones ailleurs sur la boutique et nous avons aucun soucis de chargement.
  3. Bonjour, J'ai acheté et installé un module d'"ajout à mes favoris". Lorsque la boutique se charge nous avons à la place de l'icone coeur qui doit être en haut à droite des vignettes, le texte "Favorite Border", voir capture en pj. Comment y remédier ? ce n'est pas esthétique du tout ! Merci
  4. Si je le retire de la position "displayProductListReviews", il est également retiré sur toutes les vignettes dans la liste des produits
  5. Bonjour, J'ai installé un module "d'ajout aux favoris" qui affiche un coeur sur mes vignettes produits dans la liste des produits, mais je ne souhaite pas l'afficher au niveau de ma page produit dans le module : "autres produits dans la même catégorie". Comment faire ? Merci pour votre aide
  6. non ! sauf s'il y a un module natif d'activé...
  7. Bonjour, Comment expliquez vous que dans mon BO j'ai 5 paniers abandonnés pour un même client avec le même montant, le même transporteur avec quelques secondes d'intervalle et un ID différent Je vous joins une capture Merci !
  8. J'aimerai que mon module "Guide des tailles" s'affiche entre la liste déroulante du choix de la taille et le "En stock".
  9. Je pense savoir dans quel fichier intégrer le code d'appel de mon hook mais je ne sais pas où trouver le code d'appel du hook en question 😕 J'ai regardé dans les fichiers du module...
  10. Bonjour et merci pour votre réponse. Je vais étudier ça ! Bonne journée
  11. une idée svp ? Dans quel fichier je dois intervenir sachant que ces 2 liens "Voir guide des tailles" et "Ajouter à mes favoris" sont 2 modules Merci
  12. Bonjour, Je souhaite que mon bouton "Voir guide des tailles" s'affiche entre la case déroulante de la taille et le "En stock", tout en étant aligné à droite. Je souhaite que mon bouton "Ajouter à mes favoris" s'affiche entre "En stock" et mon bouton "Ajouter au panier", tout en étant aligné à droite. Merci à vous
  13. Bonsoir, J'ai des interrogations si la boutique est amenée à "planter" ou si un bug est compliqué à résoudre. Je présume qu'il faut restaurer une sauvegarde ? (mon hébergeur fait des sauvegardes chaque jour) A quoi faut -il faire attention lors de la restauration ? Tout se fait par ftp (mais c'est hyper long vu le nombre de fichiers ^^) ? Faut il prévoir une page index.html pour afficher quelque chose le temps de la restauration ? Il y a-t-il une technique recommandée ? Merci d'avance pour vos précieux conseils et d'éventuelles marches à suivre
  14. merci Je récupère l'objet de mon produit dans le php du module de "don" ?😕
  15. <?php /* * 2007-2016 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License (AFL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/afl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to [email protected] so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <[email protected]> * @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ if (!defined('_PS_VERSION_')) { exit; } use PrestaShop\PrestaShop\Core\Module\WidgetInterface; use PrestaShop\PrestaShop\Adapter\Category\CategoryProductSearchProvider; use PrestaShop\PrestaShop\Adapter\Image\ImageRetriever; use PrestaShop\PrestaShop\Adapter\Product\PriceFormatter; use PrestaShop\PrestaShop\Core\Product\ProductListingPresenter; use PrestaShop\PrestaShop\Adapter\Product\ProductColorsRetriever; use PrestaShop\PrestaShop\Core\Product\Search\ProductSearchContext; use PrestaShop\PrestaShop\Core\Product\Search\ProductSearchQuery; use PrestaShop\PrestaShop\Core\Product\Search\SortOrder; class Ps_Categoryproducts extends Module implements WidgetInterface { protected $html; protected $templateFile; public function __construct() { $this->name = 'ps_categoryproducts'; $this->author = 'PrestaShop'; $this->version = '1.0.4'; $this->bootstrap = true; parent::__construct(); $this->displayName = $this->trans('Products in the same category', array(), 'Modules.Categoryproducts.Admin'); $this->description = $this->trans('Adds a block on the product page that displays products from the same category.', array(), 'Modules.Categoryproducts.Admin'); $this->ps_versions_compliancy = array('min' => '1.7.0.0', 'max' => _PS_VERSION_); $this->templateFile = 'module:ps_categoryproducts/views/templates/hook/ps_categoryproducts.tpl'; } public function install() { return (parent::install() && Configuration::updateValue('CATEGORYPRODUCTS_DISPLAY_PRICE', 1) && Configuration::updateValue('CATEGORYPRODUCTS_DISPLAY_PRODUCTS', 16) && $this->registerHook('displayFooterProduct') && $this->registerHook('actionProductAdd') && $this->registerHook('actionProductUpdate') && $this->registerHook('actionProductDelete') ); } public function uninstall() { if (!parent::uninstall() || !Configuration::deleteByName('CATEGORYPRODUCTS_DISPLAY_PRICE') || !Configuration::deleteByName('CATEGORYPRODUCTS_DISPLAY_PRODUCTS')) { return false; } return true; } public function getContent() { $this->html = ''; if (Tools::isSubmit('submitCross')) { $isValidDisplayPrice = Tools::getValue('CATEGORYPRODUCTS_DISPLAY_PRICE') === '0' || Tools::getValue('CATEGORYPRODUCTS_DISPLAY_PRICE') === '1'; if (false === $isValidDisplayPrice) { $this->html .= $this->displayError($this->trans('Invalid value for display price.', array(), 'Modules.Categoryproducts.Admin')); } if ($isValidDisplayPrice) { Configuration::updateValue('CATEGORYPRODUCTS_DISPLAY_PRICE', Tools::getValue('CATEGORYPRODUCTS_DISPLAY_PRICE')); Configuration::updateValue('CATEGORYPRODUCTS_DISPLAY_PRODUCTS', (int) Tools::getValue('CATEGORYPRODUCTS_DISPLAY_PRODUCTS')); $this->_clearCache($this->templateFile); $this->html .= $this->displayConfirmation($this->trans('The settings have been updated.', array(), 'Admin.Notifications.Success')); } } $this->html .= $this->renderForm(); return $this->html; } public function hookAddProduct($params) { return $this->clearCache($params); } public function hookUpdateProduct($params) { return $this->clearCache($params); } public function hookDeleteProduct($params) { return $this->clearCache($params); } private function clearCache($params) { $params = $this->getInformationFromConfiguration($params); if ($params) { $this->_clearCache($this->templateFile, $params['cache_id']); } else { $this->_clearCache($this->templateFile); } return; } public function renderForm() { $fields_form = array( 'form' => array( 'legend' => array( 'title' => $this->trans('Settings', array(), 'Admin.Global'), 'icon' => 'icon-cogs', ), 'input' => array( array( 'type' => 'switch', 'label' => $this->trans('Display products\' prices', array(), 'Modules.Categoryproducts.Admin'), 'desc' => $this->trans('Show the prices of the products displayed in the block.', array(), 'Modules.Categoryproducts.Admin'), 'name' => 'CATEGORYPRODUCTS_DISPLAY_PRICE', 'values' => array( array( 'id' => 'active_on', 'value' => 1, 'label' => $this->trans('Enabled', array(), 'Admin.Global'), ), array( 'id' => 'active_off', 'value' => 0, 'label' => $this->trans('Disabled', array(), 'Admin.Global'), ) ), ), array( 'type' => 'text', 'label' => $this->trans('Number of product to display', array(), 'Modules.Categoryproducts.Admin'), 'desc' => $this->trans('Show the prices of the products displayed in the block.', array(), 'Modules.Categoryproducts.Admin'), 'name' => 'CATEGORYPRODUCTS_DISPLAY_PRODUCTS', 'class' => 'fixed-width-xs', ), ), 'submit' => array( 'title' => $this->trans('Save', array(), 'Admin.Actions'), ), ), ); $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); $helper = new HelperForm(); $helper->show_toolbar = false; $helper->table = $this->table; $helper->default_form_language = $lang->id; $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get( 'PS_BO_ALLOW_EMPLOYEE_FORM_LANG' ) : 0; $helper->identifier = $this->identifier; $helper->submit_action = 'submitCross'; $helper->currentIndex = $this->context->link->getAdminLink( 'AdminModules', false ).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name; $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->tpl_vars = array( 'fields_value' => $this->getConfigFieldsValues(), 'languages' => $this->context->controller->getLanguages(), 'id_language' => $this->context->language->id ); return $helper->generateForm(array($fields_form)); } public function getConfigFieldsValues() { return array( 'CATEGORYPRODUCTS_DISPLAY_PRICE' => Configuration::get('CATEGORYPRODUCTS_DISPLAY_PRICE'), 'CATEGORYPRODUCTS_DISPLAY_PRODUCTS' => Configuration::get('CATEGORYPRODUCTS_DISPLAY_PRODUCTS'), ); } public function getWidgetVariables($hookName = null, array $configuration = array()) { $params = $this->getInformationFromConfiguration($configuration); if ($params) { $products = $this->getCategoryProducts($params['id_product'], $params['id_category']); if (!empty($products)) { return array( 'products' => $products, ); } } return false; } public function renderWidget($hookName = null, array $configuration = array()) { $params = $this->getInformationFromConfiguration($configuration); if ($params) { if ((int)Configuration::get('CATEGORYPRODUCTS_DISPLAY_PRODUCTS') > 0) { // Need variables only if this template isn't cached if (!$this->isCached($this->templateFile, $params['cache_id'])) { if (!empty($params['id_category'])) { $category = new Category($params['id_category']); } if (empty($category) || !Validate::isLoadedObject($category) || !$category->active) { return false; } $variables = $this->getWidgetVariables($hookName, $configuration); if (empty($variables)) { return false; } $this->smarty->assign($variables); } return $this->fetch( $this->templateFile, $params['cache_id'] ); } } return false; } private function getCategoryProducts($idProduct, $idCategory) { $category = new Category($idCategory); $showPrice = (bool) Configuration::get('CATEGORYPRODUCTS_DISPLAY_PRICE'); $searchProvider = new CategoryProductSearchProvider( $this->getTranslator(), $category ); $context = new ProductSearchContext($this->context); $query = new ProductSearchQuery(); $nProducts = (int) Configuration::get('CATEGORYPRODUCTS_DISPLAY_PRODUCTS') + 1; // +1 If current product is found $query ->setResultsPerPage($nProducts) ->setPage(1) ; $query->setSortOrder(SortOrder::random()); $result = $searchProvider->runQuery( $context, $query ); $assembler = new ProductAssembler($this->context); $presenterFactory = new ProductPresenterFactory($this->context); $presentationSettings = $presenterFactory->getPresentationSettings(); $presenter = new ProductListingPresenter( new ImageRetriever( $this->context->link ), $this->context->link, new PriceFormatter(), new ProductColorsRetriever(), $this->context->getTranslator() ); $productsForTemplate = array(); $presentationSettings->showPrices = $showPrice; $products = $result->getProducts(); foreach ($products as $rawProduct) { // Not duplicate current product if ($rawProduct['id_product'] !== $idProduct && count($productsForTemplate) < (int) Configuration::get('CATEGORYPRODUCTS_DISPLAY_PRODUCTS')) { $productsForTemplate[] = $presenter->present( $presentationSettings, $assembler->assembleProduct($rawProduct), $this->context->language ); } } return $productsForTemplate; } private function getInformationFromConfiguration($configuration) { if (empty($configuration['product'])) { return false; } $product = $configuration['product']; if ($product instanceof Product) { $product = (array) $product; $product['id_product'] = $product['id']; } $id_product = $product['id_product']; $id_category = (isset($configuration['category']->id) ? (int) $configuration['category']->id : (int) $product['id_category_default']); if (!empty($id_product) && !empty($id_category)) { $cache_id = 'ps_categoryproducts|'.$id_product.'|'.$id_category; return array( 'id_product' => $id_product, 'id_category' => $id_category, 'cache_id' => $this->getCacheId($cache_id), ); } return false; } } merci
  16. j'ai mis public function hookProductFooter($params) { $id_product = (int)$params['product']->id; if($id_product == 558) return false; } du coup il n'apparait sur aucun produit ?!
  17. merci mais dans mon module j'ai le répertoire views/templates/hook et dedans ps_categoryproducts.tpl et index.php Je n'ai pas de /ps_categoryproducts.php Dois je créer le fichier ?
  18. a moins que ce soit dans le index.php ? <?php header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); header('Location: ../'); exit;
  19. Désolée mais je ne vois pas où insérer le code dans le ps_categoryproducts.tpl <section class="category-products products-carousel mb-3"> <p class="products-carousel-title h1 mb-4"> {if $products|count == 1} {l s='%s other product in the same category:' d='Shop.CreathemeModules' sprintf=[$products|count]} {else} {l s='%s other products in the same category:' d='Shop.CreathemeModules' sprintf=[$products|count]} {/if} </p> <div class="products-carousel-content position-relative px-4"> <div class="owl-carousel d-flex justify-content-around"> {foreach from=$products item=product} {include file='catalog/_partials/miniatures/carousel-product.tpl' product=$product} {/foreach} </div> </div> </section>
×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More