Jump to content
xt:Commerce Community Forum

[dev] Mehr als nur 1ne Box in einem Plugin


nusphere

Recommended Posts

Hi,

gibt es einen Weg mehr als nur eine Box in einem Plugin zu hinterlegen?

Ich meine der Ordner heisst ja schon boxes - aber dadurch, dass er nur nach dem Namen des Plugins sucht bei der angabe von type="user" kann man ja nur eine Box angeben.

Oder gibt es - mir unbekannte - box parameter, die dies ermöglichen?

Gruß

Das Nu

Link to comment
Share on other sites

Wunderbar danke für den Hinweis.

Ich habe die php Datei im boxes Ordner als precompiler für eine Box gesehen. Somit war ich etwas verwundert.

Aber wenn man diese PHP Datei als Box-Handler sieht, kommt man wieder damit klar.


{box name=<plugin_name> type=user tpl=smarty_box_template.tpl}
[/php]

ruft also die Datei plugins/<plugin_name>/boxes/<plugin_name>.php auf und nutzt das Standartmäßig das Template von plugins/<plugin_name>/templates/boxes/smarty_box_template.tpl

[php]
{box name=<plugin_name> type=user box_type=eigener_boxtyp}

das würde bedeuten, dass ich in meinem Box-Handler auf die Variable $params["box_type"] reagieren kann (zum Beispiel in einer switch) und dann durch das setzten von $params["tpl"] auf ein gewünschtes Template wechseln.

Damit könnte ich in dem Box-Handler auch weitere PHP Dateien importieren und somit hätte ich partionelle PHP Dateien.

Alles klar... Danke für den Tipp.

Gruß

Das Nu

Link to comment
Share on other sites

Baut Euch doch eine eigene Smarty-Erweiterung, das ist relativ einfach:

Neue Datei in /xtFramework/library/smarty/plugins erstellen, Beispiel "function.box_reports.php", Code:

<?php
/**
* SLR Box fuer Reports, das Original "box" ist verschluesselt!
* @params array (wichtig: name=>sonstwas)
* @return void Zweisung von Parametern und Ausgabe der Html-Datei
*/
function smarty_function_box_reports ($params) {

if (!isset($params['name']) && !empty($params['name'])) return;

$code_php = $_SERVER['DOCUMENT_ROOT'] .'/xtAdmin/slr_reports/boxes/' .$params['name'] .'.php';
$code_html = $_SERVER['DOCUMENT_ROOT'] .'xtAdmin/slr_reports/boxes/' .$params['name'] .'.html';

$smarty = new smarty();
$smarty->template_dir = $code_html;
$smarty->compile_dir = _SRV_WEBROOT .'templates_c/';

if (file_exists($code_php)) include_once($code_php);
foreach ($params as $key=>$val) $smarty->assign($key, $val);
if (isset($tplValues)) foreach ($tplValues as $key=>$val) $smarty->assign($key, $val);

if (file_exists($code_html))
$smarty->display($code_html);

} //smarty_function_box_reports()
?>[/PHP]

in dem angegebenen Verzeichnis die php-Datei und die Html-Datei erstellen (Beispiel Datepicker)

Dann einbinden mit {box_reports name=datePicker}

Keine Hexerei und einfacher zu handeln, als die verschluesselte Box von XTC. Die Funktion kann natuerlich beliebig erweitert werden, ist hier nur ein Ausschnitt mit der grnudlegenden Funktion.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...