+22.15
Рейтинг
88.90
Сила

Модифицированный дистрибутив LiveStreet от Kitsune Solar

Статус: тестирование.

LiveStreet CMS — бесплатный блого-социальный движок. Позволяет удобно и быстро создать сообщество с коллективными блогами.

Описание

Версия LiveStreet CMS, модифицированная Kitsune Solar для своих проектов.

Читать дальше →

Вывод блока

Ребята подскажите как вывести блок, например у нас есть URL /profile/admin/created/topics/ блок нужен только на страницы начиная с параметра[0], т.е. с created. Пробовал так:

$config['block']['rule_topic_type'] = array(
	'action'  => array(
		'profile'     => array(
			'admin' => array('created')
		)
	),
	'blocks'  => array( 'right' => array('blogs') ),
);


Но получаю

substr() expects parameter 1 to be string, array given in.


UPD

Сделал так:

'path' => '/profile/admin/created',

Модификация шаблона Developer-Kit от Kitsune Solar

Привет всем!

Хочу поблагодарить vOFFka за создание такого прекрасного шаблона, как Developer-Kit:
catalog.livestreetcms.com/addon/view/299/

Я решил на текущей кодовой базе этого шаблона выпустить свою модификацию. Сначала модификация разрабатывалась исключительно для личных проектов, но позже решил выложить в открытый доступ. Сам я с ЛС познакомился в его версии 0.4, но более плотно им занялся только сейчас. Мне нравится ЛС и я бы хотел внести свой вклад в развитие сообщества. Пусть даже он будет таким не большим. Посмотреть «демо-версию» можно на моём блоге: kitsune.solar.

Читать дальше →

Разделение топиков по датам.[РЕШЕНО]

Добрый день, пытаюсь сделать разделение постов по датам (ls 1.0.3), на главной странице, метод реализации подсмотрел в профиле -> активность ( собственно, такой реализации и хочу добиться ), пытаюсь реализовать вот таким вот образом, но явно что-то не хватает, подразумеваю что $sDateLast. Прошу помощи, заранее благодарен.

По аналогии со страницей активности из профиля /profile/profile/stream/, файл (events.tpl ), где есть разделение по датам, вытягиваю эту строку:

{if {date_format date=$oStreamEvent->getDateAdded() format="j F Y"} != $sDateLast}

{assign var=sDateLast value={date_format date=$oStreamEvent->getDateAdded() format="j F Y"}}
			
    <li class="stream-header-date">
	{if {date_format date=$smarty.now format="j F Y"} == $sDateLast}
	    {$aLang.today}
	{else}
	    {date_format date=$oStreamEvent->getDateAdded() format="j F Y"}
	{/if}
    </li>

{/if}


и подставляю её в topic_list.tpl параллельно изменив $oStreamEvent на $oTopic ( мы же изменяем топики, а не активность ), получается вот такая строка:

{if {date_format date=$oTopic->getDateAdded() format="j F Y"} != $sDateLast}

{assign var=sDateLast value={date_format date=$oTopic->getDateAdded() format="j F Y"}}
			
    <li class="stream-header-date">
	{if {date_format date=$smarty.now format="j F Y"} == $sDateLast}
	    {$aLang.today}
	{else}
	    {date_format date=$oTopic->getDateAdded() format="j F Y"}
	{/if}
    </li>

{/if}


Но данная реализация показывает только одну строку: сегодня поверх всех топиков, и разделение на даты не происходит. Будьте добры, подскажите, куда копать?

РЕШЕНИЕ:


Заменяем getDateAdded на getDateAdd. За наводку спасибо sgavka

{if {date_format date=$oTopic->getDateAdded() format="j F Y"} != $sDateLast}

{assign var=sDateLast value={date_format date=$oTopic->getDateAdd() format="j F Y"}}
			
    <li class="stream-header-date">
	{if {date_format date=$smarty.now format="j F Y"} == $sDateLast}
	    {$aLang.today}
	{else}
	    {date_format date=$oTopic->getDateAdd() format="j F Y"}
	{/if}
    </li>

{/if}

Объясните подключение менюшек в шаблоне

Товарищи, объясните, пожалуйста, как происходит подключение разных файлов меню в шаблоне.

Имеем в nav.tpl:

<nav id="nav">
	{if $menu}
		{if in_array($menu,$aMenuContainers)}{$aMenuFetch.$menu}{else}{include file="menu.$menu.tpl"}{/if}
	{/if}
