91 private function getMathRandom()
93 if ($this->mathRandom ===
null) {
95 ->get(\
Magento\Framework\Math\Random::class);
97 return $this->mathRandom;
106 public function getWidgetByClassType(
$type)
110 foreach ($widgets as $widget) {
111 if (isset($widget[
'@'])) {
112 if (isset($widget[
'@'][
'type'])) {
113 if (
$type === $widget[
'@'][
'type']) {
132 return $this->getXmlElementByType(
$type);
143 $widget = $this->getWidgetByClassType(
$type);
145 $object = new \Magento\Framework\DataObject();
146 if ($widget ===
null) {
152 $object->setType(
$type);
153 $object->setData($widget);
157 $object->setData(
'parameters', $newParams);
170 $params = $object->getData(
'parameters');
175 if (is_array(
$data)) {
179 $newParams[$key] = new \Magento\Framework\DataObject(
$data);
184 uasort($newParams, [$this,
'sortParameters']);
200 $data[
'sort_order'] = isset(
$data[
'sort_order']) ? (int)
$data[
'sort_order'] : $sortOrder;
203 if (isset(
$data[
'values']) && is_array(
$data[
'values'])) {
223 if (isset(
$data[
'helper_block'])) {
224 $helper = new \Magento\Framework\DataObject();
225 if (isset(
$data[
'helper_block'][
'data']) && is_array(
$data[
'helper_block'][
'data'])) {
228 if (isset(
$data[
'helper_block'][
'type'])) {
245 $widgets = $this->dataStorage->get();
250 foreach ($widgets as
$code => $widget) {
253 if (!isset($widget[$field]) || (
string)$widget[$field] !=
$value) {
254 throw new \Exception();
257 }
catch (\Exception $e) {
275 if (empty($this->widgetsArray)) {
279 'name' =>
__((
string)$widget[
'name']),
281 'type' => $widget[
'@'][
'type'],
282 'description' =>
__((
string)$widget[
'description']),
285 usort(
$result, [$this,
"sortWidgets"]);
301 $directive =
'{{widget type="' .
$type .
'"';
306 if (
$name ==
'conditions') {
307 $name =
'conditions_encoded';
312 $parameters = $widget->getParameters();
313 if (isset($parameters[
$name]) && is_object($parameters[
$name])) {
318 $directive .= sprintf(
' %s="%s"',
$name, $this->escaper->escapeQuote(
$value));
322 $directive .= $this->getWidgetPageVarName(
$params);
324 $directive .= sprintf(
' type_name="%s"', $widget[
'name']);
333 '<img id="%s" src="%s" title="%s">',
336 $this->escaper->escapeUrl($directive)
346 private function getWidgetPageVarName(
$params = [])
349 if (array_key_exists(
'show_pager',
$params) && (
bool)
$params[
'show_pager']) {
350 $pageVarName = sprintf(
353 'p' . $this->getMathRandom()->getRandomString(5, \
Magento\Framework\Math\Random::CHARS_LOWERS)
367 $placeholder =
false;
368 $widget = $this->getWidgetByClassType(
$type);
369 if (is_array($widget) && isset($widget[
'placeholder_image'])) {
370 $placeholder = (string)$widget[
'placeholder_image'];
373 $asset = $this->assetRepo->createAsset($placeholder);
374 $placeholder = $this->assetSource->getFile($asset);
376 return $asset->getUrl();
379 return $this->assetRepo->getUrl(
'Magento_Widget::placeholder.png');
389 public function getPlaceholderImageUrls()
394 foreach ($widgets as $widget) {
395 if (isset($widget[
'@'])) {
396 if (isset($widget[
'@'][
'type'])) {
397 $type = $widget[
'@'][
'type'];
413 if (array_key_exists(
'@', $inputArray)) {
414 unset($inputArray[
'@']);
416 foreach ($inputArray as $key =>
$value) {
433 return strtr(base64_encode($string),
'+/=',
':_-');
445 return strcmp($firstElement[
"name"], $secondElement[
"name"]);
457 $aOrder = (int)$firstElement->getData(
'sort_order');
458 $bOrder = (int)$secondElement->getData(
'sort_order');
459 return $aOrder < $bOrder ? -1 : ($aOrder > $bOrder ? 1 : 0);
elseif(isset( $params[ 'redirect_parent']))
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE]
if(!isset($_GET['name'])) $name