kuch Posted November 6, 2020 Share Posted November 6, 2020 (edited) 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 November 6, 2020 by kuch (see edit history) Link to comment Share on other sites More sharing options...
0 rrataj Posted November 6, 2020 Share Posted November 6, 2020 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 More sharing options...
0 rrataj Posted November 6, 2020 Share Posted November 6, 2020 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 More sharing options...
0 kuch Posted November 6, 2020 Author Share Posted November 6, 2020 @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 More sharing options...
0 rrataj Posted November 6, 2020 Share Posted November 6, 2020 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. 1 Link to comment Share on other sites More sharing options...
0 kuch Posted November 6, 2020 Author Share Posted November 6, 2020 @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 More sharing options...
0 rrataj Posted November 6, 2020 Share Posted November 6, 2020 Też dobre rozwiązanie 👍 A zadziałało tutaj ponieważ ten szablon dziedziczy `page.tpl` {extends file='page.tpl'} Link to comment Share on other sites More sharing options...
0 kuch Posted November 6, 2020 Author Share Posted November 6, 2020 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 More sharing options...
Question
kuch
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
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:
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:
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
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 accountSign in
Already have an account? Sign in here.
Sign In Now