• Кикотене

    • Обяви

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

    Щрихи

    Въвеждане

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

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

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

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

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

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

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

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

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

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

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

    Ние можем да използваме за конфигуриране:: () функцията за извличане на текущите настройки от базата данни, и инструменти:: 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"> "$ това-> л (' Обновяването на настройките').'</ DIV> ';
    	 }
    

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

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

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

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

    Работа с други видове поле

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

    За задължително настройки също трябва да тест за присъствието им в инсталирате функция и да предприемат подходящи действия за предотвратяване на вашия модул, причиняват грешки в Front 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

    Категории: Уроци