Jump to content

[module gratuit] Ajouter des vidéos à vos fiches produits


Recommended Posts

Bonjour,
Je vous présente donc Op'art product vidéo, un module gratuit qui va vous permettre d'agrémenter vos fiches produits avec des vidéos.
 
Module compatible avec Prestashop 1.5 et 1.6
 
Avec ce module, vous allez pouvoir ajouter une ou plusieurs vidéos puis les lier à un ou plusieurs produits (pas besoin de d'ajouter la vidéo à chaque produit).
Pour ajouter une vidéo c'est très simple il suffit de récupérer l'url de la vidéo sur youtube, dailymotion ou wimeo puis de la coller dans le formulaire d'ajout de vidéo.
 
Regarder la vidéo de démonstration
 
Bien sûr vos questions et commentaires sont les bienvenus !
 
Changelog
*** 08/11/13 ***
- Correction d'un bug: l'onglet vidéo n'est plus automatiquement sélectionné.
 
*** 28/02/13 ***
- Possibilité d'ajouter un titre aux vidéos.
- Possibilité d'ajouter une description aux vidéos.
- Possibilité d'ajouter une classe css spécifique à chaque vidéo.
- Possibilité de créer des liens d'accès directs aux vidéos.
 
*** 06/05/14 ***
- Le module est désormais compatible avec Prestashop 1.6.
- Correction d'un problème au niveau de la traduction du module.

 
*** 02/06/15 ***
- Correction du titre de l'onglet dans la fiche produit.

Edited by coeos.pro
pas de lien vers votre plateforme de distribution. (see edit history)
  • Like 3
Link to comment
Share on other sites

  • 2 months later...

Bonjour,

Je viens de télécharger et installer ce module, qui fonctionne très bien. J'ai tout de même un petit soucis, pas dramatique en soit. Lorsque je vais sur la fiche du groupe j'arrive tout de suite sur l'onglet vidéo, est-il possible d'arriver plutôt sur la description ?

De même j'ai certaine vidéo que je n'ai qu'en local, est-il possible de les publier manuellement ? Encore une fois ce n'est pas dramatique.

Que mes requêtes soit ou non possible, je tiens à vous remercier pour ces modules (j'ai également installé le player audio).

Link to comment
Share on other sites

En effet, 

je viens d'apporter une correction au module, pouvez-vous m'envoyer votre adresse email par MP que je vous renvoi le module corrigé ?

 

En ce qui concerne l'affichage de vidéos hébergées en local ce n'est pas possible pour l'instant et je ne prévois pas de le faire (du moins avec cette version gratuite du module). Il y a tellement de raison valable d'héberger ces vidéos sur des plateforme comme youtube, wimeo, etc.. (ne serait-ce que pour la bande passante) que cette fonctionnalité n'intéresserai que peu de monde.

Link to comment
Share on other sites

  • 3 months later...

J'ai fait une mise à jour du module voici les nouveautés:

*** 28/02/43 ***
- Possibilité d'ajouter un titre aux vidéos.
- Possibilité d'ajouter une description aux vidéos.
- Possibilité d'ajouter une classe css spécifique à chaque vidéo.
- Possibilité de créer des liens d'accès directs aux vidéos.
Link to comment
Share on other sites

Bonjour Papich,

pas besoin d'un module pour ajouter des vidéos directement dans le descriptif.

Il suffit de récupérer le code de partage fourni par le service de vidéo (comme youtube) et de coller ce code (en mode html) dans votre descriptif.

 

Il faut sans doute autoriser les iframe dans les descriptions pour que cela marche.

Link to comment
Share on other sites

oui je sais mais quel intéret de votre module alors?

 

quand j'intégre en iframe j'ai l'erreur suivante

Le champ description (Français (French)) est invalide.

 

et quand je change avec l'ancienne intégration j'ai le même message je suis sous 1.5.6.1

Link to comment
Share on other sites

Mon module permet d'ajouter les vidéos dans un onglet supplémentaire ce qui me semble plus "propre" que de les ajouter directement dans la description (c'est une question de goût).

Il permet également de gagner du temps dans la mesure où lorsqu'une vidéo a été enregistrée dans le module elle peut être liée à plusieurs produits très simplement, ça limite le nombre de manipulation.

 

Pour votre problème d'ajout d'iframe vous pouvez regarder cet article:

http://blog.manit4c.com/2013/10/01/impossible-dajouter-du-javascript-dans-vos-descriptions-de-produit/

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Bonsoir,

J'ai passé ma boutique en version 1.6 et heureusement, le slideshow fonctionne toujours, si ce n'est que je ne peux ajouter de nouvelles images, c'est embêtant :D j'ai une page blanche et rien n'y fait.

Avez-vous avancé dans la nouvelle version ? merci en tout cas :)

