+51.00
Рейтинг
75.55
Сила

Лариса

  • avatar PSNet
  • 4
можно начать с того, что не боятся спросить у роутера напрямую имя экшена:

{if Router::GetAction()=='feed'}
    стандартный вывод топиков
{else}
    плиточный вывод
{/if}
Думаю что все видео полезно для тебя. По мимо конфигов узнаешь еще много интересного о блоках ;)

в 2х словах:
если config.php из ЛС имеет
$config['tags'] = 5;

Config::Set('tags');

то выводиться оно из пхп:
Config::Get('tags');

в шаблоне:
{cfg name='tags'} или {$oConfig->Get('tags')}


если в плагине:
$config['tags'] = 5;

то
Config::Get('plugin.pluginname.tags');
if ($this->oUserCurrent->getId()==$this->oUserProfile->getId()){
    $aTalkCollection=$this->Talk_GetLastTalksByUserId($this->oUserProfile->getId(),30*24*60*60,20);
    $this->Viewer_Assign('aLastTalk',$aTalkCollection['collection']);
}
— получаем последние 20 входящих за 30 дней

    {if count($aLastTalk)}
	{foreach from=$aLastTalk item=oTalk}
	    <p>
	    <a href="{router page='talk'}read/{$oTalk->getId()}/" class="js-title-talk">
            {$oTalk->getTitle()|escape:'html'}->{$oTalk->getTextLast()|strip_tags|runcate:100:'...'|escape:'html'}"</a>
	    </p>
        {/foreach}
    {/if}
— выводим
  • avatar PSNet
  • 0
точь в точь такой вопрос был около года назад, там есть точное решение.
цикл в topic_list.tpl, условие нужно будет поставить на значение iteration или index цикла (индекс меньше на 1)

{foreach ...... name="CycleName"}
    {if $smarty.foreach.CycleName.iteration == 5}
        у попа была собака, что он с ней сделал остается тайной
    {/if}
{/foreach}
  • avatar bamboo
  • 0
1) Добавить вручную данную ссылку в файл header_top.tpl:
— в templates\language\russian.php добавить 'about_project' => 'О проекте',
<ul class="pages">
	<li {if $sMenuHeadItemSelect=='blog'}class="active"{/if}><a href="{cfg name='path.root.web'}">{$aLang.topic_title}</a></li>
	<li {if $sMenuHeadItemSelect=='blogs'}class="active"{/if}><a href="{router page='blogs'}">{$aLang.blogs}</a></li>
	<li {if $sMenuHeadItemSelect=='people'}class="active"{/if}><a href="{router page='people'}">{$aLang.people}</a></li>
	{if $oUserCurrent}
	<li {if $sMenuItemSelect=='stream'}class="active"{/if}>
	<a href="{router page='stream'}">{$aLang.stream_personal_title}</a>
	</li>
	{/if}

        <li {if $smarty.server.REQUEST_URI=='ссылкадостраницыбездомена'}class="active"{/if}><a href="ссылкадостраницы">{$aLang.about_project}</a></li>

	{hook run='main_menu'}
	</ul>
  • avatar PSNet
  • 1
на всякий случай для любителей портировать под 0.4:

в шаблоне /templates/skin/ВАШ_СКИН/actions/ActionTopic/add.tpl сроку


<option value="{$oBlog->getId()}" {if $_aRequest.blog_id==$oBlog->getId()}selected{/if}>{$oBlog->getTitle()}</option>


нужно заменить на


<option value="{$oBlog->getId()}" {if $_aRequest.blog_id==$oBlog->getId() or $sBlogId==$oBlog->getId()}selected{/if}>{$oBlog->getTitle()}</option>


спрашивали, то публикую
  • avatar cajoy
  • 1
Там есть пару существенных недочетов, исправлю, выложу… На этой неделе…
  • avatar PSNet
  • 4
приехал с отдыха, увидел релиз — обрадовался. начал писать комментарий — нашел баг.
При вставке пустой цитаты курсор попадает не в центр тегов, а в конец.

<blockquote></blockquote>вот тут курсор появился.


<blockquote>хотя нужен здесь</blockquote>
  • avatar Shatter
  • 1
{if $oUserCurrent and $oUserCurrent->getProfileSex()}
	{if $oUserCurrent ->getProfileSex()=='man'}
		{$aLang.profile_sex_man}
	{else}
		{$aLang.profile_sex_woman}
	{/if}
{/if}
  • avatar 1d10t
  • 0
