• 叽叽喳喳

    • 广告

    写你自己的Prestashop模块-第5部分

    收尾

    介绍

    在此,我们的基本模块写作系列教程的最后一部分,我们将看看在最后的步骤,转换成一个基本模板,我们可以用它来启动新的模块的写作我们Tutorialthird模块类。 而不是再重新相同的旧代码,我们将只讨论修改,但我添加了一个下载链接在这部分结束,所以你可以抓住最后的代码,并用它作为自己的项目的基础上。 我们要调用此模块的“骨架” - 一个名字,我们将用我们自己的替换,当它涉及到在此基础​​上产生新的模块。

    样式的配置形式

    我们要作出的第一个变化是纯粹的化妆品,然而,这是一个重要因素,因为我们要为我们的用户提供一个一致的界面。 我们的表单代码看上去就像:

    	私有函数_displayForm()
    	 {
    		 $> _html。“
    		 <form action="'.$_SERVER['REQUEST_URI'].'" method="post">
    				 <label>的“。$> L(”信息世界“)。”</标签>
    				 <div class="margin-form">
    
    					 <input type="text" name="our_message" />
    				 </ DIV>
    				 <input type="submit" name="submit" value="'.$this-> L(“更新”)。“=”按钮“/>
    
    		 </ FORM>';
    	 }
    

    这些配置屏幕公约“是包裹在一个字段的设置,我们还需要添加一个漂亮的友好(翻译)传说图标完整。 现在我们的代码看起来像这样:

    	私有函数_displayForm()
    	 {
    		 $> _html。“
    		 <form action="'.$_SERVER['REQUEST_URI'].'" method="post">
    
    			 <fieldset>
    				 <legend> <img src="../img/admin/cog.gif" alt="" class="middle" />'$> L(“设置”)。“</传奇>
    
    				 <label>的“。$> L(”信息世界“)。”</标签>
    				 <div class="margin-form">
    					 <input type="text" name="our_message" />
    
    				 </ DIV>
    			 <input type="submit" name="submit" value="'.$this-> L(“更新”)。“=”按钮“/>
    
    			 </的fieldset>
    		 </ FORM>';
    	 }
    

    我们最终的化妆品的变化是在我们的设置屏幕的上方添加一个标题,以防万一用户忘记他们在哪里! 我们做的getContent()函数的开始处加入下面一行:

     $  - > _html ='<H2>'$> </ H2的displayName'>'。;
    

    预填充配置表单域

    另一个从我们原来的教学设计中缺少的元素是在模块配置的形式显示当前设置,甚至更新的值字段的形式回报时是空白的,所以我们需要修复这个故障。 我们需要处理的有两种可能性:

    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>”。;
    	 }
    

    处理其他字段类型

    在最终的骨架模块下载,我还添加了其他类型的领域,将作为有用的快捷键来创建你的模块配置形式的例子。 这包括复选框,单选按钮,textarea的下拉列表。 所有你需要做的是添加/重命名字段,添加需要_pos​​tValidation()函数的任何验证,并适当修改更新代码在_postProcess()函数。

    强制设置,你也应该为他们安装功能测试,并采取适当行动,以防止你的模块,通过设置适当的默认配置:: updateValue()函数,在接待处,如造成错误。 或者这可以在模块构造,虽然它是更正确的内执行安装()。

    添加多个显示位置挂钩

    ,我们Tutorialthird模块可能只在左栏显示我们的内容,因为这是我们实施只钩。 幸运的是,它很容易在我们的代码实施的“移植后台功能模块”。 最简单的形式中,我们将在所有国家和地区使用相同的输出,但如果需要,所有这些额外的钩子,可以产生不同的结果。

    在所有流行的位置来产生相同的输出,我们只需要执行额外的钩子函数在我们的模块,并调用原来的钩子代码来生成输出。 请注意,我们实际上只调用registerHook()默认安装()成员函数,让我们回到办公室处理其他登记。

    	功能hookRightColumn(美元的params)
    	 {
    		 $-> hookLeftColumn(参数);
    	 }
    
    	的功能hookTop(美元的params)
    	 {
    		 $-> hookLeftColumn(参数);
    	 }
    
    	 ,功能hookHome(美元的params)
    	 {
    		 $-> hookLeftColumn(参数);
    	 }
    
    	的功能hookFooter(美元的params)
    	 {
    		 $-> hookLeftColumn(参数);
    	 }
    

    总结

    在这一系列文章,您应该已经学会如何基本模块系统工作中的Prestashop能够代码模块提供输出不同的演示区在接待办公室。 你也有一个很好的代码框架,根据自己的模块。 你可能已经注意到,在任何时候,我们实际使用SMARTY在创造我们的模块或模板文件 - 这是故意的,因为它们可以作为一个独立的模块设计本身实体。

    Smarty是高度灵活的,但选择使用它的因素很多,和性能方面的原因,最好是避免其使用,如果在所有可能的基础。 以后的文章将探讨如何以及何时使用,以提高您的模块的功能,虽然醒目,因为它是一个基本的Prestashop架构的一部分。

    您可以使用下面的链接下载完整的骨架模块代码:

    骨架v0.1.0

    分类: 教程