Link to comment
Share on other sites

  • 4 weeks later...

Salut et bravo pour ce module très sympa.

 

Juste une confirmation : il semblerait que pour Youtube les URL permettant de démarre directement a un endroit dans la vidéo ne fonctionne pas , type : 

 

https://www.youtube.com/watch?v=BJ_shq6hXj8#t=178

 

Du moins c'est ce que j'observe sur ma boutique : 

 

http://shop.ekimia.fr/fr/home/11-clevo-w550su-0638142715430.html

Link to comment
Share on other sites

Une suggestion d'amélioration : Support de n'importe lien direct vers une vidéo

 

je vois dans le template que tu detecte si la vidéo est sur l'un des 3 sites, en ajoutant un "else" et en calant à la place de l'iframe un simple élément <vidéo> , cela permettrait déjà d'ajouter une vidéo mp4 ou webm qui va marcher sur la plupart des navigateurs ( HTML5) 

 

dans un 2e temps on peux imaginer inclure un bout de js comme videojs , mais il y a déjà plus de travail.

Link to comment
Share on other sites

  • 4 months later...
  • 3 months later...

Bonjour,

 

Très bon module qui fonctionne très bien dans le 1.6.0.11

Mais (et oui y a un mais :) ) quand j’installe le module sur un prestashop test et que je veux afficher tout les catégories (savoir plus, caractéristiques, et autre) sur la même ligne les vidéo reste en dessous impossible de trouver comment faire pour que cela marche 

PS: théme de basse pas tester sur un théme autre

 

Merci de vos raiponces

Link to comment
Share on other sites

Bonjour, je peux pas mettre de lien vers le souci vu que je test en local avant de mettre sur site en production.

Le problème viens du fait que le module vidéo est chargé par le hook donc il faut modifier le fichier production.tpl pour charger les informations du module comme on veux sur la page produit.

J'ai déjà isolé le problème la je cherche à récupéré la variable qui dit au .tpl qu'il doit afficher ou pas le bouton vidéo vu que je n'ai pas forcément une vidéo sur chaque produit.

Donc si tu avait la valeur du isset($ ressult) que je dois vérifié me serai bien pratique.

Ton module fonctionne bien c'est juste une configuration du thème qu'il faut faire pour avoir à la sortie un affichage propre

Merci pour ta réponse

Edited by bpascal81 (see edit history)
Link to comment
Share on other sites

Je viens de retester sur une 1.6.0.11 et la vidéo s'affiche bien dans l'onglet vidéo et s'il n'y a pas de vidéo pour le produit l'onglet n'apparaît pas.

 

Donc je ne suis pas sûr de comprendre ce que tu souhaite faire:

 

 

Mais (et oui y a un mais  :) ) quand j’installe le module sur un prestashop test et que je veux afficher tout les catégories (savoir plus, caractéristiques, et autre) sur la même ligne les vidéo reste en dessous impossible de trouver comment faire pour que cela marche 

 

Tu parles de catégories, tu veux dire tous les produits ? (les vidéos ne sont pas liées au catégories).

 

En fait tu veux avoir une page avec tous les produits d'une même catégories et que tous ces produits affichent l'intégralité des informations de leur fiche (donc coup les vidéos aussi).

 

Si c'est bien ça en effet tu va avoir un problème car le module affiche la vidéo sur un hook donc à un seul emplacement.

 

C'est assez sépcifique ce que tu souhaite faire (normal que mon module ne puisse pas le gérer de base). Mais c'est possible je penses si tu modifie ce qu'il faut où il faut.

 

Comme ça je dirait qu'il faut utiliser le hook header qui va tester si on est sur une page catégorie.

Si c'est le cas on charge toutes les vidéos et on les enregistre dans un tableau avec comme index l'id du produit.

Et lorsque tu affiche tout tes produits tu fait isset(array_video[id_product) { j'affiche la video }

 

C'est la théorie reste plus qu'à coder :)

 

Ps: si tu réussi à faire ce que tu veux hésite pas à venir poster le code ici ça servira peut être à d'autres.

Edited by manit4c (Olivier C.) (see edit history)
Link to comment
Share on other sites

En fin de compte je veux que quand on affiche un produit au lieu que toutes les description s'affiche sous forme de liste on ai un genre de menu horizontal (jusqu'a là rien de compliquer) mais je veux aussi que les vidéo s'affiche sur le même "menu" pas comme actuellement sur mon site exemple d'affichage

Et après je veux pas que la div où il y a l'affichage du contenue du menu sois masquer au chargement de la page. Pour avoir un chargement plus rapide

Donc j'ai déjà sur mon site local modifier l'affichage des div mais je ne trouve pas la variable qui va vérifier si il y a une vidéo pour afficher ou pas le bouton du même nom.

