Files
smarty/docs/en/designers/language-builtin-functions/language-function-include-php.xml
2004-04-13 08:46:28 +00:00

141 lines
5.1 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<sect1 id="language.function.include.php">
<title>include_php</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Attribute Name</entry>
<entry>Type</entry>
<entry>Required</entry>
<entry>Default</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>file</entry>
<entry>string</entry>
<entry>Yes</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>The name of the php file to include</entry>
</row>
<row>
<entry>once</entry>
<entry>boolean</entry>
<entry>No</entry>
<entry><emphasis>true</emphasis></entry>
<entry>whether or not to include the php file more than
once if included multiple times</entry>
</row>
<row>
<entry>assign</entry>
<entry>string</entry>
<entry>No</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>The name of the variable that the output of
include_php will be assigned to</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<note>
<title>Technical Note</title>
<para>
include_php is pretty much deprecated from Smarty, you can
accomplish the same functionality via a custom template function.
The only reason to use include_php is if you really have a need to
quarantine the php function away from the plugin directory or your
application code. See the <link
linkend="tips.componentized.templates">componentized template
example</link> for details.
</para>
</note>
<para>
include_php tags are used to include a php script in your template.
If security is enabled, then the php script must be located in the
$trusted_dir path. The include_php tag must have the attribute
"file", which contains the path to the included php file, either
relative to $trusted_dir, or an absolute path.
</para>
<para>
include_php is a nice way to handle componentized templates, and
keep PHP code separate from the template files. Lets say you have a
template that shows your site navigation, which is pulled
dynamically from a database. You can keep your PHP logic that grabs
database content in a separate directory, and include it at the top
of the template. Now you can include this template anywhere without
worrying if the database information was assigned by the application
before hand.
</para>
<para>
By default, php files are only included once even if called
multiple times in the template. You can specify that it should be
included every time with the <emphasis>once</emphasis> attribute.
Setting once to false will include the php script each time it is
included in the template.
</para>
<para>
You can optionally pass the <emphasis>assign</emphasis> attribute,
which will specify a template variable name that the output of
<emphasis>include_php</emphasis> will be assigned to instead of
displayed.
</para>
<para>
The smarty object is available as $this within the PHP script that you
include.
</para>
<example>
<title>function include_php</title>
<programlisting>
load_nav.php
-------------
&lt;?php
// load in variables from a mysql db and assign them to the template
require_once("MySQL.class.php");
$sql = new MySQL;
$sql->query("select * from site_nav_sections order by name",SQL_ALL);
$this->assign('sections',$sql->record);
?&gt;
index.tpl
---------
{* absolute path, or relative to $trusted_dir *}
{include_php file="/path/to/load_nav.php"}
{foreach item="curr_section" from=$sections}
&lt;a href="{$curr_section.url}"&gt;{$curr_section.name}&lt;/a&gt;&lt;br&gt;
{/foreach}</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->