Иногда нужно, чтобы при переходе к компоненту через меню, учитывались параметры, например, id категории.

Это делается с помощью JElement.

Для раскладки default.php создадим default.xml файл в components\com_component\views\view_name\tmpl :

<?xml version="1.0" encoding="utf-8"?>
<metadata>
	<layout title="Category Blog Layout">
		<message>
			<![CDATA[CATEGORY BLOG LAYOUT DESC]]>
		</message>
	</layout>
	<state>
		<name>Category Blog Layout</name>
		<description>CATEGORY BLOG LAYOUT DESC</description>
		<url addpath="/administrator/components/COMPONENT_NAME/elements">
			<param name="id" type="category" label="Category" description="Choose a category..." />
		</url>
		<params>
	 		<param />
			...
		</params>
		<advanced>
			<param/>
			...
		</advanced>
	</state>
</metadata>

В файле /administrator/components/com_component/elements/category.php задается html для параметра id

Текстовый параметр:

function fetchElement( $name, $value, &$node, $control_name )
{ 
    $class = $node->attributes( &#39;class&#39; ) ? $node->attributes( &#39;class&#39; ) : "text_area";
 
    $return = &#39;<input type="text"&#39; .
                     &#39;name="&#39; . $control_name . &#39;[&#39; . $name . &#39;]"&#39; .
                     &#39;id="&#39;   . $control_name . &#39;[&#39; . $name . &#39;]"&#39; .
                     &#39;value="&#39; . $value . &#39;"&#39; .
                     &#39;class="&#39; . $class . &#39;" />&#39;; 
    return $return;
}

или список:

defined(&#39;_JEXEC&#39;) or die();
class JElementFiler extends JElement
{
 
	var	$_name = &#39;id&#39;;
 
	function fetchElement($name, $value, &$node, $control_name) {
		return JHTML::_(&#39;select.genericlist&#39;,  $result, &#39;&#39;.$control_name.&#39;[&#39;.$name.&#39;]&#39;, &#39;class="inputbox"&#39;, &#39;value&#39;, &#39;text&#39;, $value, $control_name.$name );
	}
}

где 

function fetchElement($name, $value, &$node, $control_name)

$name is the unique name of the parameter, from the name argument.
$value is the current value of the parameter.
$node is a JSimpleXMLElement object representing the <param> element.
$control_name is the parameter type from the type argument (eg. 'category' or 'newparm')
 

Чтобы сделать комментарий, нужно авторизоваться на сайте!