J'ai modifier le fichier product.tpl et product.php pour interrogé la base de donnée où son stocker les vidéos

Merci d'avance pour ta raiponce 

Pascal

Link to comment
Share on other sites

ça dépend de ce que tu as codé mais le hook producTabContent envoi les objet vidéo à smarty si et seulement si une vidéo existe pour ce produit.

Et il les stocke dans la variable $result.

 

Donc si tu fait un  isset($result) tu saura si tu as une vidéo ou pas.

 

Mais j'ai l'impression que tu souhaite reproduire l'affichage des onglets comme sur un theme version 1.5 non ?

T'as regardé le template opartproductvideo_15.tpl ?

Link to comment
Share on other sites

 

 

Bonjour et merci pour votre module, j'ai un seul soucis, la vidéo ne s'ajoute pas dans l'onglets mais en-dessous (ce qui ne fait pas très propre). Avez-vous une astuce pour corriger sa?

 

Je penses que c'est un problème dû à ton thème.

Si tu regarde "accessoires" et "produits dans la même catégories" ont le même comportement. Qui est d'ailleurs le comportement de base de la 1.6

 

A mon avis ton thème à été créé de manière à faire en sorte que les commentaires s'affiche dans un onglets mais pas pour les autres modules utilisant ce type de hook.

 

Il faudrait étudier le template du module commentaire et t'en inspirer pour reproduire la même chose avec mon module.

Link to comment
Share on other sites

en rentrant isset($result) && $result->title je n'ai rien qui ressort rien pas d'erreur ni de bouton

et pour le fichier opartproductvideo_15.tpl j'ai presque la même chose que dans le opartproductvideo.tpl à une ligne près

 

J'ai tester plusieur solution et rien ne ce fait voilà une parti des modif que j'ai fais

		<!-- description and features -->
{if (isset($product) && $product->description) || 
	(isset($features) && $features) || 
	(isset($accessories) && $accessories) || 
	(empty(array(definitionVideo))) || 
	(isset($result) && $result->a.id_product) || 
	(isset($attachments) && $attachments) || 
	(isset($product) && $product->customizable) || 
	(isset($result) && $result->publicTitle)}
<div id="more_info_block" class="clear">
    <ul id="more_info_tabs" class="idTabs idTabsShort clearfix">
        {if $product->description}<li><a id="more_info_tab_more_info" href="#idTab1">{l s='More info'}</a></li>{/if}
        {if $features}<li><a id="more_info_tab_data_sheet" href="#idTab2">{l s='Data sheet'}</a></li>{/if}
        {if $attachments}<li><a id="more_info_tab_attachments" href="#idTab9">{l s='Download'}</a></li>{/if}
        {if isset($accessories) AND $accessories}<li><a href="#idTab4">{l s='Accessories'}</a></li>{/if}
        {if isset($product) && $product->customizable}<li><a href="#idTab10">{l s='Product customization'}</a></li>{/if}
		{if isset($result) && $result->a.id_product}<li><a id="more_info_tab_more_info" href="#idTabOpartProducVideo">{l s='VIDEO'}</a></li>{/if}
        {$HOOK_PRODUCT_TAB}
    </ul>

Sans compter que j'ai mi le ficher video.php dans le fichier product.php pour voir mais ça change rien

 

Merci de vos raiponces

Edited by bpascal81 (see edit history)
Link to comment
Share on other sites

@bpascal81 le problème je penses c'est que tu demande a ton template (à priori product.tpl) de tester une variable qu'il ne connais pas car elle n'ai pas été envoyé par son controller.

 

Mon module (comme tout module) utilise un hook et il faut donc bien le réutiliser et le place où tu le veux dans ton template product.tpl

 

 

@antikiste non désolé ce module ne fonctionne que pour les produits.

Edited by manit4c (Olivier C.) (see edit history)
Link to comment
Share on other sites

Bonjour

 

Hier j'ai un peux avancer dans le bon sans, j'ai déjà placer le module où je le voulais dans le back office, ce qui m'a mi le bouton où je le veux, mais en gardent dans le hook maintenant me rest plus cas afficher le contenue du hook ce qu'il ne me fait pas mais je suis sur le bon chemin :)

Tes informations mon bien aider quand j'ai trouver la solution je ferai un retour de toute mes manipulations pour d'autres ça peux servire

La je vais regarder pourquoi je n'ai pas d'affichage du contenue 

Merci pour tes raiponces

Pascal

Link to comment
Share on other sites

Je vais vous expliquer ce que j'ai fais pour avoir le résultat voulu

au début il faut greffer le module vidéo à displayProductTab pour qu'il s'affiche dans le menu voulu

