Jump to content

affichage blockSocial sur ma page home


Recommended Posts

Bonjour

J'ai fini par créer ma page d'accueil avec un produit et designation, prix, ce que veut le client.

 

J'aimerais rajouter le bloc social sur ma page home. dans mon BO je veux greffer le module sur (displayHome)Homepage Content - réponse : "Ce module ne peut être accroché à ce hook".

 

Quelqu'un aurait-il une ID pour réaliser cette opé, en sachant que j'ai tenté de modifier mon global.css, editorial.css, .tpl... sans résultats. Sur ma page accueil il y a le header, uniquement le module "Éditeur de page d'accueil", au centre, puis le bottom-footer ?

 

Grand merci ! :(:mellow::D:wub:

Link to comment
Share on other sites

Hello,

 

il faut savoir que chaque module a, dans son fichier .php, des hooks spécifié.

 

En l’occurrence, dans /modules/blocksocial/blocksocial.php on a uniquement :

public function hookDisplayHeader()
{
 $this->context->controller->addCSS(($this->_path).'blocksocial.css', 'all');
}

public function hookDisplayFooter()
{
 if (!$this->isCached('blocksocial.tpl', $this->getCacheId()))
  $this->smarty->assign(array(
   'facebook_url' => Configuration::get('blocksocial_facebook'),
   'twitter_url' => Configuration::get('blocksocial_twitter'),
   'rss_url' => Configuration::get('blocksocial_rss')
  ));
 return $this->display(__FILE__, 'blocksocial.tpl', $this->getCacheId());
}

 

Le module ne peut que s’accrocher sur le hook header, afin d'ajouter le fichier css, et dans le footer, afin d'afficher tes icones/texte.

 

Si tu veux le rajouter sur la home, tu peux rajouter :

public function hookDisplayHome()
{
 return $this->hookDisplayFooter();
}

 

Et tu devrais pouvoir le greffer sur le hook home.

  • Like 1
Link to comment
Share on other sites

Bonjour, un grand merci pour ton aide.

Pour la précédente Q_ j'ai mis : body#index #footer{display:none;}

Je viens de copier le code... je vais m'y coller !

Est-il normal que je trouve le fichier blocksocial.php uniquement dans le dossier racine de prestashop par défault - Egalement pour les photos des produits que j'ajoute, qui vont se mettre dans le doss. img/p/3/6.... pour la mise à jour que risque t-il de se passer ? pour le moment je suis en local. n'ai-je pas fait l'installation comme il faudrait ?

J'ai modifié le global.css pour le reglage ordi normal. dois-je rajouter les mêmes modifs pour les tablettes, mobiles...

Plein de questionnements, c'est mon 1er prestashop !

Une très bonne journée à toi !

Link to comment
Share on other sites

Je reviens...

j'ai bien accroché sur ma page le module, il est dans le code sur firebug, mais il n'apparait pas sur ma page. Il est bien sous mon editeur de page d'accueil. J'ai créé un #social_block_home avec son positionnement, mais rien, aucune icône facebook, twitter... ???

Je n'en suis certainement pas loin, mais je manque cruellement de connections développement

Link to comment
Share on other sites

  • 1 year later...

Bonjour,

 

Désolé du déterrage, mais ce sujet correspond bien à mon problème car j'avais le même problème "Ce module ne peut être accroché à ce hook" :

Dans mon cas, je veux intégrer le BlocStore sur la page d’accueil à coté du bloc CMS information Clients.

A noter que je suis en version 1.6

 

Voici le étapes réalisées

 

1/ J'ai crée avec phpmyadmin un nouveau hook que j'ai appelée "HookMagasinAcceuil".

Ça a fonctionné car je le retrouve dans mon backoffice.

 

2/ J'ai modifié index.tpl pour intégrer une nouvelle Div avec dedans {hook h="HookMagasinAcceuil"}

 

3/ Dans Blockstore.php j'ai ajouté

// essais declarer hook  

public function hookHookMagasinAcceuil()
{
  return $this->hookHookMagasinAcceuil();
}

// fin essais declarer hook  

4/ Ensuite dans le back-office, j'ai accroché Blockstore au hook "HookMagasinAcceuil"

et cette fois il a accepté "Module greffé sur le point d'accroche avec succès."

 

5/ Mais lorsque je j'ouvre la page d'acceuil du front j'ai un gros plantage "erreur500"

Si je supprime ma modif sur  Blockstore.php le site retourne à la normale mais toujours pas de module bloc magasins...

 

J'aurais vraiment besoin d'aide, voici ci dessous le code du fichier Blockstore.php modifié

<?php
/*
* 2007-2014 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-2014 PrestaShop SA
*  @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;

class BlockStore extends Module
{
	public function __construct()
	{
		$this->name = 'blockstore';
		$this->tab = 'front_office_features';
		$this->version = '1.2.1';
		$this->author = 'PrestaShop';
		$this->need_instance = 0;

		$this->bootstrap = true;
		parent::__construct();	

		$this->displayName = $this->l('Store locator block');
		$this->description = $this->l('Displays an image link to PrestaShop\'s store locator feature.');
		$this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
	}

	public function install()
	{
		if (!parent::install())
			return false;

		// Hook the module either on the left or right column
		$theme = new Theme(Context::getContext()->shop->id_theme);
		if ((!$theme->default_right_column || !$this->registerHook('rightColumn'))
			&& (!$theme->default_left_column || !$this->registerHook('leftColumn')))
		{
			// If there are no colums implemented by the template, throw an error and uninstall the module
			$this->_errors[] = $this->l('This module needs to be hooked in a column, but your theme does not implement one.');
			parent::uninstall();
			return false;
		}

		if (file_exists(dirname(__FILE__).'/store.jpg'))
			Configuration::updateValue('BLOCKSTORE_IMG', 'store.jpg');

		// Hook the module at the end on the header, only if it has been hooked 
		return $this->registerHook('header');
		

		
	}
	

	public function uninstall()
	{
		Configuration::deleteByName('BLOCKSTORE_IMG');
		return parent::uninstall();
	}

	public function hookLeftColumn($params)
	{
		return $this->hookRightColumn($params);
	}

	public function hookRightColumn($params)
	{
		if (!$this->isCached('blockstore.tpl', $this->getCacheId()))
		{
			$id_lang = $this->context->cart->id_lang;
			$this->smarty->assign(array(
					'store_img' => Configuration::get('BLOCKSTORE_IMG'),
					'store_text' => Configuration::get('BLOCKSTORE_TEXT', $id_lang),
				));
			$sql = 'SELECT COUNT(*)
					FROM '._DB_PREFIX_.'store s'
					.Shop::addSqlAssociation('store', 's');
			$total = Db::getInstance()->getValue($sql);
			
			if ($total <= 0)
				return;
		}
		return $this->display(__FILE__, 'blockstore.tpl', $this->getCacheId());

	}
	

// essais declarer hook  

public function hookHookMagasinAcceuil()
{
  return $this->hookHookMagasinAcceuil();
}

// fin essais declarer hook  
	
	
	
	

	public function hookHeader($params)
	{
		$this->context->controller->addCSS($this->_path.'blockstore.css', 'all');
	}






	public function postProcess()
	{
		if (Tools::isSubmit('submitStoreConf'))
		{
			if (!($languages = Language::getLanguages(true)))
				return false;

			$text = array();
			foreach ($languages as $lang)
				$text[$lang['id_lang']] = Tools::getValue('BLOCKSTORE_TEXT_'.$lang['id_lang']);

			Configuration::updateValue('BLOCKSTORE_TEXT', $text);

			if (isset($_FILES['BLOCKSTORE_IMG']) && isset($_FILES['BLOCKSTORE_IMG']['tmp_name']) && !empty($_FILES['BLOCKSTORE_IMG']['tmp_name']))
			{
				if ($error = ImageManager::validateUpload($_FILES['BLOCKSTORE_IMG'], 4000000))
					return $this->displayError($this->l('Invalid image.'));
				else
				{
					$ext = substr($_FILES['BLOCKSTORE_IMG']['name'], strrpos($_FILES['BLOCKSTORE_IMG']['name'], '.') + 1);
					$file_name = md5($_FILES['BLOCKSTORE_IMG']['name']).'.'.$ext;
					if (!move_uploaded_file($_FILES['BLOCKSTORE_IMG']['tmp_name'], dirname(__FILE__).'/'.$file_name))
						return $this->displayError($this->l('An error occurred while attempting to upload the file.'));
					else
					{
						if (Configuration::hasContext('BLOCKSTORE_IMG', null, Shop::getContext()) && Configuration::get('BLOCKSTORE_IMG') != $file_name)
							@unlink(dirname(__FILE__).'/'.Configuration::get('BLOCKSTORE_IMG'));
						Configuration::updateValue('BLOCKSTORE_IMG', $file_name);
						$this->_clearCache('blockstore.tpl');
						return $this->displayConfirmation($this->l('The settings have been updated.'));
					}
				}
			}
			$this->_clearCache('blockstore.tpl');
		}
		return '';
	}

	public function getContent()
	{
		return $this->postProcess().$this->renderForm();
	}
	
	public function renderForm()
	{
		$fields_form = array(
			'form' => array(
				'legend' => array(
					'title' => $this->l('Settings'),
					'icon' => 'icon-cogs'
				),
				'input' => array(
					array(
						'type' => 'file',
						'label' => $this->l('Image for the Store Locator block'),
						'name' => 'BLOCKSTORE_IMG',
						'thumb' => '../modules/'.$this->name.'/'.Configuration::get('BLOCKSTORE_IMG'),
					),
					array(
						'type' => 'text',
						'label' => $this->l('Text for the Store Locator block'),
						'name' => 'BLOCKSTORE_TEXT',
						'lang' => true,
					),
				),
				'submit' => array(
					'title' => $this->l('Save'),
				)
			),
		);
		
		$helper = new HelperForm();
		$helper->show_toolbar = false;
		$helper->table =  $this->table;
		$lang = new Language((int)Configuration::get('PS_LANG_DEFAULT'));
		$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 = 'submitStoreConf';
		$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()
	{
		if (!($languages = Language::getLanguages(true)))
			return false;

		$data = array(
			'BLOCKSTORE_IMG' => Tools::getValue('BLOCKSTORE_IMG', Configuration::get('BLOCKSTORE_IMG')),
		);

		foreach ($languages as $lang)
			$data['BLOCKSTORE_TEXT'][$lang['id_lang']] = Configuration::get('BLOCKSTORE_TEXT', $lang['id_lang']);

		return $data;
	}
}

Est ce que je suis au bon endroit ?

Est ce que les déclarations pour le colonne letf et right  avec toutes ces conditions créent un confit ?

 

Si vous pouviez m'aider ... merci d'avance

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

En bidouillant et en m'inspirant de bout de code épars sans trop comprendre, j'ai réussi à  insérer mon blockstore dans l'index.tpl ...

 

pour info j'ai fait cà pour le blockstore.php :

<?php
/*
* 2007-2014 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-2014 PrestaShop SA
*  @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;

class BlockStore extends Module
{
	public function __construct()
	{
		$this->name = 'blockstore';
		$this->tab = 'front_office_features';
		$this->version = '1.2.1';
		$this->author = 'PrestaShop';
		$this->need_instance = 0;

		$this->bootstrap = true;
		parent::__construct();	

		$this->displayName = $this->l('Store locator block');
		$this->description = $this->l('Displays an image link to PrestaShop\'s store locator feature.');
		$this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
	}

	public function install()
	{
		if (!parent::install())
			return false;

		// Hook the module either on the left or right column
		$theme = new Theme(Context::getContext()->shop->id_theme);
		if ((!$theme->default_right_column || !$this->registerHook('rightColumn'))
			&& (!$theme->default_left_column || !$this->registerHook('leftColumn')))
		{
			

			
			// If there are no colums implemented by the template, throw an error and uninstall the module
			$this->_errors[] = $this->l('This module needs to be hooked in a column, but your theme does not implement one.');
			parent::uninstall();
			return false;
		}

		if (file_exists(dirname(__FILE__).'/store.jpg'))
			Configuration::updateValue('BLOCKSTORE_IMG', 'store.jpg');
			

		// Hook the module at the end on the header, only if it has been hooked 
		return $this->registerHook('header');
		}
	

	public function uninstall()
	{
		Configuration::deleteByName('BLOCKSTORE_IMG');
		return parent::uninstall();
	}
	
	

// essais declarer hook  

public function hookHookMagasinAcceuil($params)
{
  return $this->hookRightColumn($params);
}

// fin essais declarer hook  

	
	
	
	
	
	

	public function hookLeftColumn($params)
	{
		return $this->hookRightColumn($params);
	}

	public function hookRightColumn($params)
	{
		if (!$this->isCached('blockstore.tpl', $this->getCacheId()))
		{
			$id_lang = $this->context->cart->id_lang;
			$this->smarty->assign(array(
					'store_img' => Configuration::get('BLOCKSTORE_IMG'),
					'store_text' => Configuration::get('BLOCKSTORE_TEXT', $id_lang),
				));
			$sql = 'SELECT COUNT(*)
					FROM '._DB_PREFIX_.'store s'
					.Shop::addSqlAssociation('store', 's');
			$total = Db::getInstance()->getValue($sql);
			
			if ($total <= 0)
				return;
		}
		return $this->display(__FILE__, 'blockstore.tpl', $this->getCacheId());

	}
	
	
	
	
	

	public function hookHeader($params)
	{
		$this->context->controller->addCSS($this->_path.'blockstore.css', 'all');
	}






	public function postProcess()
	{
		if (Tools::isSubmit('submitStoreConf'))
		{
			if (!($languages = Language::getLanguages(true)))
				return false;

			$text = array();
			foreach ($languages as $lang)
				$text[$lang['id_lang']] = Tools::getValue('BLOCKSTORE_TEXT_'.$lang['id_lang']);

			Configuration::updateValue('BLOCKSTORE_TEXT', $text);

			if (isset($_FILES['BLOCKSTORE_IMG']) && isset($_FILES['BLOCKSTORE_IMG']['tmp_name']) && !empty($_FILES['BLOCKSTORE_IMG']['tmp_name']))
			{
				if ($error = ImageManager::validateUpload($_FILES['BLOCKSTORE_IMG'], 4000000))
					return $this->displayError($this->l('Invalid image.'));
				else
				{
					$ext = substr($_FILES['BLOCKSTORE_IMG']['name'], strrpos($_FILES['BLOCKSTORE_IMG']['name'], '.') + 1);
					$file_name = md5($_FILES['BLOCKSTORE_IMG']['name']).'.'.$ext;
					if (!move_uploaded_file($_FILES['BLOCKSTORE_IMG']['tmp_name'], dirname(__FILE__).'/'.$file_name))
						return $this->displayError($this->l('An error occurred while attempting to upload the file.'));
					else
					{
						if (Configuration::hasContext('BLOCKSTORE_IMG', null, Shop::getContext()) && Configuration::get('BLOCKSTORE_IMG') != $file_name)
							@unlink(dirname(__FILE__).'/'.Configuration::get('BLOCKSTORE_IMG'));
						Configuration::updateValue('BLOCKSTORE_IMG', $file_name);
						$this->_clearCache('blockstore.tpl');
						return $this->displayConfirmation($this->l('The settings have been updated.'));
					}
				}
			}
			$this->_clearCache('blockstore.tpl');
		}
		return '';
	}

	public function getContent()
	{
		return $this->postProcess().$this->renderForm();
	}
	
	public function renderForm()
	{
		$fields_form = array(
			'form' => array(
				'legend' => array(
					'title' => $this->l('Settings'),
					'icon' => 'icon-cogs'
				),
				'input' => array(
					array(
						'type' => 'file',
						'label' => $this->l('Image for the Store Locator block'),
						'name' => 'BLOCKSTORE_IMG',
						'thumb' => '../modules/'.$this->name.'/'.Configuration::get('BLOCKSTORE_IMG'),
					),
					array(
						'type' => 'text',
						'label' => $this->l('Text for the Store Locator block'),
						'name' => 'BLOCKSTORE_TEXT',
						'lang' => true,
					),
				),
				'submit' => array(
					'title' => $this->l('Save'),
				)
			),
		);
		
		$helper = new HelperForm();
		$helper->show_toolbar = false;
		$helper->table =  $this->table;
		$lang = new Language((int)Configuration::get('PS_LANG_DEFAULT'));
		$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 = 'submitStoreConf';
		$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()
	{
		if (!($languages = Language::getLanguages(true)))
			return false;

		$data = array(
			'BLOCKSTORE_IMG' => Tools::getValue('BLOCKSTORE_IMG', Configuration::get('BLOCKSTORE_IMG')),
		);

		foreach ($languages as $lang)
			$data['BLOCKSTORE_TEXT'][$lang['id_lang']] = Configuration::get('BLOCKSTORE_TEXT', $lang['id_lang']);

		return $data;
	}
}

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...