• Кикотене

    • Обяви

    Писането на собствени PrestaShop Модул - част 5

    Email

    Финалните щрихи

    Въвеждане

    В заключителната част на основния модул серия писмено урок ние ще разгледаме последните стъпки, за да трансформира нашия Tutorialthird клас модул в шаблона на база, че можем да използваме, за да даде писането на нови модули. Вместо да се преиздава същия стар код отново ще обсъждаме само промените, но аз съм добавил линк за сваляне в края на тази част, така че можете да вземете окончателното кода и да го използват като основа за вашите собствени проекти. Ние ще наричаме този модул "скелета" - име, че ще замени с нашата собствена, когато става въпрос за производство на нови модули, базирани на нея.

    Стайлинг на формуляра за конфигурация

    Първите промени, ние ще направим, са чисто козметични, но това е един важен елемент, тъй като ние искаме да се осигури последователен интерфейс за нашите потребители. Нашата форма код изглеждаше като:

    	 частни функция _displayForm ()
    	 {
    		 $> _html. = '
    		 <form action="'.$_SERVER['REQUEST_URI'].'" method="post">
    				 <"$ това-> L (" Послание към света ")." </ етикет>
    				 <div class="margin-form">
    
    					 <input type="text" name="our_message" />
    				 </ Div>
    				 <input type="submit" name="submit" value="'.$this-> л ("UPDATE"). "клас =" бутон "/>
    
    		 </ Форма> ';
    	 }
    

    Конвенцията за тези конфигурационни екрани е да приключи настройките в един fieldset, и ние ще трябва да добавите хубав приятелски (превод) легенда, пълна с икони. Нашата код сега ще изглежда така:

    	 частни функция _displayForm ()
    	 {
    		 $> _html. = '
    		 <form action="'.$_SERVER['REQUEST_URI'].'" method="post">
    
    			 <fieldset>
    				 <legend> <img src="../img/admin/cog.gif" alt="" class="middle" /> ". $ това-> L (" Настройки ")." </ легенда>
    
    				 <"$ това-> L (" Послание към света ")." </ етикет>
    				 <div class="margin-form">
    					 <input type="text" name="our_message" />
    
    				 </ Div>
    			 <input type="submit" name="submit" value="'.$this-> л ("UPDATE"). "клас =" бутон "/>
    
    			 </ Fieldset>
    		 </ Форма> ';
    	 }
    

    Нашият последен козметична промяна е да добавите заглавие в горната част на нашата екрана с настройки само в случай, че потребителят е забравил, къде са те! Ние правим това чрез добавяне на следния ред в началото на функцията на getContent ():

     $ Това-> _html = '<h2>' $ това-> DisplayName "</ h2>"..;
    

    Предварително населяващи поле на форма на конфигурация

    Друг липсващ елемент от първоначалното ни урок дизайн е показване на текущите настройки под формата на модул конфигурация, и дори когато формулярът се връща от актуализиране на стойностите полетата са празни, така че ние трябва да се определи този бъг. Има две възможности, които ние трябва да се справят:

    1. Първоначално показване на формата трябва да покажете текущата конфигурация (ако има)
    2. След актуализация форма, ние трябва да покаже данни, въведени от потребителя

    Ние можем да използваме за конфигуриране :: get () функцията за извличане на текущите настройки от базата данни, и Инструменти :: getValue на (), за да получите съдържанието на полетата. Инструменти :: getValue () функция отнема Вторият параметър, който е полезен в този контекст, тъй като това определя "по подразбиране", за да се използват, трябва да бъде празно полето. Сега можем да зададете атрибут "стойност" на нашия принос тагове, подходящо използване на тези две функции, така че крайната ни код за въвеждане на форма ще бъде:

     <input type="text" name="our_message" value="'.Tools::getValue('our_message', Configuration::get($this-> име. _message "))." />
    

    Друга полезна промяна да се направи, когато се занимават с няколко области, в конфигурация, за да преместите код база данни за актуализация на собствен частен функция. За това ние ще ги заменим този ред:

    
     ако (! sizeof ($ това-> _postErrors))
    	 {
    		 Конфигурация :: updateValue ($ това-> името "_message", Инструменти :: getValue ("our_message"), вярно.);
    		 $ Това-> _html = '<div class="conf confirm"> "$ това-> L (' Обновяването на настройките") </ div> '.;
    	 }
    

    със следния текст:

     ако (! sizeof ($ това-> _postErrors))
    	 $-> _postProcess ();
    

    И ние добавите нов частен функция член на нашия клас, за да се справят с реалните актуализации в едно, лесно идентифицирани място:

    	 лично функция _postProcess ()
    	 {
    		 Конфигурация :: updateValue ($ това-> името "_message", Инструменти :: getValue ("our_message"), вярно.);
    
    		 $ Това-> _html = '<div class="conf confirm"> "$ това-> L (' Обновяването на настройките") </ div> '.;
    	 }
    

    Манипулиране с други видове полета

    В окончателното изтегляне на скелета модул аз също добавят примери на други видове полета, които ще действат като полезни клавишни комбинации за създаване конфигурационния форма модул. Това покрива квадратчетата, радио бутони, текстовото поле и падащите списъци. Всичко, което трябва да направите, е да добавите / преименувате полетата, добави всяка валидиране, изисква да функцията на _postValidation () и промените актуализацията кода на _postProcess,, () функцията по подходящ начин.

    За задължителните настройки трябва също така да проверите за присъствието им в инсталационния функция и да предприемат подходящи действия, за да се предотврати модул причинява грешки в Office фронт, например чрез създаване на подходящи по подразбиране, като използвате Асистента :: updateValue () функцията. Алтернативно това може да се извършва в модула конструктор, въпреки че е по-правилно да извърши това в рамките инсталирате ().

    Добавянето на няколко монитора Местоположение куки

    Нашата Tutorialthird модул може да показва само съдържанието на сайта в лявата колона, тъй като това е само кука, реализирахме. За щастие това е много лесна за изпълнение "трансплантации модул" функционалност BackOffice в нашия код. В най-простата форма, ние просто ще използват една и съща мощност на всички места, но ако е необходимо всички тези допълнителни куки може да доведе до различни резултати.

    За да е същият както при всички популярни места, ние просто трябва да се приложат допълнителни функции кука в нашия модул и се обадете на оригиналния код на куката, за да генерира изход. Имайте предвид, че само действително се обадите registerHook () за една по подразбиране в инсталацията () член функция, и нека бек-офиса се справят с регистрацията на останалите.

    	 Без функция hookRightColumn ($ params)
    	 {
    		 върне $ този> hookLeftColumn ($ params);
    	 }
    
    	 на функционални hookTop $ params)
    	 {
    		 върне $ този> hookLeftColumn ($ params);
    	 }
    
    	 за функция hookHome ($ params)
    	 {
    		 върне $ този> hookLeftColumn ($ params);
    	 }
    
    	 на функция hookFooter ($ params)
    	 {
    		 върне $ този> hookLeftColumn ($ params);
    	 }
    

    Обобщение

    През тази поредица от статии трябва да са се научили как основният системен модул работи в на PrestaShop и да е в състояние да модулите с кодове, които доставят продукция за различните области на презентация в звеното. Вие също ще имате добра рамка код, за да се базира на собствени модули. Може би сте забелязали, че в нито един момент не сме действително се използва Smarty или шаблонни файлове в създаването на нашия модул - това е умишлено, тъй като те може да се разглежда като отделна единица от самия модул.

    Smarty е изключително гъвкава, но избора да го използвате, се основава на много фактори и съображения за изпълнение, е най-добре да се избегне използването му, ако изобщо е възможно. Късно статия ще проучи как и кога да използват Smarty да подобри вашето модули функционалност обаче, тъй като това е основна част от PrestaShop архитектура.

    Можете да изтеглите пълния код скелет модул, като използвате линка по-долу:

    Skeleton v0.1.0

    Категории: Ръководства по