Jump to content
  • 0

Jak nadpisać tytuł, opis i słowa kluczowe strony w module


kuch

Question

W moim sklepie (1.7.6.8) mam zainstalowany moduł bloga: https://github.com/smartdatasoft/smartblog

Moduł ten w pewnym pliku .tpl ma zdefiniowane meta tagi dodawane do strony o ile je uzupełnię dla danego wpisu.

https://github.com/smartdatasoft/smartblog/blob/develop/views/templates/front/plugins/blogfeedheader.tpl

<meta name="title" content="{$meta_title}">
<meta name="keywords" content="{$meta_keyword}">
<meta name="description" content="{$meta_description}">

 

Problem polega na tym, że tagi są dodawane niezależnie od meta tagów samej presty a więc występują w kodzie 2 razy.

W pliku head.tpl szablonu jest coś takiego:

<meta name="description" content="{block name='head_seo_description'}{$page.meta.description}{/block}">
<meta name="keywords" content="{block name='head_seo_keywords'}{$page.meta.keywords}{/block}">

 

W związku z tym próbowałem nadpisać te bloki w module tak jak mógłbym to zrobić w szablonie czyli zrobiłem tak:

{block name='head_seo_keywords'}<meta name="keywords" content="{$meta_keyword}">{/block}
{block name='head_seo_description'}<meta name="description" content="{$meta_description}">{/block}

 

Niestety to nie działa. Czy jest jakiś sposób, żeby meta tagi się nie powielały?

Oczywiście ten plik .tpl modułu mam nadpisany w szablonie.

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

7 answers to this question

Recommended Posts

  • 0

Powinieneś w plikach z katalogu /modules/smartblog/controllers/front/*  które są odpowiedzialne za wyświetlanie stron powiązanych z blogiem dodać do metody init() coś takiego:

$this->context->smarty->assign('meta_title', 'tutaj tytuł');
$this->context->smarty->assign('meta_description', 'tutaj opis');

Powinno zadziałać.

Link to comment
Share on other sites

  • 0

W tym przypadku jedynym dobrym rozwiązaniem jest przekazanie zmiennych w kontrolerze (wykorzystać mechanizm z presty), żeby domyślny szablon `/themes/szablon/_partials/head.tpl` ją wyświetlił, a duplikaty z blogfeedheader.tpl po prostu usunąć.

Kluczowe jest to co napisałeś:

Quote

ten jest pusty bo na stronie bloga nie ma dostępnej zmiennej np. {$page.meta.description}

No to właśnie jeżeli jej nie ma to należało by ją dodać :)

Link to comment
Share on other sites

  • 0

@rrataj oryginalnie w kontrolerze modułu jest:

$this->context->smarty->assign('meta_title',$meta_title);
$this->context->smarty->assign('meta_description',$meta_description);
$this->context->smarty->assign('meta_keywords',$meta_keyword);

To w takim razie jak te wartości przypisać żeby szablon sklepu otrzymał zmienne {$page.meta.meta_title} itd?

Link to comment
Share on other sites

  • 0

Można np. dodać do `/modules/smartblog/classes/controllers/FrontController.php`

kod:

public function getTemplateVarPage()
{
  $page = parent::getTemplateVarPage();
  $page['meta']['title'] = '';
  $page['meta']['description'] = '';
  $page['meta']['keywords'] = '';
  return $page;
}

Powinno zadziałać, aczkolwiek nie testowałem. No i oczywiście musisz podstawić zmienne które chcesz w miejsce pustych stringów powyżej.

  • Like 1
Link to comment
Share on other sites

  • 0

@rrataj dzięki zadziałało ale znalazłem inne rozwiązanie które nie wymaga dopisywania nic w kontrolerze.

Doałem:

{block name='head_seo_title'}{$meta_title}{/block}
{block name='head_seo_description'}{$meta_description}{/block}
{block name='head_seo_keywords'}{$meta_keyword}{/block}

w /modules/smartblog/views/templates/front/posts.tpl 

W pliku w którym wcześniej chciałem to dodać czyli blogfeedheader.tpl te nadpisanie bloków nie działało.

Link to comment
Share on other sites

  • 0

Dokładnie, nie mniej jednak dzięki za pomoc :)

Teraz jeszcze muszę uporać się z drugim problemem bo na widoku szczegółowym nie pobiera meta_description i meta_keyword.

meta_title normlanie jest a te dwa mimo że w bazie uzupełnione to zmienne nie zwracają 😕

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