Как правильно делать и вставлять новый блок в шаблон LS.

Несколько дней провел в поисках и экспериментах, некоторые вещи удалось понять, на других просто остановился и не могу двинутся дальше.

Что удалось понять:


1. Надо создать файл в папке templates\skin\new\ block.myblok.tpl где содержится все оформление. Для начало можно обойтись примерно таким.

<div class="block stream">
    <div class="tl"><div class="tr"></div></div>
    <div class="cl">
       <div class="cr">Test</div>
   </div>
   <div class="bl"><div class="br"></div></div>
</div>

По идеи здесь просто будет выводится просто Test. Все оформление просто выдернул из готового блока, но для опытов сойдет.

2. В папке classes\blocks\ создаем BlockMyBlock.classю.php. Здесь находится логика работы нового блока, но пока не понял что с этим делать, а шаблоне менять ничего не надо то вполне хватает заглушки которая ничего не будет делать.

<?php
class BlockBlogs extends Block {
	public function Exec() {
	}
}
?>


Потом придется разбираться, как все работает внутри.

3. Новый блок надо подключить для вывода через конфиг. Основной конфиг config.php изменять не собираюсь, а просто копирую нужные мне фрагменты в пользовательский config.local.php, значения из которого будут при совпадении переписывать основной конфиг.
Вот здесь все застопорилось.

Удалось заставить выводить новый блок при вызове «Персональные» добавив

$config['block']['rule_profile'] = array(
        'action'  => array( 'personal_blog' ),
        'blocks'  => array( 'right' => array('block.myblock.tpl') ),
);

Как выводить на остальных страницах понять не могу, например на главной или в общем разделе.

4. Мне нужно поднять мой блок в самый верх, насколько понял это делается в этой строке конфига

	'blocks'  => array(
			'right' => array('stream'=>array('priority'=>100), 'tags'=>array('priority'=>50),'blogs'=>array('params'=>array(),'priority'=>1))
		)

После того как отредактировал под себя добавив 'myblock'=>array('priority'=>90), в итоге получив
'blocks'  => array(
			'right' => array('stream'=>array('priority'=>100), 'myblock'=>array('priority'=>90), 'tags'=>array('priority'=>50),'blogs'=>array('params'=>array(),'priority'=>1))
		) 


Вывод моего блоке в нужном мне порядке, стал работать хуже того появилась ошибка на всех страницах и разделах, за исключением единственного раздела «Персональные», где удалось настроить вывод блока.

Все выводится до моего блока после чего выбрасываться Fatal error: Class 'BlockMyBlock' not found in E:\server\web\localhost\ls1\engine\modules\viewer\plugs\insert.block.php(62): eval()'d code on line 1 и все блоки ниже не показываться.

Если убрать внесенные мной изменение myblock'=>array('priority'=>90), то все нормально работает.

Объясните мне как правильно вставлять в конфиг свои блоки, как выводить на нужные страницы и как заставить выводить свои блоки в нужном порядке.

5 комментариев

avatar
попробовать так:
<?php
class BlockMyBlock extends Block {
        public function Exec() {
        }
}
?>
Вообще создавать класс обработчика для блока не обязательно, тем более, если никаких вычислений не происходит. В этом случаи достаточно подключить блок указанием полного пути до него, например:
'blocks'  => array(
                        'right' => array('stream'=>array('priority'=>100), 'block.myblock.tpl'=>array('priority'=>90), 'tags'=>array('priority'=>50),'blogs'=>array('params'=>array(),'priority'=>1))
                )
  • ort
  • +1
avatar
Спасибо за ответ действительно помогло.

Затупил, когда создавал класс для обработки своего блока его название просто скопировал, а нужно было давать имя по имени блока.

<?php
class BlockBlogs BlockMyBlock extends Block {
public function Exec() {
}
}
?>
avatar
А теперь можно как-то прикрутить этот новый блок block.myblok.tpl к плагину aceBlockManager для управления? Если да то как я не в силах разобраться сам, перепробовал разные варианты
avatar
А конкретно, меня интересует в каком месте менять приоритет блока?
avatar
В конфиге..0.1.2.3.100 чем больше число, тем выше приоритет
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.