я сделал мини-плагин для приветсочи, который запрещает чуваку голосовать за топик, если чувак его не откомментил. на саете появился срач! клёве. тебе надо такой? выдам по запосу.
Подключить редактор к комментам не долго:
Пишем сет кнопок для редактора в комментариях, для этого открываем ..\js\libs\markitup\sets\default\set.js и дописываем следующее:
commentsSettings = {	
	onShiftEnter:  	{keepDefault:false, replaceWith:'<br />\n'},
	onCtrlEnter:  	{keepDefault:false, openWith:'\n<p>', closeWith:'</p>'},
	onTab:    		{keepDefault:false, replaceWith:'    '},
	previewParserPath: DIR_WEB_ROOT+'/include/ajax/textPreview.php',
	previewParserVar: 'text',
	markupSet:  [ 	
		{name:'Жирный', className:'editor-bold', key:'B', openWith:'(!(<strong>|!|<b>)!)', closeWith:'(!(</strong>|!|</b>)!)' },
		{name:'Наклонный', className:'editor-italic', key:'I', openWith:'(!(<em>|!|<i>)!)', closeWith:'(!(</em>|!|</i>)!)'  },
		{name:'Перечеркнутый', className:'editor-stroke', key:'S', openWith:'<s>', closeWith:'</s>' },
		{name:'Подчеркнутый', className:'editor-underline', key:'U', openWith:'<u>', closeWith:'</u>' },
		{separator:'---------------' },
		{name:'Цитата', className:'editor-quote', key:'Q', openWith:'<blockquote>', closeWith:'</blockquote>' },
		{name:'Код', className:'editor-code', openWith:'<code>', closeWith:'
' },
{separator:'---------------' },
{name:'Изображение', className:'editor-picture', key:'P', beforeInsert: function(h) { $('#form_upload_img').jqmShow(); } },
{name:'Ссылка', className:'editor-link', key:'L', openWith:'<a href="[![Link:!:http://]!]"(!( title="[![Title]!]")!)>', closeWith:'', placeHolder:'Your text to link...' },
{separator:'---------------' },
{name:'Предпросмотр', className:'editor-preview', call:'preview'}
]
} думаю такого набора достаточно для комментов.
Далее, открываем comment_tree.tpl и добавляем в самый низ (если нужно разрешить грузить картинки)
{include file='window_load_img.tpl' sToLoad='topic_text'}

можно еще убрать строчку предосмотра дабы не дублировалось:
<input type="button" value="{$aLang.comment_preview}" onclick="comments.preview();" />

Остается только подключить редактор, в ../js/main.js находим строчку
// Подключаем редактор
    $('#topic_text').markItUp(mySettings);

и под ней дописываем
$('#form_comment_text').markItUp(commentsSettings);

все, редактор подключен.
  • avatar xEviL
  • 0
Если под «плагином» подразумевается плагин LS,
то в его инициализации в Init(){...} допишите строчку:
$this->Viewer_Assign('show_frame','1');

а в шаблоне напишите:
{if $show_frame}
<!-- Код фрейма --> 
{/if}
как сделать чтобы вырезало не квадратом, подскажите пожалуйста, например размеров 150х75
  • avatar onqu
  • 0
В шаблоне block.tags.tpl надо справить метод кодирования символов.

7 строка с:

<li><a class="w{$oTag->getSize()}" rel="tag" href="{router page='tag'}{$oTag->getText()|escape:'html'}/">{$oTag->getText()|escape:'html'}</a></li>

на
<li><a class="w{$oTag->getSize()}" rel="tag" href="{router page='tag'}{$oTag->getText()|escape:'url'}/">{$oTag->getText()|escape:'html'}</a></li>
Тоже озадачился этой проблемой, надоело что поисковики видят эти кракозябрики.

Сначала думал дело в настройках кодировок или базе, оказалось совсем иначе.

В файле function.php есть функция:
function func_text_words($sText,$iCountWords) {
	$sText=str_replace("\r\n",'[<rn>]',$sText);
	$sText=str_replace("\n",'[<n>]',$sText);
		
	$iCount=0;
	$aWordsResult=array();
	$aWords=preg_split("/\s+/",$sText);	
	for($i=0;$i<count($aWords);$i++) {
		if ($iCount>=$iCountWords) {
			break;
		}
		if ($aWords[$i]!='[<rn>]' and $aWords[$i]!='[<n>]') {
			$aWordsResult[]=$aWords[$i];
			$iCount++;
		}
	}
	$sText=join(' ',$aWordsResult);	
	$sText=str_replace('[<rn>]'," ",$sText);
	$sText=str_replace('[<n>]'," ",$sText);	
	return $sText;	
}


В ней строчку:
$aWords=preg_split("/\s+/",$sText);

Меняем на:
$aWords=preg_split("/\s+/u",$sText);


preg_split — некорректно отрабатывает без параметра u

После этого кракозябры исчезнут.

У себя делал на 3 версии LS, но функция в том же виде и в 4 версии, так-что может будет ещё кому полезна.

Пологаю проблема имеет определённую зависимость от хостинга, или от версии PHP и проявляться может не всегда.
  • avatar kerby
  • 0
Хук должен выглядеть так:
public function TopicShow($aParams)
{
	$oTopic=$aParams['oTopic'];
	
	// Проверяем авторизован ли юзер, если нет - обновляем статистику
	$do_count_visits=(!$this->User_IsAuthorization());
	if (!$do_count_visits)
	{
		// Если авторизован, проверяем не он ли стартер топика
		$oUser=$this->User_GetUserCurrent();
		$do_count_visits=$oUser->getId()!=$oTopic->getUserId();
	}

	if ($do_count_visits)
	{
		$oTopic->setCountRead($oTopic->getCountRead()+1);
		$this->Topic_UpdateTopic($oTopic);

	}
}


Единственное, тут ни где не учитывается посещение сайта поисковыми машинами, но, в принципе, этим можно пренебречь при большом количестве посещений :)
  • avatar dance
  • 0
Проблема решена. В actions/ActionTopic/add.tpl в теге
<form></form>
находится скрипт
<script language="JavaScript" type="text/javascript">
     					ajaxBlogInfo($('blog_id').value);


выносим его за пределы form и все работает
  • avatar Loci
  • 0
  • 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; }
  • avatar 1d10t
  • 0
какие такие глюки

надо просто в конфиге записать доменное имя в виде punycode

типа xn--80aaepkcu7d3a0g.xn--p1ai == живаяулица.рф