+1.80
Рейтинг
4.61
Сила

Игорь

В поиске есть про функции Smarty

Для ленивых (как я сделал).
В engine/lib/external/Smarty/libs/plugins/function.sape.php
<?php
  function smarty_function_sape($params,$template)
  {
	if (!defined('_SAPE_USER')){
	    define('_SAPE_USER', 'ваш_длинный_код'); 
	}
	if (isset($params['sapeuser'])) {
            define('_SAPE_USER', $params['sapeuser']); ;
        }
	
    require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
    $o['charset'] = 'UTF-8';
    $sape = new SAPE_client($o);
    unset($o);
    if (isset($params['count'])) {
        return $sape->return_links($params['count']));
    else
	return $sape->return_links();
    }
  }
?>


Пример использования:
<div id="sidebar">
	{if isset($aBlocks.right)}
		{foreach from=$aBlocks.right item=aBlock}
			{if $aBlock.type=='block'}
				{insert name="block" block=$aBlock.name params=$aBlock.params}
			{/if}
			{if $aBlock.type=='template'}
				{include file=$aBlock.name params=$aBlock.params}
			{/if}
		{/foreach}
	{/if}

	{sape sapeuser=ваш_длинный_код count=100}
</div>

можно просто {sape}
  • avatar PSNet
  • 1
обрезать по словам чтобы в сумме не длинне 300 символов
{$oTopic->getTitle()|escape:'html'|truncate:300:'...'}

в block.stream_comment.tpl и block.stream_topic.tpl
<a href="vk.com/id{*}">{*}</a>
  • avatar ort
  • 0
отличное предложение, только не плагином, а опционально в конфиг движка.

для себя уже давно использую костыль (для05x, на 04x не пробовал): файл \engine\lib\external\Smarty\libs\sysplugins\smarty_internal_templatecompilerbase.php

найти строку (примерно 58)
$template_header .= "         compiled from \"" . $this->template->getTemplateFilepath() . "\" */ ?>\n";
после нее добавить
$template_header .= "<!-- Start " . $this->template->getTemplateFilepath() . " -->";
и найти строки (примерно 86)
if ($template->suppressFileDependency) {
            $template->compiled_template = $_compiled_code;
        } else {
            $template->compiled_template = $template_header . $template->createPropertyHeader() . $_compiled_code;
        }
и изменить на
if ($template->suppressFileDependency) {
            $template->compiled_template = $_compiled_code."<!-- End " . $this->template->getTemplateFilepath() . " -->";
        } else {
            $template->compiled_template = $template_header . $template->createPropertyHeader() . $_compiled_code."<!-- End " . $this->template->getTemplateFilepath() . " -->";
        }

на идеальность решения конечно не претендую, НО ОЧЕНЬ помогает при верстке.
ну и вынести все это настройкой в конфиг было бы идеальным решением
{count($aUsersFriend)} — кол-во друзей
{count($aBlogsOwner)} — кол-во созданных блогов
{count($aBlogAdministrators)} — кол-во администрируемых блогов
{count($aBlogModerators)} — кол-во модерируемых блогов
{count($aBlogUsers)} — кол-во читаемых блогов
  • avatar PSNet
  • 4

{if $oUserCurrent and $oUserCurrent->getId()==$oUserProfile->getId()}
    показать что-то
{/if}
Под дебиан squeeze установка намного проще (на данный момент в репозитарии версия 0.9.9):
apt-get install sphinxsearch

В /etc/default/sphinxsearch устанавливаем START=yes

В /etc/sphinxsearch/ редактируем файл (или тупо копируем), меняя 3 значения (обозначены звездочками) sphinx.conf как тут. В файле все прокомментировано по русски.

В ЛивСтрите соответственно указываем в {папка сайта}/config/modules/search/config.php (конфиг сфинкса, лежит изначально):
$config['entity_prefix']  = 'MAIN';
— это сделано для того, чтобы была возможность индексировать несколько разных сайтов на ЛС, указывая разные префиксы.

Проверяем, есть ли следующая строчка в CRONе:
. /etc/default/sphinxsearch && [ "$START" = "yes" ] && [ -x /usr/bin/indexer ] && /usr/bin/indexer --quiet --rotate --all
и настраиваем ее на регулярное выполнение (у меня раз в 10 минут индексируется сайт).

Перезапускаем сфинкс:
searchd --stop
searchd

Проверяем доступность порта:
telnet localhost 3312
Если «Connected to localhost.», то все отлично. Нажимаем «Ctrl-]» и выходим из телнета — «с».
Можно запустить принудительную индексацию вручную (чтобы не ждать следующей индексации по крону):
/usr/bin/indexer --quiet --rotate --all


Работоспособность и возможные ошибки можно выявить в логах (указанных в вышеприведенном конфиге), которые лежат в каталоге /var/log/sphinxsearch/.