après on modifie le fichier product.tpl comme sur ce tuto (oui j'ai pas tout fais tout seul)

après on va continuer dans les modif du même fichier, on cherche <!-- description and features -->

on remplace par ce code tout ce qui est au début du code 

		<!-- description and features -->
	{if (isset($product) && $product->description) || (isset($features) && $features) || (isset($accessories) && $accessories) || (isset($result) && $result->title) || (isset($HOOK_PRODUCT_TAB) && $HOOK_PRODUCT_TAB) || (isset($attachments) && $attachments) || isset($product) && $product->customizable || isset($result) && $result->publicTitle}
		<div id="more_info_block" class="clear">
			<ul id="more_info_tabs" class="idTabs idTabsShort clearfix">
				{if $product->description}<li><a id="more_info_tab_more_info" href="#idTab1">{l s='More info'}</a></li>{/if}
				{if $features}<li><a id="more_info_tab_data_sheet" href="#idTab2">{l s='Data sheet'}</a></li>{/if}
				{if $attachments}<li><a id="more_info_tab_attachments" href="#idTab9">{l s='Download'}</a></li>{/if}
				{if isset($accessories) AND $accessories}<li><a href="#idTab4">{l s='Accessories'}</a></li>{/if}
				{if isset($product) && $product->customizable}<li><a href="#idTab10">{l s='Product customization'}</a></li>{/if}
				{if $HOOK_PRODUCT_TAB}<li><a href="#idTab10">{l s='video'}</a></li>{/if}
			</ul>
			<div id="more_info_sheets" class="sheets align_justify">
			<!-- Customizable video -->
			{if isset($HOOK_PRODUCT_TAB)}
				<ul id="idTab10" class="bullet">
					{$HOOK_PRODUCT_TAB_CONTENT}
				</ul>
			{/if}

si vous regarder bien on ajoute un bouton hook_product_tab et on regarde si on a une variable pour afficher ou non

 

En suite on va modifier le fichier product.php pour y ajouter ce code avant le dernier } 

	public $widthVideo;
	public $heightVideo;
	public $titleVideo;
	public $link;
	public $publicTitle;
	public $desc;
	public $className;	
	public $anchorName;
	
	public static $definitionVideo = array(
		'table' => 'opartproductvideo',
		'primary' => 'id_opartproductvideo',
		'multilang' => true,
		'fields' => array(				
			'width' => 	array('type' => self::TYPE_INT, 'validate'=>'isInt','required' => true),
			'height' => array('type' => self::TYPE_INT, 'validate'=>'isInt','required' => true),			
			'titleVideo' => 	array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true, 'size' => 256),
			'className' => 	array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => false, 'size' => 256),
			'anchorName' => 	array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => false, 'size' => 256),
			// Lang fields
			'link' => 	array('type' => self::TYPE_STRING, 'lang' => true, 'validate'=> 'isUrl', 'required' => true ),
			'publicTitle' => 	array('type' => self::TYPE_STRING, 'lang' => true, 'validate'=> 'isGenericName', 'required' => false ),
			'desc' => 	array('type' => self::TYPE_HTML, 'lang' => true, 'validate'=> 'isString', 'required' => false )
		),
	);
	
	public function getProductsVideo($associated = true, Context $context = null)
	{
		if (!$context)
			$context = Context::getContext();
		$id_lang = $this->id_lang ? $this->id_lang : $context->language->id;
	
		if (!$this->id && $associated)
			return array();
	
		$in = $associated ? 'IN' : 'NOT IN';
		$sql='
			SELECT pl.name,pl.id_product 
			FROM `'._DB_PREFIX_.'product` p 
			LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON p.id_product = pl.id_product'.Shop::addSqlRestrictionOnLang('pl').' 
			'.Shop::addSqlAssociation('product', 'p').'
			WHERE pl.id_lang = '.(int)$id_lang.'
			AND product_shop.active = 1
			'.($this->id ? ('AND p.id_product '.$in.' (SELECT op.id_product FROM `'._DB_PREFIX_.'opartproductvideo_product` op WHERE op.id_opartproductvideo = '.(int)$this->id.')') : '').'
			ORDER BY pl.name
		';
		return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
	}

	public function setProducts($array)
	{
		$result = Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'opartproductvideo_product WHERE id_opartproductvideo = '.(int)$this->id);
		if (is_array($array))
		{
			$array = array_map('intval', $array);
			$result &= ObjectModel::updateMultishopTable('Product', array('indexed' => 0), 'a.id_product IN ('.implode(',', $array).')');
			$ids = array();
			foreach ($array as $id_product)
				$ids[] = '('.(int)$id_product.','.(int)$this->id.')';
	
			if ($result)
			{
				$result &= Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'opartproductvideo_product (id_product, id_opartproductvideo) VALUES '.implode(',', $ids));
				if (Configuration::get('PS_SEARCH_INDEXATION'))
					$result &= Search::indexation(false);
			}
		}
		return $result;
	}
	
	public function getVideoByProduct($idProd,$id_lang) {
		$sql='
			SELECT v.title,v.width,v.height,v.className,v.anchorName,vl.link,vl.desc,vl.publicTitle
			FROM `'._DB_PREFIX_.'opartproductvideo_product` vp, `'._DB_PREFIX_.'opartproductvideo` v
			LEFT JOIN `'._DB_PREFIX_.'opartproductvideo_lang` vl ON v.id_opartproductvideo = vl.id_opartproductvideo
			WHERE vl.id_lang = '.(int)$id_lang.'
			AND vp.id_product='.$idProd.' AND vp.id_opartproductvideo = v.id_opartproductvideo
			ORDER BY v.id_opartproductvideo
		';
		return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
	}

	public function setProductsVideo($array)
	{
		$result = Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'opartproductvideo_product WHERE id_opartproductvideo = '.(int)$this->id);
		if (is_array($array))
		{
			$array = array_map('intval', $array);
			$result &= ObjectModel::updateMultishopTable('Product', array('indexed' => 0), 'a.id_product IN ('.implode(',', $array).')');
			$ids = array();
			foreach ($array as $id_product)
				$ids[] = '('.(int)$id_product.','.(int)$this->id.')';
	
			if ($result)
			{
				$result &= Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'opartproductvideo_product (id_product, id_opartproductvideo) VALUES '.implode(',', $ids));
				if (Configuration::get('PS_SEARCH_INDEXATION'))
					$result &= Search::indexation(false);
			}
		}
		return $result;
	}
	
	public function getVideoInfo($url=false){
	    $url=($url!=false)?$url:$this->link;
		if(preg_match("/youtube/i",$url))            
			return "youtube";
	    else if(preg_match("/dailymotion/i",$url))   
	    	return "dailymotion";
	    else if(preg_match("/vimeo/i",$url))         
	    	return "vimeo";
	}
	
	public function getYoutubeId($url=false) {
		$url=($url!=false)?$url:$this->link;
		return substr($url, strpos($url,"v=")+2,strlen($url)); 
	}
	
	public function getDailymotionId($url=false) {
		$url=($url!=false)?$url:$this->link;
		return substr($url, strpos($url,"video/")+6,strpos($url,"_"));
	}
	
	public function getVimeoId($url=false) {
		$url=($url!=false)?$url:$this->link;
		return substr($url, strpos($url,"vimeo.com/")+10,strlen($url));
	}