</nav>


В нужном экшене просто указываем к примеру:

{include file='header.tpl' menu='people'}


и для него подключается соотвествующий файл меню.

У меня задача следующая: есть div в котором необходимо выводить разную информацию для разных экшенов. Соответственно, хотелось бы по аналогии указывать в нужном экшене что подключать, а не прописывать в нем кучу условий.

Или же тут не решается одним шаблоном, а $menu прописывается в движке? Тогда как можно поступить в моем случае?

Переопределение js (Решено)

Задача 1.
В файле /engine/lib/internal/template/js/blocks.js есть код, добавляющий класс active иконке обновления блока («прямой эфир» и «блоги»).
В шаблоне используются иконки (точнее шрифт) font-awesome, поэтому необходимо переопределить класс active на класс fa-spin (вращение).

Решение:
— в template.js шаблона перед вызовом функции инициализации блоков добавим опцию:
ls.blocks.options.update_active = 'fa-spin';

— затем переопределим ее с новой опцией:
ls.blocks.init = function(block,params) {
	params=params || {};
	$('.js-block-'+block+'-item').click(function(){
		ls.blocks.load(this, block);
		return false;
	});
	if (params.group_items) {
		this.initNavigation(block,params.group_min);
	}

	var $this=this;
	$('.js-block-'+block+'-update').click(function(){
		$(this).addClass($this.options.update_active);
		ls.blocks.load($this.getCurrentItem(block), block);
		setTimeout( function() { $(this).removeClass($this.options.update_active); }.bind(this), 600 );
	});
};


Задача 2.
В стандартном функционале при добавлении в избранное js движка добавляет к иконке избранного в футере топика класс active, и это легко можно задействовать при использовании спрайтов, указав координаты «активной» иконки. В нашем примере используется иконки font-awesome, поэтому класс active нам не подходит. Хотя vOFFka в своих шаблонах выкрутился по-другому, задав иконке с классом active желтый цвет.
Т.е. нам нужно при добавлении в избранное менять класс иконки избранного с fa-star-o (звездочка с контуром) на fa-star (залитая звездочка).
Также необходимо при добавлении/удалении в избранное соответственно менять title иконке (Добавить в избранное/Удалить из избранного).

Решение:
Окончание процесса добавления/удаления избранного в движке помечено js-хуком.
В template.js шаблона Synio я нашел применение этого хука (удаляет нулевое значение числа добавлений в избранное) и решил его дополнить:
// избранное
ls.hook.add('ls_favourite_toggle_after',function(idTarget,objFavourite,type,params,result){
	$('#fav_count_'+type+'_'+idTarget).text((result.iCount>0) ? result.iCount : '');

	// меняем иконку
	$('#fav_topic_'+idTarget).toggleClass('fa-star').toggleClass('fa-star-o');
	// Для всех типов объектов, добавляемых в избранное (например, + камменты), следует писать так
	// this.objFavourite.toggleClass('fa-star').toggleClass('fa-star-o');
	// или так
	// $('#fav_'+type+'_'+idTarget).toggleClass('fa-star').toggleClass('fa-star-o');

	// меняем title иконке
	if (result.bState) {
		this.objFavourite.attr('title', 'Удалить из избранного');
	} else {
		this.objFavourite.attr('title', 'Добавить в избранное');
	}
});


P.S.:
Вероятно, вышеизложенное гораздо проще реализовать правками непосредственно в файлах движка, но это может привести к проблемам совместимости.

Большое спасибо ort , PSNet (статья) и tema_mak за помощь в решении задач!

Создание простого плагина. Пошаговая инструкция для новичков. Часть 1

Данный материал предназначен для новичков в мире Livestreet, желающих разобраться с базовыми особенностями работы с системой плагинов.

Создадим простой плагин, который будет создавать объект «Book» из введенных пользователем данных и сохранять в базу данных. А на отдельной страничке — выводить все созданные объекты Book списком.

Читать дальше →

Условие для вывода шаблонного хука (решено)

Имеется шаблонный хук {hook run='superhook'}.
В шаблоне выводится так:
<div class="superblock">
    {hook run='superhook'}
</div>

Если по этому хуку ничего не выводится, то мы имеем пустой блок (без содержимого).
Можно ли выводить этот блок по условию что по хуку что-либо выводится? Примерно так:
{if "что-то выводиться по хуку superhook"}
    <div class="superblock">
        {hook run='superhook'}
    </div>
{/if}