work.steve Posted July 12, 2017 Share Posted July 12, 2017 Witam Nie rozumiem jak dokładnie działa Presta 1.6. Umyka mi kilka elementów których nie moge zlokalizować. Chce przytoczyć jeden przykład resztę mam nadzieje bede ktok po kroku rozpracowywał ręcznie analogicznie do tego Aha jeszcze jedno, generalnie radze Sobie z całym zakresem potrzebnym - Tylko to Smarty jest troche nowością no i słaby z JS`ów jestem ale to sie nie przyda akurat tu do sedna - presta 1.6 - szablon: bootstrap_defaoultCo bym marzył Sobie zrobić ... Ikonki mediów społecznościowych dać koło Loga i potem je edytować... a wiec tak w szablonie w modułach mam bloksocial.tpl <- ten plik rozumiem mam też plik footer.tpl w nim jest coś takiego jak zaczem $HOOK_FOOTER <- czyli wyświetlenie całej stopki i teraz ja chce z tego $hook_footer wyrwać tylko bloksocial i to przenieść do $HOOK_TOP najlepiej w miejsce gdzie teraz jest blokserch_top.tpl ...Nie da sie tego amienić z poziomu zmiany pozycji w panelu adminaAle tak podsumowująć, gdzie dokładnie leży mój brak --- Otóż xDDw którym miejscu, jaki plik jest odpowiedzialny ze $HOOK_FOOTER wyświetla w Sobie pare innych modółów dla przykładu bloksocial.tpl newsletter.tpl itd, itdJak przemieszczać te moduły miedzy tymi zaczepami Dzieki za odpowiedz z góry, odnosze wrażenie ze jest to moja ostatnia niewiadoma w Presta Pozdrawiam Link to comment Share on other sites More sharing options...
endriu107 Posted July 12, 2017 Share Posted July 12, 2017 Moduły posiadają hooki, ich obsługa jest napisana w głównych kontrolerach modułów. Jeśli moduł posiada napisaną obsługę danego hooka to można go tam przenieść, jeśli nie to należy dopisać taką obsługę. Można również wywoływać tylko konkretne moduły z danego hooka dodając mod='nazwa_modulu'. Link to comment Share on other sites More sharing options...
work.steve Posted July 12, 2017 Author Share Posted July 12, 2017 (edited) Dzieki za Odpowiedz, ale walcze z Tym tydzień i tak szczerze mówiąc wiem o tym co powiedziałeś w pierwszej części ... o wywołaniu jednego modułu nie wiedziałem Tylko, wytłumasz mi tak łopatologicznie, jedna konkretna ścieżka ... gdzie jest kontroler modułu bloksocial i jak wygląda linijka kodu która pozwala go przyczepić do $HOOK_FOOTER (bo analogicznie bedzie wyglądała dla $HOOK_HEADER itp ?? ) Dzieki Edited July 12, 2017 by work.steve (see edit history) Link to comment Share on other sites More sharing options...
endriu107 Posted July 12, 2017 Share Posted July 12, 2017 Kontroler modułu bloksocial jest w modules/blocksocial/ a w nim w funkcji install masz rejestracje hooka: $this->registerHook('displayFooter')); i to co ma wyświetlać: public function hookDisplayFooter() { if (!$this->isCached('blocksocial.tpl', $this->getCacheId())) $this->smarty->assign(array( 'facebook_url' => Configuration::get('BLOCKSOCIAL_FACEBOOK'), 'twitter_url' => Configuration::get('BLOCKSOCIAL_TWITTER'), 'rss_url' => Configuration::get('BLOCKSOCIAL_RSS'), 'youtube_url' => Configuration::get('BLOCKSOCIAL_YOUTUBE'), 'google_plus_url' => Configuration::get('BLOCKSOCIAL_GOOGLE_PLUS'), 'pinterest_url' => Configuration::get('BLOCKSOCIAL_PINTEREST'), 'vimeo_url' => Configuration::get('BLOCKSOCIAL_VIMEO'), 'instagram_url' => Configuration::get('BLOCKSOCIAL_INSTAGRAM'), )); return $this->display(__FILE__, 'blocksocial.tpl', $this->getCacheId()); } Link to comment Share on other sites More sharing options...
work.steve Posted July 12, 2017 Author Share Posted July 12, 2017 Dzięki bardzo, to duża podpowiedz dla mnie, mam nadzieje ze jeszcze kiedyś mi sie przyda tyle ze...U mnie w kontrolerze okazało sie ze mam i displayHeader i displayFooter, ale w panelu administratora nie moge przenieść tego elementu pod inny zaczep, komunikat ze wszystko ok ale nie ma żadnych zmian < -- to problem ... ale mam jeszcze p[ytanie, przy eksportowaniu szablonu i importowaniu na innej Preście kontrolery zostaną nadpisane? jeżeli nie to jest gdzieś miejsce na kopie tego kontrolera zeby wyeksportowała sie jego nowa werrsja?? Link to comment Share on other sites More sharing options...
endriu107 Posted July 12, 2017 Share Posted July 12, 2017 U mnie w kontrolerze okazało sie ze mam i displayHeader i displayFooter, ale w panelu administratora nie moge przenieść tego elementu pod inny zaczep, komunikat ze wszystko ok ale nie ma żadnych zmian < -- to problem Pod inny zaczep czyli jaki? przy eksportowaniu szablonu i importowaniu na innej Preście kontrolery zostaną nadpisane? Kontrolery modułów tak o ile szablon zawiera te moduły, w innym wypadku nie. Link to comment Share on other sites More sharing options...
work.steve Posted July 12, 2017 Author Share Posted July 12, 2017 (edited) 1. Dla bloku blokSocial - nazwany w Panelu administracyjnym Blok Społecznościowy mam do wyborudisplayFooter Header (pages html head section) < - Po przeniesieniu w to miejsce nie wyświetla sie Edytar połączony przez ftp nie wywalił też zadnej zmiany w pliku header.tpl < - na moja logike powinny być tu jakieś zmiany ... czy Nie ?? Edited July 12, 2017 by work.steve (see edit history) Link to comment Share on other sites More sharing options...
endriu107 Posted July 12, 2017 Share Posted July 12, 2017 A co robi ten hook? Link to comment Share on other sites More sharing options...
work.steve Posted July 12, 2017 Author Share Posted July 12, 2017 Nie wiem czy dobrze rozumiem pytanie, jaki hook??Jeżeli chodzi o tego Header to w moim przypadku - Wyświetla Logo - Wyszukiwarke (która po odczepieniu nie znikneła, tylko jakby straciła kontakt z css bo nie jest ostylowana jak kiedyś, ale szczętki po niej zostały)- Koszyk- Menu w pozycjach w PA jest jeszcze - Wspominany Blok społecznościowy który sie nie wyświetla- Dodatkowo to samo zrobiłem z Newsletterem który też sie nie wyświetlaPS. W footer sie wyświetlają, przeniose do header nie ma ich nigdzie, przy badaniu kodu strony nie ma po nich sladu Link to comment Share on other sites More sharing options...
endriu107 Posted July 12, 2017 Share Posted July 12, 2017 Nie czytasz ze zrozumieniem tego co piszę... a pisałem co robi hook footer więc analogicznie należy sprawdzić co robi header. Generalnie hook dispalyHeader służy do ładowania rzeczy w sekcji <head>, jeśli masz podstawy html wiesz do czego służy owa sekcja, a ty chcesz wyświetlić coś w sekcji <body>. Link to comment Share on other sites More sharing options...
work.steve Posted July 12, 2017 Author Share Posted July 12, 2017 Pogubiłem sie strasznie ... znam HTML Może zacznijmy od początku. powiedz gdzie myśle dobrze, a gdzie sie gumie 1. W Szablonie mamy dwa plikiheader.tpl i footer.tpl - te pliki generalnie tworzą nam szkielet strony, co dziwne całej strony (przy pierwszym kontakcie szukałem trzeciego pliku pomiędzy)2. Generalnie te dwa pliki szablonów dają nanm:*** Sekcje Head o której przed chwilą wspomniałeś, tam są wszystkie meta dane namiary na css, scripty itp < - Tu nie chce nic dodawać bo wiem ze to sie nie wyświerla*** Dalej Mamy Całą sekcje BODY w której jest div="page" W nim class="header-container" a w nim Sekcja <HEADER id="header" ... i to tutaj jest logo, nawigacja itp, i tez tutaj chce dodać ikony mediów społecznościowych, *** Dalej column_container itp itp - to nie wżne 3. Kontroler do Bloku mediów Społecznościowych wyglada tak i co najważniejsze nie zmieniłem w nim ani literki - wiec dlaczego sie działają te media w displayHeaderdodam jeszcze ze wszystko jest na czystej, nowo postawionej preście bo juz stwierdziłem, że może ja cos gdzieś namieszałem Ale nie, czysta Presta, pierwsze zadanie, Przenieść Blok społecznościowy tam gdzie koszyk itp - Nie widać go :[spam-filter]{ if (!defined('_CAN_LOAD_FILES_')) exit; class blocksocial extends Module { public function __construct() { $this->name = 'blocksocial'; $this->tab = 'front_office_features'; $this->version = '1.2.2'; $this->author = 'PrestaShop'; $this->bootstrap = true; parent::__construct(); $this->displayName = $this->l('Social networking block'); $this->description = $this->l('Allows you to add information about your brand\'s social networking accounts.'); $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.6.99.99'); } public function install() { return (parent::install() AND Configuration::updateValue('BLOCKSOCIAL_FACEBOOK', '') && Configuration::updateValue('BLOCKSOCIAL_TWITTER', '') && Configuration::updateValue('BLOCKSOCIAL_RSS', '') && Configuration::updateValue('BLOCKSOCIAL_YOUTUBE', '') && Configuration::updateValue('BLOCKSOCIAL_GOOGLE_PLUS', '') && Configuration::updateValue('BLOCKSOCIAL_PINTEREST', '') && Configuration::updateValue('BLOCKSOCIAL_VIMEO', '') && Configuration::updateValue('BLOCKSOCIAL_INSTAGRAM', '') && $this->registerHook('displayHeader') && $this->registerHook('displayFooter')); } public function uninstall() { //Delete configuration return (Configuration::deleteByName('BLOCKSOCIAL_FACEBOOK') AND Configuration::deleteByName('BLOCKSOCIAL_TWITTER') AND Configuration::deleteByName('BLOCKSOCIAL_RSS') AND Configuration::deleteByName('BLOCKSOCIAL_YOUTUBE') AND Configuration::deleteByName('BLOCKSOCIAL_GOOGLE_PLUS') AND Configuration::deleteByName('BLOCKSOCIAL_PINTEREST') AND Configuration::deleteByName('BLOCKSOCIAL_VIMEO') AND Configuration::deleteByName('BLOCKSOCIAL_INSTAGRAM') AND parent::uninstall()); } public function getContent() { // If we try to update the settings $output = ''; if (Tools::isSubmit('submitModule')) { Configuration::updateValue('BLOCKSOCIAL_FACEBOOK', Tools::getValue('blocksocial_facebook', '')); Configuration::updateValue('BLOCKSOCIAL_TWITTER', Tools::getValue('blocksocial_twitter', '')); Configuration::updateValue('BLOCKSOCIAL_RSS', Tools::getValue('blocksocial_rss', '')); Configuration::updateValue('BLOCKSOCIAL_YOUTUBE', Tools::getValue('blocksocial_youtube', '')); Configuration::updateValue('BLOCKSOCIAL_GOOGLE_PLUS', Tools::getValue('blocksocial_google_plus', '')); Configuration::updateValue('BLOCKSOCIAL_PINTEREST', Tools::getValue('blocksocial_pinterest', '')); Configuration::updateValue('BLOCKSOCIAL_VIMEO', Tools::getValue('blocksocial_vimeo', '')); Configuration::updateValue('BLOCKSOCIAL_INSTAGRAM', Tools::getValue('blocksocial_instagram', '')); $this->_clearCache('blocksocial.tpl'); Tools::redirectAdmin($this->context->link->getAdminLink('AdminModules').'&configure='.$this->name.'&tab_module='.$this->tab.'&conf=4&module_name='.$this->name); } return $output.$this->renderForm(); } public function hookDisplayHeader() { $this->context->controller->addCSS(($this->_path).'blocksocial.css', 'all'); } public function hookDisplayFooter() { if (!$this->isCached('blocksocial.tpl', $this->getCacheId())) $this->smarty->assign(array( 'facebook_url' => Configuration::get('BLOCKSOCIAL_FACEBOOK'), 'twitter_url' => Configuration::get('BLOCKSOCIAL_TWITTER'), 'rss_url' => Configuration::get('BLOCKSOCIAL_RSS'), 'youtube_url' => Configuration::get('BLOCKSOCIAL_YOUTUBE'), 'google_plus_url' => Configuration::get('BLOCKSOCIAL_GOOGLE_PLUS'), 'pinterest_url' => Configuration::get('BLOCKSOCIAL_PINTEREST'), 'vimeo_url' => Configuration::get('BLOCKSOCIAL_VIMEO'), 'instagram_url' => Configuration::get('BLOCKSOCIAL_INSTAGRAM'), )); return $this->display(__FILE__, 'blocksocial.tpl', $this->getCacheId()); } public function renderForm() { $fields_form = array( 'form' => array( 'legend' => array( 'title' => $this->l('Settings'), 'icon' => 'icon-cogs' ), 'input' => array( array( 'type' => 'text', 'label' => $this->l('Facebook URL'), 'name' => 'blocksocial_facebook', 'desc' => $this->l('Your Facebook fan page.'), ), array( 'type' => 'text', 'label' => $this->l('Twitter URL'), 'name' => 'blocksocial_twitter', 'desc' => $this->l('Your official Twitter account.'), ), array( 'type' => 'text', 'label' => $this->l('RSS URL'), 'name' => 'blocksocial_rss', 'desc' => $this->l('The RSS feed of your choice (your blog, your store, etc.).'), ), array( 'type' => 'text', 'label' => $this->l('YouTube URL'), 'name' => 'blocksocial_youtube', 'desc' => $this->l('Your official YouTube account.'), ), array( 'type' => 'text', 'label' => $this->l('Google+ URL:'), 'name' => 'blocksocial_google_plus', 'desc' => $this->l('Your official Google+ page.'), ), array( 'type' => 'text', 'label' => $this->l('Pinterest URL:'), 'name' => 'blocksocial_pinterest', 'desc' => $this->l('Your official Pinterest account.'), ), array( 'type' => 'text', 'label' => $this->l('Vimeo URL:'), 'name' => 'blocksocial_vimeo', 'desc' => $this->l('Your official Vimeo account.'), ), array( 'type' => 'text', 'label' => $this->l('Instagram URL:'), 'name' => 'blocksocial_instagram', 'desc' => $this->l('Your official Instagram account.'), ), ), 'submit' => array( 'title' => $this->l('Save'), ) ), ); $helper = new HelperForm(); $helper->show_toolbar = false; $helper->table = $this->table; $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); $helper->default_form_language = $lang->id; $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; $helper->identifier = $this->identifier; $helper->submit_action = 'submitModule'; $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name; $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->tpl_vars = array( 'fields_value' => $this->getConfigFieldsValues(), 'languages' => $this->context->controller->getLanguages(), 'id_language' => $this->context->language->id ); return $helper->generateForm(array($fields_form)); } public function getConfigFieldsValues() { return array( 'blocksocial_facebook' => Tools::getValue('blocksocial_facebook', Configuration::get('BLOCKSOCIAL_FACEBOOK')), 'blocksocial_twitter' => Tools::getValue('blocksocial_twitter', Configuration::get('BLOCKSOCIAL_TWITTER')), 'blocksocial_rss' => Tools::getValue('blocksocial_rss', Configuration::get('BLOCKSOCIAL_RSS')), 'blocksocial_youtube' => Tools::getValue('blocksocial_youtube', Configuration::get('BLOCKSOCIAL_YOUTUBE')), 'blocksocial_google_plus' => Tools::getValue('blocksocial_google_plus', Configuration::get('BLOCKSOCIAL_GOOGLE_PLUS')), 'blocksocial_pinterest' => Tools::getValue('blocksocial_pinterest', Configuration::get('BLOCKSOCIAL_PINTEREST')), 'blocksocial_vimeo' => Tools::getValue('blocksocial_vimeo', Configuration::get('BLOCKSOCIAL_VIMEO')), 'blocksocial_instagram' => Tools::getValue('blocksocial_instagram', Configuration::get('BLOCKSOCIAL_INSTAGRAM')), ); } } Link to comment Share on other sites More sharing options...
vekia Posted July 12, 2017 Share Posted July 12, 2017 trzeba zacząc od tego co rozumiesz przez "nie działają te media", nie działają tzn. plik nie jest dołączony w sekcji <head> sklepu ? z tego: Ale nie, czysta Presta, pierwsze zadanie, Przenieść Blok społecznościowy tam gdzie koszyk itp - Nie widać go oraz z przedstawionego kodu wynika, że oczekujesz wyświetlić linki społecznościowe - nie zostało zrobione nic aby umieścić moduł w tym miejscu. dodatkowo najprawdopodobniej liczysz, żę pojawią się one w displayHeader. Jak już zostało wspomniane - displayHeader: w tym module ładuje wyłacznie plik css, nie ma tam żadnej funkcji wyświetlania jakichkolwiek treści. Link to comment Share on other sites More sharing options...
atomek Posted July 13, 2017 Share Posted July 13, 2017 Za "wyświetlanie" - czyli dodanie styli css i skryptów do sekcji <head> .. </head/) odpowiedzialna jest funkcja public function hookDisplayHeader() { $this->context->controller->addCSS(($this->_path).'blocksocial.css', 'all'); } wynikiem jej działania będzie dodanie do sekcji head wpisu: <link rel="stylesheet" href="/themes/default-bootstrap/css/modules/blocksocial/blocksocial.css" type="text/css" media="all" /> Jeżeli chcesz wyświetlić moduł blocksocial (kod html tego modułu) w nagłówku strony tam gdzie znajduje się koszyk, musiasz w module utworzyć funkcje hookDisplayTop() np. w ten sposób: public function hookDisplayTop() { return $this->hookDisplayFooter(); } Standardowo blok koszyka jest wyświetlany w tym hook'u (displayTop).Samo utworzenie funkcji nie spowoduje wyświetlanie bloku społecznościowego w tym hook'u, należy jeszcze przenieść ten moduł to tego hook'a (Moduły->Pozycje->Przemieszczenie modułu).Jeżeli chcesz żeby ten moduł był automatycznie dołączany do hook'a displayTop musisz do funkcji install dodać $this->registerHook('displayTop')) - będzie to wymagało zresetowania modułu (ponownej instalacji) 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