Entwickler - Controls erstellen
Grundlegend ist ein Control eine Php oder Js Datei, welche sich mithilfe eines Bausteines - Bricks auf beliebigen Quiqqer Seiten platzieren lässt. Sei es eingebaut im HTML oder über das Backend in den Sitebars vom Layout. Control.
Engines
Mit dem $Engine
:
$Engine = QUI::getTemplateManager()->getEngine();
So ist es sogar möglich ein anderes Template, als das momentan verwendete, reinzuholen und zu verwenden.
In jedem Falle ist es einfacher Sich ein Engine zum Arbeiten zu laden.
Wichtiges
Die neue Klasse muss die bestehende QUI\Control Klasse erweitern mit:
class SteemPrice extends QUI\Control
Attribute
Parameter und Attribute werden natürlich von Controls unterstützt: Default oder Standardwerte werden in der
$this->setAttributes([
'kakao'=> true,
'default' => 'you_can_set_the_default_here'
])
Funktion gesetzt. Diese werden übernommen, wenn beim Initialisieren der Klasse keine Attribute mitgegeben werden.
Benutzung
Die erstellte Klasse wird mit per new
aufgerufen und somit wird ein Objekt von ihr erstellt.
ohne Attribute:
$PriceControl = new PCSG\Steemit\Holmes\Controls\SteemPrice([]);
mit Attributen:
$YoutubePlayerControl = new Nexgam\NexgamTemplate\Controls\YoutubePlayer([
'url' => 'Kak.ao',
'autoplayBool'=> true
])
nun kann über das Smarty Engine das Control assigned werden.
$Engine->assign([
'Steemprice' => $PriceControl
]);
im HTML sieht eine Positionierung dann so aus:
{$Steemprice->create()}
Control.php
Datei
Aufbau einer Im folgenden Beispiel wird eine HTML-Datei namens SteemPrice.html
über die Engine reingeladen. Diese bestimmt das haupt HTML mit den gesetzten Values durch Smarty
<?php
namespace Nexgam\NexgamTemplate\Controls;
use QUI;
class YoutubePlayer extends QUI\Control
{
/**
* YoutubePlayer constructor.
*
* @param array $attributes - optional
*/
public function __construct($attributes = [])
{
/** Set the default Attributes for your Control here */
/** if no Attributes are given the will be set! */
$this->setAttributes([
'autoplayBool'=> false,
'url' => 'https://www.youtube.com/embed/cRJvAMRVHg8'
]);
parent::__construct($attributes);
}
/**
* (non-PHPdoc)
* @see \QUI\Control::create()
*/
public function getBody()
{
try {
$Engine = QUI::getTemplateManager()->getEngine();
} catch (QUI\Exception $Exception) {
return '';
}
$url = $this->getAttribute('url');
if ($this->getAttribute('autoplayBool')) {
$url .= '?autoplay=1';
}
// QUI\System\Log::writeRecursive($this->getAttribute('autoplayBool'));
// QUI\System\Log::writeRecursive(($this->getAttribute('autoplayBool') ? 'true' : 'false'));
// QUI\System\Log::writeRecursive($url);
$Engine->assign([
'this' => $this,
'url' => $url
]);
return $Engine->fetch(\dirname(__FILE__) . '/YoutubePlayer.html');
}
}
die dazugehörige HTML-Datei sieht aus wie folgt:
<div class="header-blue" style="margin-top: 10px;">
<span class="fa fa-youtube"></span>
<span>neXGam YouTube Channel</span>
</div>
<div class="youtube-container iframe-box">
<iframe src="{$url}" height="300" width="100%" frameborder="0"></iframe>
</div>