1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
/**
* Copyright © 2015 Ihor Vansach (ihor@magefan.com). All rights reserved.
* See LICENSE.txt for license details (http://opensource.org/licenses/osl-3.0.php).
*
* Glory to Ukraine! Glory to the heroes!
*/
namespace Magefan\Blog\Block;
use Magento\Store\Model\ScopeInterface;
/**
* Blog sidebar block
*/
class Sidebar extends \Magento\Framework\View\Element\Text
{
/**
* Render html output
*
* @return string
*/
protected function _toHtml()
{
$this->setText('');
$childNames = $this->getChildNames();
usort($childNames, [$this, 'sortChilds']);
$layout = $this->getLayout();
foreach ($childNames as $child) {
$this->addText($layout->renderElement($child, false));
}
return parent::_toHtml();
}
/**
* Sort by sort order param
* @param string $a
* @param string $b
* @return boolean
*/
public function sortChilds($a, $b)
{
$layout = $this->getLayout();
$blockA = $layout->getBlock($a);
$blockB = $layout->getBlock($b);
if ($blockA && $blockB) {
$r = $blockA->getSortOrder() > $blockB->getSortOrder() ? 1 : - 1;
return $r;
}
}
}