reste plus cas modifier le fichier opartproductvideo.tpl pour masquer le titre de la vidéo si comme moi vous ne le voulait pas

on supprime le h2 et h3 

 

Voilà le tour est jouer 

Si vous voulez d'autre informations je reste a votre service

 

Un grand merci a manit4c pour toutes les informations 

Edited by bpascal81 (see edit history)
Link to comment
Share on other sites

Merci d'avoir partager ton code je ne l'ai pas testé mais puisque ça marche sur ta boutique c'est qu'il est fonctionnel.

 

Petite remarque:

 

 

En suite on va modifier le fichier product.php

 

Je te conseille de faire un override plutôt que de modifier directement la classe product.php tu trouvera des infos sur les overrides dans la documentation officielle de presta.

Link to comment
Share on other sites

Bonjour,

Conformément aux règles du forum :
 

Tout élément doit être fourni directement dans le forum 
...et non pas avec un lien vers un site externe. Les modules que vous proposez dans ce forum sont gratuits. Vous pouvez donc les mettre à disposition en attachant le ZIP à votre topic. Les topics avec un lien externes seront modérés et retirés.


J'ai donc retiré le lien dans le post.

Merci pour la contribution ! :)

Link to comment
Share on other sites

  • 1 month later...

Bonjour,

 

Merci pour ce module très pratique qui fonctionne bien en prestashop 1.6.0.9.

J'ai besoin d'un petit coup de main pour l'affichage des vidéos. J'aimerai différencier l'affichage des vidéos sur les fiches produits avec, s'il y a un nombre pair de vidéo, les afficher côté à côté.

Cependant, je ne trouve pas comment les compter.

 

J'ai testé de compter $resultarray et $result mais cela ne semble pas être ça.

 

Merci d'avance pour toute aide

Link to comment
Share on other sites

Bonjour, 

 

Merci pour la réponse. J'ai déjà utilisé la variable "float" en css pour avoir un affichage mais cela ne fonctionne pas bien sur toutes les configurations d'où ma question 

 

