limera1n Posted April 18, 2021 Share Posted April 18, 2021 Cześć, na starym sklepie Presty potrzebuję wynieść do hook'a "displayHome" moduł newsletter'a i przebudować go od strony wizualnej. W blocknewsletter.php dodałem: do konstruktora: if (!$this->isRegisteredInHook('displayHome')){ $this->registerHook('displayHome'); } dalej: public function hookDisplayHome($params) { if (!isset($this->prepared) || !$this->prepared) $this->_prepareHook($params); $this->prepared = true; $this->smarty->assign(array('id_module' => $this->id)); return $this->display(__FILE__, 'blocknewsletter_home.tpl'); } Dla testów skopiowałem domyślny szablon blocknewsletter.tpl, zapisałem pod nazwą blocknewsletter_home.tpl i trzymam w tej samej lokacji co domyślny czyli blocknewsletter\views\templates\hook Efekt dodania do nazwy pliku .tpl końcówki _home kończy się czymś takim: Wyświetla się HTML, nie wykonuje się kod PHP. użycie starej nazwy, bez końcówki _home działa prawidłowo: Zmiana nazwy pliku .tpl w przypadku domyślnego hook'a czyli hookDisplayLeftColumn powoduje to samo zachowanie. Czy ktoś doświadczony może zasugerować jakieś rozwiązanie? Zmiany nazw plików .tpl wymagają jakiegoś dodatkowego działania? Link to comment Share on other sites More sharing options...
c64girl Posted April 20, 2021 Share Posted April 20, 2021 On 4/18/2021 at 10:45 PM, limera1n said: Cześć, na starym sklepie Presty potrzebuję wynieść do hook'a "displayHome" moduł newsletter'a i przebudować go od strony wizualnej. W blocknewsletter.php dodałem: do konstruktora: if (!$this->isRegisteredInHook('displayHome')){ $this->registerHook('displayHome'); } dalej: public function hookDisplayHome($params) { if (!isset($this->prepared) || !$this->prepared) $this->_prepareHook($params); $this->prepared = true; $this->smarty->assign(array('id_module' => $this->id)); return $this->display(__FILE__, 'blocknewsletter_home.tpl'); } Dla testów skopiowałem domyślny szablon blocknewsletter.tpl, zapisałem pod nazwą blocknewsletter_home.tpl i trzymam w tej samej lokacji co domyślny czyli blocknewsletter\views\templates\hook Efekt dodania do nazwy pliku .tpl końcówki _home kończy się czymś takim: Wyświetla się HTML, nie wykonuje się kod PHP. użycie starej nazwy, bez końcówki _home działa prawidłowo: Zmiana nazwy pliku .tpl w przypadku domyślnego hook'a czyli hookDisplayLeftColumn powoduje to samo zachowanie. Czy ktoś doświadczony może zasugerować jakieś rozwiązanie? Zmiany nazw plików .tpl wymagają jakiegoś dodatkowego działania? Jeśli działa to znaczy że CSS jest przypisany do jakiejś klasy i dlatego nie wyświetla się tak samo. Zobacz w oryginale gdzie i jaki kod jest pod button i input i skopiuj go i ustaw dla nowego miejsca. Link to comment Share on other sites More sharing options...
limera1n Posted April 20, 2021 Author Share Posted April 20, 2021 4 hours ago, c64girl said: Jeśli działa to znaczy że CSS jest przypisany do jakiejś klasy i dlatego nie wyświetla się tak samo. Zobacz w oryginale gdzie i jaki kod jest pod button i input i skopiuj go i ustaw dla nowego miejsca. Wiesz w jaki sposób zmiana nazwy pliku .tpl może wpływać na zachowanie CSS na froncie? Link to comment Share on other sites More sharing options...
c64girl Posted April 20, 2021 Share Posted April 20, 2021 16 minutes ago, limera1n said: Wiesz w jaki sposób zmiana nazwy pliku .tpl może wpływać na zachowanie CSS na froncie? Jeśli formularz działa a jego tylko wygląd się zepsuł to jest to problem nie php ale css. Link to comment Share on other sites More sharing options...
limera1n Posted April 20, 2021 Author Share Posted April 20, 2021 (edited) Oprócz wyglądu nie "wykonują" się elementy silnika smarty, nie działają tłumaczenia, nie wywołał się hook GDPR (brak checkboxa pod inputem) tak wygląda cały kod szablonu blocknewsletter_home.tpl {* * 2007-2016 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 <contact@prestashop.com> * @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} <!-- Block Newsletter module--> <div id="newsletter_block_left" class="block"> <h4 class="title_block">{l s='Newsletter' mod='blocknewsletter'}</h4> <div class="block_content"> {if isset($msg) && $msg} <p class="{if $nw_error}warning_inline{else}success_inline{/if}">{$msg}</p> {/if} <form action="{$link->getPageLink('index', true)|escape:'html'}" method="post"> <p> <input class="inputNew" id="newsletter-input" type="text" name="email" size="18" value="{if isset($value) && $value}{$value}{else}{l s='your e-mail' mod='blocknewsletter'}{/if}" /> <input type="submit" value="ok" class="button_mini" name="submitNewsletter" /> {hook h='displayGDPRConsent' id_module=$id_module} <input type="hidden" name="action" value="0" /> </p> </form> </div> </div> <!-- /Block Newsletter module--> <script type="text/javascript"> var placeholder = "{l s='your e-mail' mod='blocknewsletter' js=1}"; {literal} $(document).ready(function() { $('#newsletter-input').on({ focus: function() { if ($(this).val() == placeholder) { $(this).val(''); } }, blur: function() { if ($(this).val() == '') { $(this).val(placeholder); } } }); }); {/literal} </script> W pliku blocknewsletter.php: return $this->display(__FILE__, 'blocknewsletter_home.tpl'); użycie nazwy blocknewsletter.tpl zamiast blocknewsletter_home.tpl naprawia problem i widok jest prawidłowy (oba pliki - blocknewsletter.tpl oraz blocknewsletter_home.tpl są takie same) Kompletnie nie mogę zrozumieć z czego wynika problem biorąc pod uwagę że zmienia się tylko nazwa pliku i nic poza tym error log jest pusty Edited April 20, 2021 by limera1n (see edit history) Link to comment Share on other sites More sharing options...
c64girl Posted April 20, 2021 Share Posted April 20, 2021 42 minutes ago, limera1n said: Oprócz wyglądu nie "wykonują" się elementy silnika smarty, nie działają tłumaczenia, nie wywołał się hook GDPR (brak checkboxa pod inputem) tak wygląda cały kod szablonu blocknewsletter_home.tpl {* * 2007-2016 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 <contact@prestashop.com> * @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} <!-- Block Newsletter module--> <div id="newsletter_block_left" class="block"> <h4 class="title_block">{l s='Newsletter' mod='blocknewsletter'}</h4> <div class="block_content"> {if isset($msg) && $msg} <p class="{if $nw_error}warning_inline{else}success_inline{/if}">{$msg}</p> {/if} <form action="{$link->getPageLink('index', true)|escape:'html'}" method="post"> <p> <input class="inputNew" id="newsletter-input" type="text" name="email" size="18" value="{if isset($value) && $value}{$value}{else}{l s='your e-mail' mod='blocknewsletter'}{/if}" /> <input type="submit" value="ok" class="button_mini" name="submitNewsletter" /> {hook h='displayGDPRConsent' id_module=$id_module} <input type="hidden" name="action" value="0" /> </p> </form> </div> </div> <!-- /Block Newsletter module--> <script type="text/javascript"> var placeholder = "{l s='your e-mail' mod='blocknewsletter' js=1}"; {literal} $(document).ready(function() { $('#newsletter-input').on({ focus: function() { if ($(this).val() == placeholder) { $(this).val(''); } }, blur: function() { if ($(this).val() == '') { $(this).val(placeholder); } } }); }); {/literal} </script> W pliku blocknewsletter.php: return $this->display(__FILE__, 'blocknewsletter_home.tpl'); użycie nazwy blocknewsletter.tpl zamiast blocknewsletter_home.tpl naprawia problem i widok jest prawidłowy (oba pliki - blocknewsletter.tpl oraz blocknewsletter_home.tpl są takie same) Kompletnie nie mogę zrozumieć z czego wynika problem biorąc pod uwagę że zmienia się tylko nazwa pliku i nic poza tym error log jest pusty Naciśnij prawy przycisk myszy na guziku lub inpucie i wybierz zbadaj. Zobacz jakie klasy ma przycisk i input spisz sobie je lub zrób zrzut ekranu. Zobacz potem z _home jeśli klasa np. zmieni się z blocknewsletter na blocknewsletter_home to będzie oznaczało że ta linijka odpowiada też za klasę CSS i musisz dodać lub zmienić w CSS klasę by się to wyświetlało dobrze. Zobacz też zamiast blocknewsletter_home to blocknewsletterhome 1 Link to comment Share on other sites More sharing options...
limera1n Posted April 20, 2021 Author Share Posted April 20, 2021 30 minutes ago, c64girl said: Naciśnij prawy przycisk myszy na guziku lub inpucie i wybierz zbadaj. Zobacz jakie klasy ma przycisk i input spisz sobie je lub zrób zrzut ekranu. Zobacz potem z _home jeśli klasa np. zmieni się z blocknewsletter na blocknewsletter_home to będzie oznaczało że ta linijka odpowiada też za klasę CSS i musisz dodać lub zmienić w CSS klasę by się to wyświetlało dobrze. Zobacz też zamiast blocknewsletter_home to blocknewsletterhome Problem namierzony, jak zwykle oczywiste przeoczenie. Okazało się że kopiowałem zły plik .tpl Kopiowałem plik z modułu który jest "łysy" zamiast plik .tpl z szablonu który ma podstawowe style i JS. Presta prawidłowo wyświetlała szablon który był po prostu nieostylowany. Twoja prośba o sprawdzenie kodu wynikowego mnie na to naprowadziła, dzięki, zamykam Link to comment Share on other sites More sharing options...
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