+26.19
Рейтинг
81.26
Сила

Виктор

TinyPNG API = Plugin for LS


Есть такой веб сервис TinyPNG — он умеет очень хорошо сжимать PNG и JPEG изображения. Потерь вообще не видно… Есть расширения для WordPress и Magento. Было бы неплохо, если и для LiveStreet существовал бы такой плагин.

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

Про безопасность: Привязка сессии к IP и(или) UserAgent

Безопасный вход

Недавно, после того как у меня обострилась паранойя после добавление на свой сайт платёжной системы я всерьез заинтересовался проблемами безопасности. Одна из распространенных проблем в безопасности — это кража кук, с помощью всяческих XSS уязвимостей, которые (XSS уязвимости) присуствовали даже в старых релизах LS.
Читать дальше →

30% ускорение генерации страницы

Захотелось немного ускорить время генерации страниц. С помощью отладчика обнаружил что много времени съедает функция ExistsHeadFileByName в engine/modules/viewer/Viewer.class.php. Сделал чтобы она возвращала постоянно false. Короче говоря вот так:
protected function ExistsHeadFileByName($sType,$aParams) {
	// if (isset($aParams['name'])) {
		/**
		 * Проверяем на дубликат по имени
		 */
		// foreach($this->aFilesParams[$sType] as $aParamsFile) {
			// if (isset($aParamsFile['name']) and strtolower($aParams['name'])==strtolower($aParamsFile['name'])) {
				// return true;
			// }
		// }
	// }
	return false;
}


Результат: до модификации среднее время генерации страницы 0.276 сек. после 0.199 сек. Прирост около 30%

Как отключить существующий блок в конфиге шаблона/плагина? [решено]

Подскажите, каким образом можно отключать существующие блоки (прописанные в конфиге движка) в конфиге шаблона или плагина?

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

Как сохранить совместимость при адаптации js шаблона (плагина) к js движка

Зачастую при адаптации шаблонов/плагинов так и тянутся руки поправить js в движке, что чревато потерей совместимости с другими шаблонами и плагинами.

Чтобы разобраться с этим вопросом и с целью самообразования, решил написать этот топик — может кому-то пригодится.

Какие есть варианты:
  1. Редактировать js-файлы прямо в движке
  2. Переписать (переопределить) нужный метод

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

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

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

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

Описание

Версия LiveStreet CMS, модифицированная 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 прописывается в движке? Тогда как можно поступить в моем случае?