Et en plus je souhaite modifier la taille d'affichage des vidéos s'il y en a 1 (sur une seule ligne) ou 2 sur la même ligne.

Edited by Galadrum (see edit history)
Link to comment
Share on other sites

Dans ce cas normalent dans ton TPL c'est bien $result qu'il faut utiliser.

 

Tu peux faire un module 2 sur le result pour savoir si le nombre de résultat est paire.

Si ce n'est pas le cas à la dernière ligne tu aura une seule vidéo.

{foreach from=$result item=video name=foo}
{if $smarty.foreach.foo.last && $result%2 == 0}
affichage sur une colonne
{else}
affichage sur deux colonne
{/if}

J'ai pas testé ce code mais c'est ce que je ferais :)

 

Ps: si tu y arrive n'hésite pas à venir le partager ici ça servira surement à d'autres !

Edited by manit4c (Olivier C.) (see edit history)
Link to comment
Share on other sites

J'avais déjà essayé de faire un truc du style mais j'avais mis la condition avant le foreach pour pouvoir voir le nombre de vidéos par page produit.
Avec ta solution, vu que la condition est dans le foreach, l'affichage global ne sera pas impacté non ?

Voici le code que j'ai mis dans le tpl, avec agrandissement des vidéos quand il n'y en a qu'une. Par contre, même sur une page avec deux vidéos s'affiche "vidéo impair" ce qui veut dire qu'on ne rentre pas dans la bonne boucle.
 

<h2 id="#idTabOpartFaq" class="idTabHrefShort page-product-heading">{l s='VIDEO' mod='opartfaq'}</h2>
<div id="idTabOpartProductVideo" class="rte" width="100%">
{foreach from=$result item=video name=foo}
{if $smarty.foreach.foo.last && $result%2 == 0}
    <div class="block opartProductVideo_pair {$video->className}">
        <h2>{$video->publicTitle} Video Pair</h2>
        <div class="opartProductVideoDesc">{$video->desc}</div>
    </div>
{else}
    <div class="block opartProductVideo {$video->className}">
        <h2>{$video->publicTitle} Video impair</h2>
        <div class="opartProductVideoDesc">{$video->desc}</div>
    </div>
{/if}
Link to comment
Share on other sites

Non le code pour pair et impair était bon mais en fait le problème est qu'il y a ce test pour chaque vidéo. 

Donc quand il y a deux vidéos, il y aura toujours une vidéo dans une boucle et une dans l'autre (alors que moi en fonction de la boucle je modifie la taille de la vidéo), voir screenshot en pièce jointe

 

C'est pour cela que je cherchais un test à faire une fois (et pas pour chaque vidéo) et qui donnait le nombre de vidéos présents, chose que je n'arrive pas à faire.

 

 

post-370465-0-79743800-1428993712_thumb.jpg

Link to comment
Share on other sites

J'avoue que je test pas donc c'est pas évident mais pour moi le test ne doit se faire que sur la dernière vidéo.

En gros si on est sur la dernière video et que le nombre de vidéo est impair alors on affiche la dernière vidéo sur une seule colonne sinon (et pour tout les autres passages) on affiche les vidéo sur deux colonnes.

 

Pour moi ça ça devrait fonctionner:

{if $smarty.foreach.foo.last && $result%2 != 0}
    <div class="block opartProductVideo_pair {$video->className}">
        <h2>{$video->publicTitle} Video IMPAIR</h2>
        <div class="opartProductVideoDesc">{$video->desc}</div>
    </div>
{else}
    <div class="block opartProductVideo {$video->className}">
        <h2>{$video->publicTitle} Video pair</h2>
        <div class="opartProductVideoDesc">{$video->desc}</div>
    </div>
{/if}
Link to comment
Share on other sites