Вроде все. Установка должна занять не более 10 минут.
(Хотя, когда я только начинал администрировать сервак, долго разбирался даже по мануалам).
всем спасибо за комментарий. заработало так
{if $sAction=='job' and $sEvent=='edit'}
текст
{/if}
  • avatar PSNet
  • 1
например в comment_tree.tpl,
с самого верху будет что-то типа этого:


{if $oUserCurrent}
	<div class="update" id="update" style="{if $aPagingCmt and $aPagingCmt.iCountPage>1}display:none;{/if}">
		<div class="update-comments" id="update-comments" onclick="ls.comments.load({$iTargetId},'{$sTargetType}'); return false;"></div>
		<div class="new-comments" id="new_comments_counter" style="display: none;" onclick="ls.comments.goToNextComment();"></div>
		<input type="hidden" id="comment_last_id" value="{$iMaxIdComment}" />
		<input type="hidden" id="comment_use_paging" value="{if $aPagingCmt and $aPagingCmt.iCountPage>1}1{/if}" />
	</div>
	<script>
                setInterval ("ls.comments.load({$iTargetId},'{$sTargetType}')", 120000);
	</script>
{/if}

вот тот скрипт нужно установить в ваш шаблон. 120000 == 2 мин
  • avatar ort
  • 2
Добавить в config.local.php
$config['router']['uri']['~^about$~i'] = "page/about";
  • avatar xyz
  • 0
header.light.tpl
между тегами head вставить
{if $bRefreshToHome}
		<meta  HTTP-EQUIV="Refresh" CONTENT="3; URL={cfg name='path.root.web'}/">
	{/if}
увеличьте значение до

echo 134217728 > /proc/sys/kernel/shmmax
  • avatar Rush
  • 0
Спасибо, помогло :)
Итоговый код, если кому понадобится:

#leftcolumn { width: 15%; float: left; margin-left: 1%; margin-top: -6px; }
#content { width: 58%; background: #fff; float: left; padding-top: 20px; padding-bottom: 20px; zoom: 1; }
#sidebar { width: 25%; float: left; margin-left: 1%; margin-top: -6px; }
могу дать совет.
открой файл classes/actions/ActionIndex.class.php и начните смотреть его начиная с 28 строчки. Вопрос у вас должен исчезнуть.
с консолью хакера всё просто, если имеете представление о php вообще и о структуре livestreet
в index.php есть строчка
define ('SYS_HACKER_CONSOLE', false);

переключаете в true, перезагружаете страничку и жмете Ctrl+~

теперь в нужном экшене(в вашем случае ActionProfile) дампим нужную переменную

dump($sResult['collection']);

и в консоли смотрим вывод, на каком объекте затык.

Удобная штука для отладки, чтобы не травмировать народ var_dump. Но следует заметить, что используется она ТОЛЬКО для отладки (ибо при ее активации есть проблемы с ajax)
  • avatar Vilz
  • 0
в шаблоне new для убирания сайдбара используется такая штука
{assign var="bNoSidebar" value=true}
это надо вставить в самое начало нужного .tpl шаблона страницы перед
{include file='header.tpl'}


можно посмотреть в статических страницах как это устроено
  • avatar Geatu
  • 0
templates\skin\new\actions\ActionBlog\blog.tpl

<h1><img src="{$oBlog->getAvatarPath(24)}" alt="avatar" class="avatar" /> {$oBlog->getTitle()|escape:'html'}</h1>


24 -> 48 -> 100
  • avatar refik
  • 0
1. В footer.tpl:

<div class="footer-content">                                                                                                                                     
       <div class="footer_navi">                                                                                                                                  
       <dl>                                                                                                                                                       
       {if $oUserCurrent}                                                                                                                                         
<dd><a href="{$oUserCurrent->getUserWebPath()}" class="author"><h4>{$oUserCurrent->getLogin()}</h4></a></dd>                                                  
    <dd><a href="{router page='topic/add'}">Написать</a></dd>                                                                                                     
    <dd><a href="{router page='talk'}">Сообщения</a></dd>                                                                                                         
    <dd><a href="{router page='profile'}{$oUserCurrent->getLogin()}/favourites/" class="author">Избранное</a></dd>                                                
{else}                                                                                                                                                    
<div class="profile guest">                                                                                                                               
<dd> <a href="{router page='login'}" onclick="return showLoginForm();">{$aLang.user_login_submit}</a></dd>                                            
<dd> <a href="{router page='registration'}" class="reg">{$aLang.registration_submit}</a></dd>                                                         
</div>                                                                                                                                                    
{/if} 


что-то вроде этого, смысл думаю понятен
соответственно не забываем стили добавлять
2. смотри как в хедере сделано, и по тому же принципу, заодно разберешься.
человек попросил только для «топика-ссылки»
элегантней будет так:
<h1 class="{if $oTopic->getType()=='link'}title-link{else}title{/if}">