Právě je 24 čer 2019 23:38

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 2 ] 
Autor Zpráva
 Předmět příspěvku: PrestaShop 1.6 - H1 nadpis kategorie nezávislý na jméně kategorie - dobré pro SEO
PříspěvekNapsal: 22 led 2019 16:12 
C4 zákazník

Registrován:
05 lis 2015 21:12
Příspěvky:
57
Ahoj,
rád bych se s vámi podělil o malou úpravu, která v Prestashopu umožňuje na stránkách kategorie mít vlastní nadpis H1 nezávislý od názvu kategorie. Toto řešení jistě ocení ti, kteří opravdu řeší onpage SEO faktory nebo potřebují mít například jiný H1 nadpis kategorie (většinou delší a výstižnější) než je samotný název kategorie. Úprava je celkem jednoduchá a týká se šesti souborů. Úprava tedy přidá v administraci e-shopu na kartě kategorie pole Nadpis H1, do kterého můžete vkládat libovolný text nadpisu kategorie. Pokud jej nevyplníte, pak se automaticky dosazuje text názvu kategorie. Úprava byla testována na Prestashop v 1.6.1.16 s defaultní šablonou.

POSTUP:
1. v tabulce ps_category_lang je zapotřebí vytvořit nový sloupec h1_custom dotazem v phpMyadminu:
Kód:
ALTER TABLE `ps_category_lang` ADD `h1_custom` text AFTER `description`;

pokud chcete do začátku řádky v h1_custom vypnit názvy kategorií, pak můžete zkopírovat hodnoty pomocí dotazu:
Kód:
UPDATE ps_category_lang SET h1_custom = name;

alespoň nebudete mít v začátku H1 u kategorií prázdné.

2. v souboru classes/Category.php
Za řádek:
Kód:
/** @var int Nested tree model "right" value */
    public $nright;

vložit kód:
Kód:
/** @var string H1 custom */
     public $h1_custom;

a za řádek:
Kód:
'name' =>array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCatalogName', 'required' => true, 'size' => 128),

vložit kód:
Kód:
'h1_custom' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCatalogName','size' => 128),


3. v souboru controllers/admin/AdminCategoriesController.php
za blok:
Kód:
array(
                    'type' => 'text',
                    'label' => $this->l('Meta title'),
                    'name' => 'meta_title',
                    'maxchar' => 70,
                    'lang' => true,
                    'rows' => 5,
                    'cols' => 100,
                    'hint' => $this->l('Forbidden characters:').' <>;=#{}'
                ),

vložit tento blok kódu:
Kód:
array(
                    'type' => 'text',
                    'label' => $this->l('Nadpis H1:'),
                    'name' => 'h1_custom',
                    'lang' => true,
           'hint' => $this->l('Forbidden characters:').' <>;=#{}'
                ),

To je základní úprava, která umožňuje libovolně nastavovat H1 nadpis. Pokud byste chtěli být ještě dokonalejší, pak následují úprava řeší ještě pár drobných věcí na stránce kategorie. Jednak původní H1 přesune do H2 (dle SEO doporučení má být na kždé stránce jen jeden H1 tag) a velký nadpis nad popisem kategorie přesune do H1 a vloží do něj text vyplnění v adminu e-shopu v poli Nadpis H1. Pokud ho nevyplníte, pak automaticky vloží text názvu kategorie aby H1 nezůstal prázdný.

1. v souboru themes/vaše_šablona/category.tpl
řádky:
Kód:
<span class="category-name">
                                {strip}
                                    {$category->name|escape:'html':'UTF-8'}
                                    {if isset($categoryNameComplement)}
                                        {$categoryNameComplement|escape:'html':'UTF-8'}
                                    {/if}
                                {/strip}
                            </span>

nahradit těmito řádky:
Kód:
<h1 class="category-name">
                                {strip}
            {if $category->h1_custom}
                                    {$category->h1_custom|escape:'html':'UTF-8'}
            {else}
               {$category->name|escape:'html':'UTF-8'}
               {/if}
                                    {if isset($categoryNameComplement)}
                                        {$categoryNameComplement|escape:'html':'UTF-8'}
                                    {/if}
                                {/strip}
                            </h1>

to by mělo zajisti aby v případě nevyplněného pole Nadpis H1 v adminu e-shopu byl použit název kategorie.

původní H1 tag změnit na H2:
Kód:
<h1 class="page-heading{if (isset($subcategories) && !$products) || (isset($subcategories) && $products) || !isset($subcategories) && $products} product-listing{/if}"><span class="cat-name">{$category->name|escape:'html':'UTF-8'}{if isset($categoryNameComplement)}&nbsp;{$categoryNameComplement|escape:'html':'UTF-8'}{/if}</span>{include file="$tpl_dir./category-count.tpl"}</h1>

na:
Kód:
<h2 class="page-heading{if (isset($subcategories) && !$products) || (isset($subcategories) && $products) || !isset($subcategories) && $products} product-listing{/if}"><span class="cat-name">{$category->name|escape:'html':'UTF-8'}{if isset($categoryNameComplement)}&nbsp;{$categoryNameComplement|escape:'html':'UTF-8'}{/if}</span>{include file="$tpl_dir./category-count.tpl"}</h2>


To je v základu vše. Pokud ale používáte modul pro filtrování zboží "Layered", pak je ještě dobré upravit v tomto modulu toto:

1. v souboru /themes/default-bootstrap/js/modules/blocklayered/blocklayered.js změnit řádek
Kód:
$('h1.page-heading .cat-name').html(result.heading);

na:
Kód:
$('h2.page-heading .cat-name').html(result.heading);


2. v souboru modules/blocklayered/blocklayered.php
změnit řádek:
Kód:
$category_title = (empty($category->meta_title) ? $category->name : $category->meta_title);

na:
Kód:
$category_title = $category->name;


Pak by už mělo jen stačit vymazat cache a popřípadě reloadnout stránku CTRL+F5.
Jen bych ještě připomněl, že nejsem programátor a úprava je výsledkem modifikace jiné úpravy z https://www.prestashop.com/forums/topic/272602-solved-add-a-second-category-description/ a mé logické dedukce, jak asi funguje PHP + pomoci administrátora z C4. Prosím tedy tímto o to, jestli by na to nemohl kouknout skutečný programátor, jestli někde není nějaké zásadní bota. Na testovacím e-shopu vše fungovalo bez problému i v debug módu.

Věřím, že úprava přijde někomu vhod.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop 1.6 - H1 nadpis kategorie nezávislý na jméně kategorie - dobré pro SEO
PříspěvekNapsal: 03 čer 2019 17:08 
C4 zákazník

Registrován:
04 říj 2011 14:37
Příspěvky:
9
Dobrý den, zkusil jsem úpravu a bohužel se na mém webu nijak neprojevila. V čem může být chyba?
Cache vymazaná a reloadnout stránky také..
Díky.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 2 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
FTP Uploader
Staňte se naším zákazníkem!
Hledáme kolegy
PrestaShop partneři

Seznam všech partnerů

PrestaShop Hosting
Návody pro C4

© 2009-2019 ČESKÝ WEBHOSTING s.r.o. Kontaktní e-mail: forum@c4.cz
Diskuzní fórum využívá technologie: phpBB, phpBB-SEO.com, phpBB.cz