A. php标签在smarty里面不能使用,怎么办
smarty本身是不推荐使用php标记的仿毕销,备游可以通过编写插件(block,function,modifier)来代替。
smarty默认不开启php标记,需要在创建smarty对象后做数丛如下设置:
$smarty->php_handling = SMARTY_PHP_ALLOW ;
B. 我安装了apache,mysql,phpadmin,smarty还有php5.2.5配置也配好了,可我还是不知道用什么编写php文件。。。
apache:web服务器,用来响应浏览器的请求,比如说你在浏览器里输入www..com,首先就是这个web服务器来接受你的请求。
mysql:数据库,用来存储数据,做数据支撑。
phpadmin:mysql数据库web管理程序。
smarty:比较流行和成熟的模板框架,看楼主的水平,暂时这个还用不上的!
php5.2.5:是php代码的解释器,因为php是脚本级别的,他的每行代码都需要有解释器来解释其含义,然后执行。5.2.5是解释器的版本号。
如何编写代码?
首先确定你的环境搭建成功,然后进入到apache文件夹下,有个htdocs文件夹,在里面添加后缀名为php的文件,文件里添加php代码,就可以在本地进行代码测试了,测试方法是,在浏览器输入localhost:80,此处80是apache的默认端口号,需根据apache具体设置决定。
编写代码工具?
新手推荐使用editplus,一款比较轻巧的编辑器,不支持代码自动完成,有利于初期的学习。
有问题可以问我!
C. PHP中的smarty模板的smarty_block如何使用
你可以研究研究 Block Functions块函数 void smarty_block_ name (array $params, mixed $content, object &$smarty) Block functions are functions of the form: {func} .. {/func}. In other words, they enclose a template block and operate on the contents of this block. Block functions take precedence over custom functions of the same name, that is, you cannot have both custom function {func} and block function {func} .. {/func}.
块函数的形式是这样的:{func} .. {/func}。换句话说,他们用标记圈起一个块,然后对这个块的内容进行操作。块函数优先于同名的传统函数,即你不能同时有通明的传统函数{func}和块函数{func} .. {/func}。 By default your function implementation is called twice by Smarty: once for the opening tag, and once for the closing tag (see &$repeat below how to change this).
默认地你的函数执行被Smarty调用两次:一次是在开始标记,另一次是在结束标记(参考下面的&$repeat怎样改变这种情况) Only the opening tag of the block function may have attributes. All attributes passed to template functions from the template are contained in the $params as an associative array. You can either access those values directly, e.g. $params['start'] or use extract($params) to import them into the symbol table. The opening tag attributes are also accessible to your function when processing the closing tag.
块函数仅开始标记可以有属性。所有从模板传替给模板函数的属性被囊括与一个集合数组参数中。你可以直接获取其值,例如:$params['start']或者是用extract($params)将它们导入符号表中。当处理结束标记时,开始标记的属性对你的函数也是可用的。 The value of $content variable depends on whether your function is called for the opening or closing tag. In case of the opening tag, it will be null, and in case of the closing tag it will be the contents of the template block. Note that the template block will have already been processed by Smarty, so all you will receive is the template output, not the template source.
变量 $content 的值取决于是否因开始标记或结束标记调用你的函数。假如是开始标记,它会是空的,如果是结束标记,它会是模板块的内容。请注意模板块已经被Smarty处理,所以你接收到的结果是输出后的模板而不是原样模板。 The parameter &$repeat is passed by reference to the function implementation and provides a possibility for it to control how many times the block is displayed. By default $repeat is true at the first call of the block-function (the block opening tag) and false on all subsequent calls to the block function (the block's closing tag). Each time the function implementation returns with &$repeat being true, the contents between {func} .. {/func} are evaluated and the function implementation is called again with the new block contents in the parameter $content .
参数 &$repeat 通过参考引用传递给函数执行过程并为其提供一个可能值来控制显示块多少遍。默认情况下在首次调用块函数(块开始标记)时变量 $repeat 是真,在随后的所有块函数调用中其始终是假。每当函数执行返回的 &$repeat 是真时,在{func} .. {/func}之间的内容再次求值,函数执行接收一个新块参数 $content 内容值被再次调用。 If you have nested block functions, it's possible to find out what the parent block function is by accessing $smarty->_tag_stack variable. Just do a var_mp() on it and the structure should be apparent.
如果你嵌套了块函数,通过访问变量$smarty->_tag_stack 找出父块函数是可能的。仅仅对块函数运行一下var_mp(),函数结构就会一目了然了。 See also: register_block(), unregister_block(). Example 16-5. block function <?php /* * Smarty plugin * ------------------------------------------------------------- * File: block.translate.php * Type: block * Name: translate * Purpose: translate a block of text * ------------------------------------------------------------- */ function smarty_block_translate($params, $content, &$smarty) { if (isset($content)) { $lang = $params['lang']; // do some intelligent translation thing here with $content return $translation; } }