Press "Enter" to skip to content

pozycjonowanie – dodanie alternatywnego tytułu w kategorii [Presta Shop 1.6]

Admin 3

Domyślnie dana kategoria w edycji posiada następujące pola tekstowe:

  • Nazwa
  • Opis
  • Meta opis
  • Meta tytuł
  • Przyjazny adres URL

Jeśli chodzi o nazwę – jeśli jesteśmy w widoku danej kategorii, to pole jest używane w nagłówku tej kategorii. Tak samo – test który jest tam wpisany pojawia się w bloku z drzewem kategorii.

Czasami zachodzi potrzeba w celach pozycjonerskich (SEO) dodania słów kluczowych w nazwie kategorii w nagłówku na stronie tej kategorii. Jednak dodanie tam takich fraz powoduje jednoczesne dodanie ich na drzewie kategorii co może wyglądać dość nieestetycznie lub powodować wręcz rozsypanie tego drzewa, bo tytuły są za długie.

Wyjściem z sytuacji jest dodanie dodatkowego pola w formularzu edycji istniejącej / dodawania starej kategorii w zapleczu sklepu. Wtedy standardowa nazwa kategorii pojawia się w drzewie kategorii natomiast w ciele strony nad listą produktów wybrana przez nas dowolna nazwa.

Poniżej instrukcja jak to zrobić.

Modyfikacja bazy danych

Logujemy się np. do narzędzia PhpMyAdmin na naszym serwerze i wywołujemy kod SQL:

ALTER TABLE `ps_category_lang` ADD `name_alt` VARCHAR( 128 ) NOT NULL ;

(Uwaga, jeśli w naszym sklepie posiadamy inny tzw. prefix w nazwie tabel – domyślnie to „ps_” musimy go podmienić na obowiązujący)

Modyfikacja Klasy PHP:

Edytujemy plik:

classes/Category.php

Zamieniamy kod na początku pliku:

/** @var string Name */
public $name;

Na:

/** @var string Name */
public $name;

/** @var string Name Alternative */
public $name_alt;

Następnie kilkadziesiąt linii poniżej zamieniamy kod:

'name' =>                 array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCatalogName', 'required' => true, 'size' => 128),

Na:

'name' =>                 array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCatalogName', 'required' => true, 'size' => 128),
'name_alt' =>             array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCatalogName', 'required' => true, 'size' => 128),

Modyfikacja kontrolera:

Edytujemy plik:

controllers/admin/AdminCategoriesController.php

Dodajemy kolejny element w tablicy asocjacyjniej $this->fields_form zamieniając kod:

array(
'type' => 'text',
'label' => $this->l('Name'),
'name' => 'name',
'lang' => true,
'required' => true,
'class' => 'copy2friendlyUrl',
'hint' => $this->l('Invalid characters:').' <>;=#{}',
),

Na:

array(
'type' => 'text',
'label' => $this->l('Name'),
'name' => 'name',
'lang' => true,
'required' => true,
'class' => 'copy2friendlyUrl',
'hint' => $this->l('Invalid characters:').' <>;=#{}',
),

array(
'type' => 'text',
'label' => $this->l('Name Aternative'),
'name' => 'name_alt',
'lang' => true,
'required' => true,
'class' => 'copy2friendlyUrl',
'hint' => $this->l('Invalid characters:').' <>;=#{}',
),

Efektem naszych działań będzie pojawienie się takiego pola w formularzu dodawania / edycji kategorii:

kategoria-dodatkowe-pole-name

Modyfikacja szablonu .tpl

Otwieramy plik:

themes/{NAZWA-NASZEGO-SZABLONU}/category.tpl

Znajdujemy wystąpienie wywołania nazwy kategorii:

{$category->name}

Zameniamy ją na:

{if $category->name_alt}
{$category->name_alt}
{else}
{$category->name}
{/if}

Powyższa konstrukcja warunkowa pozwoli nam na uniknięcie pokazywania pustego nagłówka. W sytuacji jak np. w którejś kategorii nie zdeklarujemy alternatywnej nazwy.

Uwaga. Aby powyższe zmiany były widoczne w przeglądarce www należy upewnić się, że wyczyściliśmy pamięć podręczną w Presta Shop. Aby to zrobić wejdź w sekcję:

Zaawansowane » Wydajność » Wyczyść pamięć podręczną

  1. Bartosz Bartosz

    Dzień dobry,

    jak wykonać powyższą modyfikację – dodanie pola do kategorii dla prestashop 1.7.6?

    Nie ma pliku AdminCategoriesController.php tylko jest AdminCmsCategoriesController.php.
    Dodałem zatem do AdminCmsCategoriesController.php i niestety nie pojawia się nowe pole.

    • Admin Admin

      Niestety @Bartosz, ale ten SEO-lifehack zrobiliśmy jedynie dla PS 1.6 🙁

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

Zobacz także !
W dzisiejszym artykule wyjaśnimy jak we wszystkich wiodących wersjach Presta…