Le problème dans mon cas c'est que quand il n'y a qu'une vidéo (le cas impair), je redimensionne en tpl la vidéo pour qu'elle soit plus grande (en faisant width="{video->width*1.7}).

En testant votre code avec deux vidéos, la première vidéo est bien dans "vidéo pair" mais la seconde passe dans vidéo impair vu qu'il s'agit de la dernière et est alors redimensionnée.

 

Il faut peut être alors juste créer un compteur de vidéo à rajouter également dans la condition et juste après la boucle for pour ne rentrer dans la boucle du "impair" que s'il n'y a qu'une seule vidéo. 

 

Je vais me pencher dessus pour voir si j'arrive à écrire ça avec la bonne synthaxe.

 

Merci à chaque fois pour toutes les réponses

Edited by Galadrum (see edit history)
Link to comment
Share on other sites

Pas la peine de créer un compteur tu l'as déjà avec $result.

Mais en fait je m'aperçois que j'ai pas fait le modulo directement sur le tableu et non pas le count.

 

Essai ça:

{assign var=result_count value=$result|@count}
{foreach from=$result item=video name=foo}
{if $smarty.foreach.foo.last && $result_count%2 != 0}
<div class="block opartProductVideo_pair {$video->className}">
<h2>{$video->publicTitle} Video IMPAIR</h2>
<div class="opartProductVideoDesc">{$video->desc}</div>
</div>
{else}
<div class="block opartProductVideo {$video->className}">
<h2>{$video->publicTitle} Video pair</h2>
<div class="opartProductVideoDesc">{$video->desc}</div>
</div>
{/if}
{/foreach}
  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

Salut,

 

Bravo pour ce module, il est super pratique et simple a utiliser.

 

J'ai juste un petit soucis.

 

Quand j'ajoute la vidéo a un produit, l'ongle ce crée mais, j'ai dans les autres onglets, le mot vidéo apparaît : voir image

 

J'aimerais aussi, il serai pas mal, pouvoir aligner la vidéo ( centrer ) pour moi cela serait plus propre selon les tailles des vidéos.

 

Merci encore pour tes tutos, astuces et surtout pour tes modules...

Link to comment
Share on other sites

Je viens de télécharger ce module dans votre boutique pour le tester et tenais à vous remercier.

 

Juste une petite question : il ne fonctionne qu'avec des videos en ligne ou il est possible d'avoir une video sur son serveur et de l'importer svp ?

 

Merci encore

 

Chris

Link to comment
Share on other sites

Bonjour, 

@SensualityForAll il est possible que ton thème gère les onglet différemment essai de dégréffer le module du hook productvideotab

 

Pour centrer ta vidéo il faut le faire en css.

 

@FFSMC-prod, non pour l'instant le module ne fonctionne qu'avec des vidéos hébergée sur wimeo, dailymotion et youtube

Link to comment
Share on other sites

  • 2 months later...

Bonjour David,

je n'ai plus le droit de mettre le lien vers le module (les règles du forum Prestashop l'interdise désormais).

Par contre dans la description de la vidéo de démonstration sur youtube, j'ai corrigé le lien vers la fiche produit qui en effet n'était plus le bon.

 

Donc si tu retourne sur la vidéo puis que tu clic sur le lien qui se trouve en dessous tu devrais pouvoir récupérer le module.

Link to comment
Share on other sites

Bonjour,

 

un lien direct vers l'archive du module ou le module directement téléchargeable dans le premier post est possible.

 

Ce qui n'est pas accepté c'est le lien vers un site proposant d'autre activités commerciale, cela me parait logique mais bon chaque développeur fait comme il le souhaite.

Link to comment
Share on other sites

Hello, 

oui oui on est bien d'accord mais ce post (et d'autres) existe depuis un certain temps. A l'époque cette pratique était autorisée.

Depuis le remaniement du forum ça ne l'ai plus et tout les liens vers ma boutique ont été supprimé.

Je ne souhaite pas proposer le module en libre téléchargement car en effet le but est bien d'amener les gens vers ma boutique c'est pourquoi je disait que je ne pouvais pas mettre le lien ;).

Link to comment
Share on other sites

  • 4 weeks later...

Salut Olivier,

 

ne serait t'il pas possible d'ajouter un player style "JwPlayer" ou autre, pour pouvoir ajouter ses vidéos sur son propre serveur au lieu d'une plateforme?

et, pk pas aussi avoir la possibilité de changer de hook? ou alors, l'avoir aligné sur les miniatures de produits?

 

Malheureusement sur mon thème, le module ne fonctionne pas bien et c'est bien dommage. D’où mes propositions...

 

 

PS. J'ai essayé de t'envoyer un mail avec ton module avec mes quelques modifications, ainsi qu'une archive d'un player.... Et ça passe pas.... Pas cool OVG..

Link to comment
Share on other sites

  • 2 weeks later...

 

Salut Olivier,

 

ne serait t'il pas possible d'ajouter un player style "JwPlayer" ou autre, pour pouvoir ajouter ses vidéos sur son propre serveur au lieu d'une plateforme?

et, pk pas aussi avoir la possibilité de changer de hook? ou alors, l'avoir aligné sur les miniatures de produits?

 

Salut,

désolé pour la réponse tardive j'étais en congés jusqu'à aujourd'hui.

 

Pour jwplayer ce n'est pas prévu que le module le supporte par contre j'ai développé un module spécifique pour jwplayer (compatible 1.5) pour un client.

Il n'est pas finaliser pour la vente et ce n'est pas dans les projets à court terme mais il ne doit pas y avoir grand chose à faire pour qu'il soit compatible 1.6.

 

 

 

Malheureusement sur mon thème, le module ne fonctionne pas bien et c'est bien dommage. D’où mes propositions...

 

