<?xml version='1.0' encoding='UTF-8'?>
<rss version='2.0'>
	<channel>
		<title>cotonti.com : Tips &amp; Tricks</title>
		<link>https://www.cotonti.com</link>
		<description>Last topic posts</description>
		<generator>Cotonti</generator>
		<language>en</language>
		<pubDate>Wed, 15 Apr 2026 23:28:49 -0000</pubDate>

		<item>
			<title>Kort</title>
			<description><![CDATA[<p dir="ltr" id="docs-internal-guid-4cebc87d-7fff-8b81-3e3b-317f5af0762f"><strong>Как вывести имя хоста вместе с ip-адресом в плагине Whosonline?</strong></p><hr /><ol><li dir="ltr"><p dir="ltr">Используем хуки <code>whosonline.users.loop</code> и <code>whosonline.guests.loop</code></p></li><li dir="ltr"><p dir="ltr">Имя хоста получаем с помощью функции <code>gethostbyaddr()</code></p></li><li dir="ltr"><p dir="ltr">Формируем новый TPL-тег</p></li></ol><p dir="ltr">Примерно так:</p><pre><code class="language-php">&lt;?php
/* ====================
[BEGIN_COT_EXT]
Hooks=whosonline.users.loop,whosonline.guests.loop
[END_COT_EXT]
==================== */

defined('COT_CODE') or die('Wrong URL');

$host = gethostbyaddr($row['online_ip']);
$host = ($host == $row['online_ip']) ? $L['na'] : $host;

$t-&gt;assign([
  'USER_OR_GUEST_HOST' =&gt; $host,
]);</code></pre><p>Результат:</p><p><a href="https://www.cotonti.com/datas/users/whosonline_183.jpg" title=""><img src="https://www.cotonti.com/datas/thumbs/whosonline_183.jpg" alt="" /></a></p>]]></description>
			<pubDate>Wed, 03 Dec 2025 14:17:32 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=9337&d=0#post48590]]></link>
		</item>
		<item>
			<title>Sergeich</title>
			<description><![CDATA[<p><strong>Как правильно оформлять пути при создании новых категорий любой вложенности?</strong></p>

<p>Используйте пути следующего вида:</p>

<p><strong>001</strong> - категория первого уровня,</p>

<p><strong>001.001</strong> - подкатегория второго уровня.</p>

<p>Далее по аналогии.</p>

<p> </p>
]]></description>
			<pubDate>Sun, 24 Mar 2024 16:41:42 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=9337&d=0#post47911]]></link>
		</item>
		<item>
			<title>Kopusha</title>
			<description><![CDATA[<p>To find where you are try</p>

<p>Extention?</p>

<pre>
<code class="language-php">{PHP.env.ext} or {PHP.e}
</code></pre>

<p>Module?</p>

<pre>
<code class="language-php">{PHP.m}
</code></pre>

<p>Zone?</p>

<pre>
<code class="language-php">{PHP.z}
</code></pre>


<p class="updated"><strong>Added 17 seconds later:</strong></p><p>Or use {PHP|dump}</p>

<p>$env['ext']; // содержит название текущего расширения $env['location']; // условное название раздела сайта</p>

<p>// примеры... // для админки $env['location'] = 'administration'; $env['ext'] = 'admin';</p>

<p>// для плагинов $env['location'] = 'plugins';</p>

<p>//для любых расширений $env['ext'] = 'имя_расширения';</p>

<p>//страница логина $env['location'] = 'users'; $env['ext'] = 'users';</p>

<p>// для главной страницы $env['location'] = 'home'; $env['ext'] = 'index';</p>


<p class="updated"><strong>Added 2 minutes later:</strong></p><p>Sometimes we need redirect user entered a page immediately</p>

<pre>
<code class="language-php">{PRD_ID|cot_url('folio', 'id=$this','', 1)|cot_redirect()}
</code></pre>


<p class="updated"><strong>Added 1 minute later:</strong></p><h1>Link to users profile page</h1>

<p>By user ID</p>

<pre>
<code class="language-php">{COMMENTS_POSTER_ID|cot_url('users', 'm=details&amp;id=$this')}
{PRJ_OWNER_ID|cot_url('users', 'm=details&amp;id=$this')}
</code></pre>

<p>By user name (bad habit)</p>

<pre>
<code class="language-php">{COMMENTS_POSTER_NAME|cot_url('users', 'm=details&amp;u='$this)}
{PRJ_OWNER_NAME|cot_url('users', 'm=details&amp;u='$this)}
</code></pre>


<p class="updated"><strong>Added 49 seconds later:</strong></p><p><strong>Modify any tag in TPL on the fly</strong></p>

<pre>
<code class="language-php">{ANY_TAG|cot_rc_modify($this, 'class="" style="" placeholder=""')}
</code></pre>


<p class="updated"><strong>Added 26 seconds later:</strong></p><p><strong>If can admin some area</strong></p>

<p>For example all pages</p>

<pre>
<code class="language-php">&lt;!-- IF {PHP|cot_auth('page', 'any', 'A')} --&gt;
</code></pre>

<p>Only that category in pages or folio</p>

<pre>
<code class="language-php">&lt;!-- IF {PHP.c|cot_auth('page', '$this', 'A')} --&gt;
{PHP.c|cot_auth('folio', $this, 'A')}
</code></pre>

<p>If can write in that category</p>

<pre>
<code class="language-php">&lt;!-- IF {PHP.c|cot_auth('page', '$this', 'W')} -→
</code></pre>


<p class="updated"><strong>Added 45 seconds later:</strong></p><p><strong>If user is owner</strong></p>

<p>If user is in his own profile details</p>

<pre>
<code class="language-php">&lt;!-- IF {PHP.usr.id} == {USERS_DETAILS_ID} --&gt;
</code></pre>

<p>If this comment is yours</p>

<pre>
<code class="language-php">&lt;!-- IF {PHP.usr.id} == {COMMENTS_ROW_AUTHOR_ID} --&gt;
</code></pre>


<p class="updated"><strong>Added 2 minutes later:</strong></p><p><strong>If plugin config TPL + PHP</strong></p>

<p>&lt;!-- IF {PHP.cfg.plugin.placemarks.enable_radius} -→</p>

<p>if ($cfg['plugin']['placemarks']['enable_radius'])</p>

<p><strong>Существует ли функция?</strong></p>

<p>if (function_exists("uk_com")) { uk_com("notify", "com"); }</p>
]]></description>
			<pubDate>Fri, 22 Mar 2024 21:23:32 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=9337&d=0#post47910]]></link>
		</item>
		<item>
			<title>Kabak</title>
			<description><![CDATA[<h4>Как проверить авторство топика на форуме ?</h4>

<p><small>( Например, для того, чтобы вывести рядом с автором темы какое-то обозначение, указывающее, что - это автор темы. )</small></p>

<p> </p>

<p>используем такую конструкцию :</p>

<pre class="brush:xml;">
	&lt;!-- IF {PHP.rowt.ft_firstpostername}  ==  {PHP.row.user_name} --&gt;
            &lt;div class="topic_starter"&gt;&lt;img src="https://www.cotonti.com/{PHP.cfg.themes_dir}/{PHP.theme}/img/author.png"&gt;&lt;/div&gt;
	&lt;!-- ENDIF --&gt;</pre>

<pre class="brush:css;">
.topic_starter
{
  margin-left: 90px;
}

.topic_starter img
{
  width: 35px;
  height: 35px;
  -webkit-filter: drop-shadow(3px 3px 3px #0000007f);
}</pre>

<p>Как выглядит можно посмотреть на нашем форуме рядом с аватаркой автора темы.</p>

<p> </p>

<h4>Как проверить наличие плагина <strong>toplastseen</strong> в системе ?</h4>

<p><small>( Аналогично по имени проверяется наличие и активность любого плагина. )</small></p>

<pre class="brush:xml;">
&lt;!-- IF {PHP.cot_plugins_active.toplastseen} --&gt;
  &lt;li&gt;&lt;a href="https://www.cotonti.com/{PHP|cot_url('plug','e=toplastseen')}"&gt;{PHP.L.Top_Last_Seen}&lt;/a&gt;&lt;/li&gt;
&lt;!-- ENDIF --&gt;</pre>

<p> </p>

<h4>Как проверить наличие модуля <strong>PM</strong> в системе ?</h4>

<p><small>( Аналогично по имени проверяется наличие и активность любого модуля. )</small></p>

<pre class="brush:xml;">
&lt;!-- IF {PHP.cot_modules.pm} --&gt;
    &lt;!-- IF {PHP.usr.messages} --&gt;
        &lt;li&gt;&lt;a class="glowing" href="https://www.cotonti.com/{PHP|cot_url('pm')}" title=" 
                 {PHP.L.Private_messages}"&gt;{PHP.L.Private_Messages}&lt;/a&gt;&lt;/li&gt;
    &lt;!-- ELSE --&gt;
    &lt;li&gt;&lt;a class="" href="https://www.cotonti.com/{PHP|cot_url('pm')}" title="{PHP.L.Private_messages}"&gt; 
                  {PHP.L.Private_Messages}&lt;/a&gt;&lt;/li&gt;
    &lt;!-- ENDIF --&gt;
&lt;!-- ENDIF --&gt;</pre>

<p> </p>

<h4>Как проверить есть ли личные сообщения у пользователя ?</h4>

<pre class="brush:xml;">
&lt;!-- IF {PHP.usr.messages} --&gt;
</pre>

<p> </p>

<h4>Как проверить  является ли админом пользователь ?</h4>

<pre class="brush:xml;">
&lt;!-- IF {PHP.usr.isadmin} --&gt;
</pre>

<p> </p>

<h4>Как проверить является ли пользователь гостем ?</h4>

<pre class="brush:xml;">
&lt;!-- BEGIN: GUEST --&gt;</pre>

<p> </p>

<h4>Как проверить уровень пользователя ?</h4>

<pre class="brush:xml;">
&lt;!-- IF {PHP.usr.maingrp} &gt; 1 --&gt;</pre>

<p> </p>

<p><strong>Как проверить как давно опубликован пост на форуме ?</strong></p>

<pre class="brush:xml;">
&lt;!-- IF {PHP|time()} - {PAGE_ROW_UPDATED_STAMP} &gt; 1000000 --&gt;

&lt;!-- или вариант с отображением прошедшего времени с момента публикации --&gt;

{PHP|cot_build_timegap({FORUMS_POSTS_ROW_CREATION_STAMP})}</pre>

<p> </p>

<p><strong>Как проверить как давно опубликован комментарий ?</strong></p>

<pre class="brush:xml;">
&lt;!-- IF {PHP|time()} - {PAGE_ROW_DATE_STAMP} &gt; 259200 --&gt;  
&lt;div class="card_body"&gt;
&lt;!-- ELSE --&gt;
&lt;div class="card_body1"&gt;
&lt;!-- ENDIF --&gt;</pre>

<p> </p>

<p><strong>Как отобразить в названии или описании темы на форуме , статье специальные символы ?</strong></p>

<pre class="brush:xml;">
&lt;a href="https://www.cotonti.com/{PAGE_ROW_URL}"&gt;{PAGE_ROW_TITLE|htmlspecialchars_decode($this)}&lt;/a&gt;</pre>

<p> </p>

<p>Проверка статей и запрос перед удалением для администратора</p>

<pre class="brush:xml;">
&lt;!-- IF {PHP._GET.id} --&gt;
    &lt;li&gt;&lt;a href="https://www.cotonti.com/{PHP._GET.id|cot_url('page','m=edit&amp;id=$this')}"&gt;Редактировать&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://www.cotonti.com/{PHP._GET.id|cot_url('page','m=add&amp;clone=1&amp;id=$this')}"&gt;Клонировать&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://www.cotonti.com/{PHP|cot_url('admin', 'm=page&amp;a=unvalidate&amp;id={PHP.id}&amp;x={PHP.sys.xk}')|cot_confirm_url($this, 'page', 'page_confirm_unvalidate')}" class="confirmLink"&gt;{PHP.L.Putinvalidationqueue}&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://www.cotonti.com/{PHP|cot_url('page', 'm=edit&amp;a=update&amp;delete=1&amp;id={PHP.id}&amp;x={PHP.sys.xk}')}"&gt;{PHP.L.Delete}&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://www.cotonti.com/{PHP|cot_url('page', 'm=edit&amp;a=update&amp;delete=1&amp;id={PHP.id}&amp;x={PHP.sys.xk}')|cot_confirm_url($this, 'page', 'page_confirm_delete')}" class="confirmLink"&gt;{PHP.L.Delete}&lt;/a&gt;&lt;/li&gt;
&lt;!-- ENDIF --&gt;

// или 

&lt;!-- IF {PHP._GET.id} --&gt;
    &lt;li class="admin_pagop"&gt;&lt;a href="https://www.cotonti.com/{PHP._GET.id|cot_url('page','m=edit&amp;id=$this')}"&gt;{PHP.L.Edit}&lt;/a&gt;&lt;/li&gt;
    &lt;li class="admin_pagop"&gt;&lt;a href="https://www.cotonti.com/{PHP._GET.id|cot_url('page','m=add&amp;clone=1&amp;id=$this')}"&gt;{PHP.L.page_clone}&lt;/a&gt;&lt;/li&gt;
    &lt;li class="admin_pagop"&gt;&lt;a href="https://www.cotonti.com/{PHP._GET.id|cot_url('admin', 'm=page&amp;a=unvalidate&amp;id=$this&amp;x={PHP.sys.xk}')|cot_confirm_url($this, 'page', 'page_confirm_unvalidate')}" class="confirmLink"&gt;{PHP.L.Putinvalidationqueue}&lt;/a&gt;&lt;/li&gt;
    &lt;li class="admin_pagop"&gt;&lt;a href="https://www.cotonti.com/{PHP._GET.id|cot_url('page', 'm=edit&amp;a=update&amp;delete=1&amp;id=$this&amp;x={PHP.sys.xk}')|cot_confirm_url($this, 'page', 'page_confirm_delete')}" class="confirmLink"&gt;{PHP.L.Delete}&lt;/a&gt;&lt;/li&gt;
&lt;!-- ENDIF --&gt;</pre>

<p> </p>

<p>Как проверить сколько времени прошло с момента публикации поста на форуме или статьи( плагин forman &amp; pagelist ) ?</p>

<pre class="brush:xml;">
&lt;!-- IF {PHP|time()} - {PAGE_ROW_UPDATED_STAMP} &gt; 259200 --&gt;</pre>

<p> </p>
]]></description>
			<pubDate>Fri, 22 Mar 2024 14:42:41 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=9337&d=0#post47905]]></link>
		</item>
		<item>
			<title>Sergeich</title>
			<description><![CDATA[<p>Собираем здесь типовые решения простых задач. Один ответ, одно решение.</p>

<p> </p>

<p>Пример:</p>

<p>............................................................................................................</p>

<p><strong>Как настроить отображение даты и времени в шаблоне?</strong></p>

<p> </p>

<p>Для решения этой проблемы в Cotonti есть функция «обёртка» <code>cot_date()</code>. Пример:</p>

<pre class="brush:xml;">
{PAGE_ROW_DATE_STAMP|cot_date('date_full', $this)}</pre>

<p>Подробнее читайте в <a href="https://www.cotonti.com/docs/help/dateformatting?l=ru&amp;highlight=SHORT%20DATE">статье документации</a>.</p>

<p class="updated"> </p>
]]></description>
			<pubDate>Fri, 22 Mar 2024 11:48:01 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=9337&d=0#post47898]]></link>
		</item>
	</channel>
</rss>