Jump to content

Balises <Hn> page d'accueil


Recommended Posts

Bonjour,

En plein travail de référencement de mon site (www.pausebento.fr), j'ai analysé les balises Hn de ma page d'accueil et j'aimerais supprimer la plupart pour ne laisser que les balises intéressantes (H1 'titre' et H2 'sous-titre' avec en H3 les produits mis en avant).

J'ai réussi à supprimer des balises mais je bute sur les balises H3 générées par le bloc cms info. Dans le fichier tpl du module, je ne retrouve pas les balises H3. Il y a un fichier .php où il y a les balises H3 mais en les supprimant, les titres restent affichés en H3. Les lignes du fichier où apparaissent les balises H3 sont à la toute fin.

<?php
/*
* 2007-2015 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-2015 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;

require_once _PS_MODULE_DIR_.'blockcmsinfo/classes/InfoBlock.php';

class Blockcmsinfo extends Module
{
	public $html = '';

	public function __construct()
	{
		$this->name = 'blockcmsinfo';
		$this->tab = 'front_office_features';
		$this->version = '1.6.0';
		$this->author = 'PrestaShop';
		$this->bootstrap = true;
		$this->need_instance = 0;

		parent::__construct();

		$this->displayName = $this->l('Custom CMS information block');
		$this->description = $this->l('Adds custom information blocks in your store.');
		$this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
	}

	public function install()
	{
		return 	parent::install() &&
				$this->installDB() &&
				$this->registerHook('home') &&
				$this->installFixtures() &&
				$this->disableDevice(Context::DEVICE_TABLET | Context::DEVICE_MOBILE);
	}

	public function installDB()
	{
		$return = true;
		$return &= Db::getInstance()->execute('
				CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'info` (
				`id_info` INT UNSIGNED NOT NULL AUTO_INCREMENT,
				`id_shop` int(10) unsigned DEFAULT NULL,
				PRIMARY KEY (`id_info`)
			) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8 ;'
		);

		$return &= Db::getInstance()->execute('
				CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'info_lang` (
				`id_info` INT UNSIGNED NOT NULL,
				`id_lang` int(10) unsigned NOT NULL ,
				`text` text NOT NULL,
				PRIMARY KEY (`id_info`, `id_lang`)
			) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8 ;'
		);

		return $return;
	}

	public function uninstall()
	{
		return parent::uninstall() && $this->uninstallDB();
	}

	public function uninstallDB($drop_table = true)
	{
		$ret = true;
		if($drop_table)
			$ret &=  Db::getInstance()->execute('DROP TABLE IF EXISTS `'._DB_PREFIX_.'info`') && Db::getInstance()->execute('DROP TABLE IF EXISTS `'._DB_PREFIX_.'info_lang`');

		return $ret;
	}

	public function getContent()
	{
		$id_info = (int)Tools::getValue('id_info');

		if (Tools::isSubmit('saveblockcmsinfo'))
		{
			if (!Tools::getValue('text_'.(int)Configuration::get('PS_LANG_DEFAULT'), false))
				return $this->html . $this->displayError($this->l('You must fill in all fields.')) . $this->renderForm();
			elseif ($this->processSaveCmsInfo())
				return $this->html . $this->renderList();
			else
				return $this->html . $this->renderForm();
		}
		elseif (Tools::isSubmit('updateblockcmsinfo') || Tools::isSubmit('addblockcmsinfo'))
		{
			$this->html .= $this->renderForm();
			return $this->html;
		}
		else if (Tools::isSubmit('deleteblockcmsinfo'))
		{
			$info = new InfoBlock((int)$id_info);
			$info->delete();
			$this->_clearCache('blockcmsinfo.tpl');
			Tools::redirectAdmin(AdminController::$currentIndex.'&configure='.$this->name.'&token='.Tools::getAdminTokenLite('AdminModules'));
		}
		else
		{
			$this->html .= $this->renderList();
			return $this->html;
		}

	}

	public function processSaveCmsInfo()
	{
		if ($id_info = Tools::getValue('id_info'))
			$info = new InfoBlock((int)$id_info);
		else
		{
			$info = new InfoBlock();
			if (Shop::isFeatureActive())
			{
				$shop_ids = Tools::getValue('checkBoxShopAsso_configuration');
				if (!$shop_ids)
				{
					$this->html .= '<div class="alert alert-danger conf error">'.$this->l('You have to select at least one shop.').'</div>';
					return false;
				}
			}
			else
				$info->id_shop = Shop::getContextShopID();
		}

		$languages = Language::getLanguages(false);
		$text = array();
		foreach ($languages AS $lang)
			$text[$lang['id_lang']] = Tools::getValue('text_'.$lang['id_lang']);
		$info->text = $text;

		if (Shop::isFeatureActive() && !$info->id_shop)
		{
			$saved = true;
			foreach ($shop_ids as $id_shop)
			{
				$info->id_shop = $id_shop;
				$saved &= $info->add();
			}
		}
		else
			$saved = $info->save();

		if ($saved)
			$this->_clearCache('blockcmsinfo.tpl');
		else
			$this->html .= '<div class="alert alert-danger conf error">'.$this->l('An error occurred while attempting to save.').'</div>';

		return $saved;
	}


	protected function renderForm()
	{
		$default_lang = (int)Configuration::get('PS_LANG_DEFAULT');

		$fields_form = array(
			'tinymce' => true,
			'legend' => array(
				'title' => $this->l('New custom CMS block'),
			),
			'input' => array(
				'id_info' => array(
					'type' => 'hidden',
					'name' => 'id_info'
				),
				'content' => array(
					'type' => 'textarea',
					'label' => $this->l('Text'),
					'lang' => true,
					'name' => 'text',
					'cols' => 40,
					'rows' => 10,
					'class' => 'rte',
					'autoload_rte' => true,
				),
			),
			'submit' => array(
				'title' => $this->l('Save'),
			),
			'buttons' => array(
				array(
					'href' => AdminController::$currentIndex.'&configure='.$this->name.'&token='.Tools::getAdminTokenLite('AdminModules'),
					'title' => $this->l('Back to list'),
					'icon' => 'process-icon-back'
				)
			)
		);

		if (Shop::isFeatureActive() && Tools::getValue('id_info') == false)
		{
			$fields_form['input'][] = array(
				'type' => 'shop',
				'label' => $this->l('Shop association'),
				'name' => 'checkBoxShopAsso_theme'
			);
		}


		$helper = new HelperForm();
		$helper->module = $this;
		$helper->name_controller = 'blockcmsinfo';
		$helper->identifier = $this->identifier;
		$helper->token = Tools::getAdminTokenLite('AdminModules');
		foreach (Language::getLanguages(false) as $lang)
			$helper->languages[] = array(
				'id_lang' => $lang['id_lang'],
				'iso_code' => $lang['iso_code'],
				'name' => $lang['name'],
				'is_default' => ($default_lang == $lang['id_lang'] ? 1 : 0)
			);

		$helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;
		$helper->default_form_language = $default_lang;
		$helper->allow_employee_form_lang = $default_lang;
		$helper->toolbar_scroll = true;
		$helper->title = $this->displayName;
		$helper->submit_action = 'saveblockcmsinfo';

		$helper->fields_value = $this->getFormValues();

		return $helper->generateForm(array(array('form' => $fields_form)));
	}

	protected function renderList()
	{
		$this->fields_list = array();
		$this->fields_list['id_info'] = array(
				'title' => $this->l('Block ID'),
				'type' => 'text',
				'search' => false,
				'orderby' => false,
			);

		if (Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_SHOP)
			$this->fields_list['shop_name'] = array(
					'title' => $this->l('Shop'),
					'type' => 'text',
					'search' => false,
					'orderby' => false,
				);

		$this->fields_list['text'] = array(
				'title' => $this->l('Block text'),
				'type' => 'text',
				'search' => false,
				'orderby' => false,
			);

		$helper = new HelperList();
		$helper->shopLinkType = '';
		$helper->simple_header = false;
		$helper->identifier = 'id_info';
		$helper->actions = array('edit', 'delete');
		$helper->show_toolbar = true;
		$helper->imageType = 'jpg';
		$helper->toolbar_btn['new'] = array(
			'href' => AdminController::$currentIndex.'&configure='.$this->name.'&add'.$this->name.'&token='.Tools::getAdminTokenLite('AdminModules'),
			'desc' => $this->l('Add new')
		);

		$helper->title = $this->displayName;
		$helper->table = $this->name;
		$helper->token = Tools::getAdminTokenLite('AdminModules');
		$helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;

		$content = $this->getListContent($this->context->language->id);

		return $helper->generateList($content, $this->fields_list);
	}

	protected function getListContent($id_lang = null)
	{
		if (is_null($id_lang))
			$id_lang = (int)Configuration::get('PS_LANG_DEFAULT');

		$sql = 'SELECT r.`id_info`, rl.`text`, s.`name` as shop_name
			FROM `'._DB_PREFIX_.'info` r
			LEFT JOIN `'._DB_PREFIX_.'info_lang` rl ON (r.`id_info` = rl.`id_info`)
			LEFT JOIN `'._DB_PREFIX_.'shop` s ON (r.`id_shop` = s.`id_shop`)
			WHERE `id_lang` = '.(int)$id_lang.' AND (';

		if ($shop_ids = Shop::getContextListShopID())
			foreach ($shop_ids as $id_shop)
				$sql .= ' r.`id_shop` = '.(int)$id_shop.' OR ';

		$sql .= ' r.`id_shop` = 0 )';

		$content = Db::getInstance()->executeS($sql);

		foreach ($content as $key => $value)
			$content[$key]['text'] = substr(strip_tags($value['text']), 0, 200);

		return $content;
	}

	public function getFormValues()
	{
		$fields_value = array();
		$id_info = (int)Tools::getValue('id_info');

		foreach (Language::getLanguages(false) as $lang)
			if ($id_info)
			{
				$info = new InfoBlock((int)$id_info);
				$fields_value['text'][(int)$lang['id_lang']] = $info->text[(int)$lang['id_lang']];
			}
			else
				$fields_value['text'][(int)$lang['id_lang']] = Tools::getValue('text_'.(int)$lang['id_lang'], '');

		$fields_value['id_info'] = $id_info;

		return $fields_value;
	}

	public function hookHome($params)
	{
		$this->context->controller->addCSS($this->_path.'style.css', 'all');
		if (!$this->isCached('blockcmsinfo.tpl', $this->getCacheId()))
		{
			$infos = $this->getInfos($this->context->language->id, $this->context->shop->id);
			$this->context->smarty->assign(array('infos' => $infos, 'nbblocks' => count($infos)));
		}

		return $this->display(__FILE__, 'blockcmsinfo.tpl', $this->getCacheId());
	}

	public function getInfos($id_lang, $id_shop)
	{
		$sql = 'SELECT r.`id_info`, r.`id_shop`, rl.`text`
			FROM `'._DB_PREFIX_.'info` r
			LEFT JOIN `'._DB_PREFIX_.'info_lang` rl ON (r.`id_info` = rl.`id_info`)
			WHERE `id_lang` = '.(int)$id_lang.' AND  `id_shop` = '.(int)$id_shop;

		return Db::getInstance()->executeS($sql);
	}

	public function installFixtures()
	{
		$return = true;
		$tab_texts = array(
			array(
				'text' => '<ul>
<li><em class="icon-truck" id="icon-truck"></em>
<div class="type-text">
<h3>Lorem Ipsum</h3>
<p>Lorem ipsum dolor sit amet conse ctetur voluptate velit esse cillum dolore eu</p>
</div>
</li>
<li><em class="icon-phone" id="icon-phone"></em>
<div class="type-text">
<h3>Dolor Sit Amet</h3>
<p>Lorem ipsum dolor sit amet conse ctetur voluptate velit esse cillum dolore eu</p>
</div>
</li>
<li><em class="icon-credit-card" id="icon-credit-card"></em>
<div class="type-text">
<h3>Ctetur Voluptate</h3>
<p>Lorem ipsum dolor sit amet conse ctetur voluptate velit esse cillum dolore eu</p>
</div>
</li>
</ul>'
			),
			array(
				'text' => '<h3>Custom Block</h3>
<p><strong class="dark">Lorem ipsum dolor sit amet conse ctetu</strong></p>
<p>Sit amet conse ctetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit.</p>'
			),
		);

		$shops_ids = Shop::getShops(true, null, true);
		$return = true;
		foreach ($tab_texts as $tab)
		{
			$info = new InfoBlock();
			foreach (Language::getLanguages(false) as $lang)
				$info->text[$lang['id_lang']] = $tab['text'];
			foreach ($shops_ids as $id_shop)
			{
				$info->id_shop = $id_shop;
				$return &= $info->add();
			}
		}

		return $return;
	}
}

Suis-je au bon endroit, le fichier qui gère ces foutues balises H3 ?

Merci d'avance pour m'aider.

Me restera plus qu'à supprimer les balises H4 du footer et transformer les H5 des produits mis en avant en H3.

David

Edited by Pause bentô (see edit history)
Link to comment
Share on other sites

Bonjour,

Il reste encore quelques balises h4 sur la page d'accueil que je voudrais supprimer tout en gardant la mise en page actuelle des balises h4 ('Catégories', 'Mon compte', 'Nos coordonnées' et 'Informations' dans le footer).
Pour enlever la balise h4 'Catégories', direction le fichier blockcategories_footer.tpl :

<!-- Block categories module -->
<section class="blockcategories_footer footer-block col-xs-12 col-sm-2">
	<h4>{l s='Categories' mod='blockcategories'}</h4>
	<div class="category_footer toggle-footer">

Je supprime les balises <h4> et </h4>.

Dans le fichier global.css (à partir de la ligne 6802) :

    .footer-container #footer h4 {
      font: 600 18px/22px "Open Sans", sans-serif;
      color: white;
      margin: 0 0 13px 0; }
      @media (max-width: 767px) {
        .footer-container #footer h4 {
          position: relative;
          margin-bottom: 0;
          padding-bottom: 13px; }
          .footer-container #footer h4:after {
            display: block;
            content: "\f055";
            font-family: "FontAwesome";
            position: absolute;
            right: 0;
            top: 1px; }
          .footer-container #footer h4.active:after {
            content: "\f056"; } }
      .footer-container #footer h4 a {
        color: white; }

Je supprime les h4.

Le problème en supprimant la balise h4, la mise en forme change. Comment faire pour garder la mise en forme actuelle (h4) sans pour autant que le titre soit une balise h4 ?

Y a-t-il un moyen de transformer la balise h4 en une autre balise mais pas hn ?

 

Merci d'avance.

David

Edited by Pause bentô (see edit history)
Link to comment
Share on other sites

Le but est bien de supprimer les h4 ou alors je n'ai pas compris ?

vous les remplacez par des <span> et vous reprenez vos mises en forme css par le ciblage suivant

.footer-container #footer span

 

après si vous avez d'autres <span> dans le footer qui vont du coup être ciblés, il faut appliquer une class à ceux-ci et les cibler par la class

Link to comment
Share on other sites

Oui, vous avez bien compris (supprimer les balises h4 tout en gardant la mise en page).

J'avais donc bien compris (novice en codage donc je préfère demandé pour être bien sûr d'avoir compris).

Je vais tenter les modifications des h4 en span pour voir ce que cela donne. Je vous redis si ça fonctionne bien.

Encore merci. Ca va pas mal me débloquer ensuite pour supprimer toutes les balises de me*** qui ne servent à rien dans les catégories et pages produits aussi.

Link to comment
Share on other sites

Plus qu'une balise h5 à supprimer dans la page d'accueil : les noms des produits mis dans l'onglet des nouveautés (module Nouveaux produits). J'ai réussi à supprimer les h5 des autres produits des différents onglets (module Produits Phares) mais ceux du module Nouveaux produits non.

Dans le fichier blocknewproducts.tpl, j'ai :

<!-- MODULE Block new products -->
<div id="new-products_block_right" class="block products_block">
	<h4 class="title_block">
    	<a href="{$link->getPageLink('new-products')|escape:'html'}" title="{l s='New products' mod='blocknewproducts'}">{l s='New products' mod='blocknewproducts'}</a>
    </h4>
    <div class="block_content products-block">
        {if $new_products !== false}
            <ul class="products">
                {foreach from=$new_products item=newproduct name=myLoop}
                    <li class="clearfix">
                        <a class="products-block-image" href="{$newproduct.link|escape:'html'}" title="{$newproduct.legend|escape:html:'UTF-8'}"><img class="replace-2x img-responsive" src="{$link->getImageLink($newproduct.link_rewrite, $newproduct.id_image, 'small_default')|escape:'html'}" alt="{$newproduct.name|escape:html:'UTF-8'}" /></a>
                        <div class="product-content">
                            	<a class="product-name" href="{$newproduct.link|escape:'html'}" title="{$newproduct.name|escape:html:'UTF-8'}">{$newproduct.name|strip_tags|escape:html:'UTF-8'}</a>
                        	<p class="product-description">{$newproduct.description_short|strip_tags:'UTF-8'|truncate:75:'...'}</p>
                            {if (!$PS_CATALOG_MODE AND ((isset($newproduct.show_price) && $newproduct.show_price) || (isset($newproduct.available_for_order) && $newproduct.available_for_order)))}
                            	{if isset($newproduct.show_price) && $newproduct.show_price && !isset($restricted_country_mode)}
                                    <div class="price-box">
                                        <span class="price">
                                        	{if !$priceDisplay}{convertPrice price=$newproduct.price}{else}{convertPrice price=$newproduct.price_tax_exc}{/if}
                                        </span>
                                    </div>
                                {/if}
                            {/if}
                        </div>
                    </li>
                {/foreach}
            </ul>
            <div>
                <a href="{$link->getPageLink('new-products')|escape:'html'}" title="{l s='All new products' mod='blocknewproducts'}" class="btn btn-default button button-small"><span>{l s='All new products' mod='blocknewproducts'}<i class="icon-chevron-right right"></i></span></a>
            </div>
        {else}
        	<p>» {l s='Do not allow new products at this time.' mod='blocknewproducts'}</p>
        {/if}
    </div>
</div>
<!-- /MODULE Block new products -->

Je vois en h4 dans le code le titre 'Nouveaux produits' mais pas de h5. Et dans le fichier blocknewproducts_home.tpl (le fichier pour la page d'accueil si je comprends bien) :

{*
* 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
*}
{counter name=active_ul assign=active_ul}
{if isset($new_products) && $new_products}
	{include file="$tpl_dir./product-list.tpl" products=$new_products class='blocknewproducts tab-pane' id='blocknewproducts' active=$active_ul}
{else}
<ul id="blocknewproducts" class="blocknewproducts tab-pane{if isset($active_ul) && $active_ul == 1} active{/if}">
	<li class="alert alert-info">{l s='No new products at this time.' mod='blocknewproducts'}</li>
</ul>
{/if}

Pas de h5 non plus.

Je dois chercher dans le mauvais fichier mais je ne vois pas où chercher (Firebug n'aide pas vraiment).

Merci d'avance pour l'aide.

David

Link to comment
Share on other sites

Merci beaucoup ! C'était bien dans le fichier product-list.tpl.

<div class="right-block">
					<h5 itemprop="name">
						{if isset($product.pack_quantity) && $product.pack_quantity}{$product.pack_quantity|intval|cat:' x '}{/if}
						<a class="product-name" href="{$product.link|escape:'html':'UTF-8'}" title="{$product.name|escape:'html':'UTF-8'}" itemprop="url" >
							{$product.name|truncate:45:'...'|escape:'html':'UTF-8'}
						</a>
					</h5>
Link to comment
Share on other sites

Bonjour,

C'est encore moi :) Balises de la page d'accueil : OK ; balises des pages catégories : OK ; balises des pages produits : en cours.

J'ai réussi à supprimer toutes les balises hn (reste plus que la h1) sauf une balise h5 vide que je n'arrive pas à trouver. J'ai beau regarder partout : introuvable avec Firebug.

D'après une ancienne analyse des balises hn, la balise h5 devrait se trouver entre 'envoyer à un ami' et la fiche technique. Introuvable quand même ><

Merci d'avance pour l'aide.

David

Edited by Pause bentô (see edit history)
Link to comment
Share on other sites

C'est un module de base sur Prestashop. Je comprends pas moi non plus (l'équipe Prestashop avait bien une raison, je suppose).

Avec ce module, on peut ajouter un lien sur l'image (vers le cms Paiement sécurisé par exemple), modifier l'image donc je pense que c'est pour faciliter ces changements que l'option module a été choisie. Après je me trompe peut-être (je ne suis qu'un novice en code et Prestashop).

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