Détail moi tes problèmes par mail pour voir si on peut les résoudre.

 

 

 

 

PS. J'ai essayé de t'envoyer un mail avec ton module avec mes quelques modifications, ainsi qu'une archive d'un player.... Et ça passe pas.... Pas cool OVG..

 

Je t'envoi mon adresse mail en message privé.

 

A bientôt,

Olivier

Link to comment
Share on other sites

  • 11 months later...

Bonjour;

Suite à la mise à jours de mon siteweb en version 1.6.1.6 je me retrouve avec un beau site responsive mais les vidéo ne le sont pas.

Pouvez vous m'indiquer quelle fichier je dois modifier.

Merci pour le module qui est parfait pour mon siteweb www.briquet-usb.eu

 

Cordialement

Link to comment
Share on other sites

Hello,

 

 

Merci pour ton module, installé mais apparemment j'ai un petite problème. L'onglet vidéo se retrouve dans l'onglet avis et la vidéo ne s'affiche pas.

 

https://outpost-shop.com/fr/accessoires/588-scrubba-wash-bag-sac-lave-linge-0680569403896.html

 

Merci

 

ben, on dirait que ça fonctionne nickel maintenant.. si ce n'est pas le cas chez vous.. faites un bon refresh et videz votre cache navigateur.

Link to comment
Share on other sites

Bonjour Outpost,

le problème de la vidéo qui se place dans l'onglet avis c'est le plus souvent dû au fait que le thème utilisé ne respecte pas le code original du thème de base de prestashop.

Mon module se base sur le thème original et du coup si tu veux qu'il se place correctement avec ton thème il est possible que tu soit obligé de faire un peu de css et d'html.

Regarde dans les fichier de template de mon module et compare avec ceux de ton thème pour voir la différence.

Link to comment
Share on other sites

  • 7 months later...

Bonjour,

 

J'ai aussi un souci d'onglet. Je dois modifier le fichier tab.tpl pour ajouter le lien de l'onglet. Ceci fonctionne parfaitement:

    <li><a href="#tab8" data-toggle="tab">{l s='Video' mod='opartproductvideo'}</a></li>    

Mais je n'arrive pas à le supprimer quand il n'y a pas de vidéo.

J'ai essayé différentes combinaisons de if /if mais sans succès. L'identifiant opartproductvideo ne semble pas capté par le tmp.

 

Une idée de comment faire ce test? Pour que l'onglet vidéo apparaisse uniquement quand c'est utile?

 

Merci de vos réponses.

Link to comment
Share on other sites

Bonjour,

si tu as modifié l'onglet tab directement dans ton thème c'est normal.

 

Il faut que tu modifie le fichier opartproductvideotab_15.tpl qui se trouve dans le dossier "views/templates/hook" de mon module.

 

Normalement tu n'as pas besoin de rajouter un IF dans le template car il y a déjà un IF dans le controler qui vérifie si l'onglet est nécessaire ou pas.

Link to comment
Share on other sites

Merci de votre réponse. Au regard du code, l'inclusion ne se fait pas, parce que nous sommes en version 1.6. hors notre thème (pourtant mis à jour) ne possède pas "d'onglet dépliés" mais des onglets comme en 1.5.  

 

L'inclusion de l'iframe vidéo se fait correctement après quelques modifications, mais l'onglet ne s'inclu pas. Est-ce que je modifie le controleur ou le tab?

Link to comment
Share on other sites

  • 9 months later...

Bonjour, j'ai beau essayé je n'arrive pas à mettre ce module dans un extratab, en dessous de "desciption" et "nos showrooms", plus parlant avec le lien https://mycreationdesign.com/tabourets-pliables-stooly/1239-tabouret-pliable-stooly-noir-42cm-mycreationdesign.html?search_query=stooly&results=32

je n'ai pas le thème d'origine et je suis 1.6

j'ai essayé de modifier le product.tpl mais sans succès

Si quelqu'un peut m'aider svp

Link to comment
Share on other sites

  • 5 months later...

salut , 

 je suis à la recherche d'un truc de ce genre et ça était super module , un souci je voudrais que l'onglet vidéo n'apparaisse pas pour   les produits n'ayant pas un vidéo ( comme illustre la figure ci-dessous ) : pour ce produit j'ai pas mis un vidéo ainsi je voudrais que l'onglet vidéo ne s'affiche plus .

quelle condition à ajouter pour ce bout de code fichier product.tpl pour faire la contrainte précédente 

                        {if isset($HOOK_PRODUCT_TAB)}
						<li><a data-toggle="tab" href="#idTab10">{l s='Video'}</a></li>
						
					    {/if}

 

video_otpion.PNG

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...