<?xml version='1.0' encoding='UTF-8'?>
<rss version='2.0'>
	<channel>
		<title>cotonti.com : [Plugin] Comlist / Pagecom</title>
		<link>https://www.cotonti.com</link>
		<description>Son konu mesajları</description>
		<generator>Cotonti</generator>
		<language>en</language>
		<pubDate>Wed, 15 Apr 2026 00:12:51 -0000</pubDate>

		<item>
			<title>Kabak</title>
			<description><![CDATA[<pre class="brush:php;">
function pagecom_string_truncate($text, $allowed_symbols_in_str = 100, $considerhtml = true, $exact = false, $Output_Ending = '', $str_amount_required = 3 )
{
    $looking_for = ['&lt;br&gt;', '&lt;br /&gt;', '&lt;br/&gt;' ];
    $looking_for2 = [ '&lt;a href=' ];
    $looking_for3 = [ '&lt;p&gt;' ];
    $looking_for4 = [ '&lt;h1&gt;', '&lt;h2&gt;', '&lt;h3&gt;', '&lt;/h1&gt;', '&lt;/h2&gt;', '&lt;/h3&gt;' ];

    $str_amount_required &lt; 1 ? $str_amount_required = 1 : $str_amount_required;
 
    $No_BR = 0;
    
    $total_symbols_amount = $str_amount_required * $allowed_symbols_in_str;
    
    $Output = '';
    $No_Output_Ending = false;
    $Required_output_ending = false;
    $str_amount_ready = 0;  // how many strings ready for output strings
    $str_symbols_ready = 0; // how many symbols were pushed to the next output struing


    $link_replaced = false;

    $visible_length = mb_strlen(preg_replace('/&lt;.*?&gt;/', '', $text));
    
    $Output_Ending_size = strlen( $Output_Ending ) + 1;

    $truncate = '';
    $truncate_required = false;
    $add_one_BR = false;
    $truncated_by_space = false;
    $plain_mode = false;
    $open_tags = [];
    $total_length = 0;
    $plain_tag = false;
    $long_str_found = false;


    $text = str_replace($looking_for4, '', $text );

    for ( $index = count ( $looking_for ) - 1; $index &gt;= 0; --$index )
    {
        $No_BR += substr_count ($text, $looking_for[$index] );
    }

	if (empty($text)) {
		$truncate .= $Output_Ending;
        $truncate .= "&lt;br&gt;&lt;br&gt;";
		goto Inject_New_Lines;
    }

	if (!$considerhtml) 
	{
		if (mb_strlen($text) &lt;= $total_symbols_amount) 
		{
                $truncate = $text;
                goto Inject_New_Lines;
		}
		else 
			$truncate = mb_substr($text, 0, $total_symbols_amount);
	}
	else
	{
		// if the plain text is shorter than the maximum length, return the whole text
		$temp = mb_strlen(preg_replace('/&lt;.*?&gt;/', '', $text));
		if ( !preg_match('/&lt;\s*(pre|plaintext)/', $text ) &amp;&amp; $temp &lt;= $total_symbols_amount ) 
		{
            if ( $No_BR &gt; 0 )
            {
                // do nothing
            }
            else
            {
                if ( $visible_length &lt; $allowed_symbols_in_str )
                {

// Check for &lt;p&gt; tag
                    $offset = 0;
                    $offset1 = '';
                    $offset1 = strpos($text, $looking_for3[0], $offset );

                    if ( $offset1 == '' )
                    {
                        $truncate = $text;
                        goto Inject_New_Lines;
                    }
// Check for &lt;p&gt; tag


                }
            }
		}
		// splits all html-tags to scanable lines
		preg_match_all('/(&lt;.+?&gt;)?([^&lt;&gt;]*)/s', $text, $lines, PREG_SET_ORDER);

		foreach ($lines as $line_matchings) {
			// if there is any html-tag in this line, handle it and add it (uncounted) to the output
			if (!empty($line_matchings[1])) {
				// if it's an "empty element" with or without xhtml-conform closing slash (f.e. &lt;br/&gt;)
				if (
                    preg_match(
                        '/^&lt;(\s*.+?\/\s*|\s*(img|br|input|hr|area|base|basefont|col|frame|isindex|link|meta|param)(\s.+?)?)&gt;$/is',
                        $line_matchings[1]
                    )
                ) {
					// do nothing
 //                   ++$str_amount_ready;
                    $str_symbols_ready = 0;
				} elseif (preg_match('/^&lt;\s*\/([^\s]+?)\s*&gt;$/s', $line_matchings[1], $tag_matchings)) {
                    // if tag is a closing tag (f.e. &lt;/b&gt;)
					$tag = false;
					if (strtolower($tag_matchings[1]) == $plain_mode) {
						$plain_mode = false;
					} else {
						// delete tag from $open_tags list
						$pos = array_search($tag_matchings[1], $open_tags);
						if ($pos !== false) {
							unset($open_tags[$pos]);
						}
					}
				} elseif (preg_match('/^&lt;\s*([^\s&gt;!]+).*?&gt;$/s', $line_matchings[1], $tag_matchings)) {
                    // if tag is an opening tag (f.e. &lt;b&gt;)
					$tag = strtolower($tag_matchings[1]);
					$plain_tag = in_array($tag, array('pre','plaintext')) ? $tag : false;
					// add tag to the beginning of $open_tags list
					if (!$plain_mode &amp;&amp; !$plain_tag) {
                        array_unshift($open_tags, mb_strtolower($tag));
                    }
				}
				// add html-tag to $truncate'd text
				if (!$plain_mode) 
                {
                    if ( $str_amount_ready &gt; $str_amount_required )
                        break;
                        
                    // Found &lt;li&gt; tag
                    if ( $line_matchings[1] == '&lt;/li&gt;' )
                    {
                        if ( $str_amount_ready &lt; $str_amount_required )
                        {
                            ++$str_amount_ready;
                            $str_symbols_ready = 0;
                        } 
                        else 
                        {
                            break;
                        }
                    }

                    if ( $line_matchings[1] == '&lt;/p&gt;' )
                    {
                        if ( $str_amount_ready &lt; $str_amount_required )
                        {
                            ++$str_amount_ready;
                            $str_symbols_ready = 0;
                            $long_str_found == true ? $long_str_found = false : $long_str_found;
                        } 
                        else 
                        {
                            break;
                        }
                    }

                    // Last &lt;li&gt; should not be closed
                    if ( $line_matchings[1] == '&lt;/li&gt;' &amp;&amp; $str_amount_ready &gt;= $str_amount_required )
                    {
                        $No_Output_Ending = true;
                        $truncate .= $Output_Ending;
                        $truncate .= $line_matchings[1];
                        break;
                    } 

                    if ( $line_matchings[1] == '&lt;p&gt;' &amp;&amp; $str_amount_ready &gt;= $str_amount_required )
                    {
                        break;
                    }
                    else
                    {
                        $truncate .= $line_matchings[1];
                    }

                    if ( $line_matchings[1] == '&lt;p&gt;' &amp;&amp; $str_symbols_ready &gt; 0 &amp;&amp; $long_str_found )
                    {
                        ++$str_amount_ready;
                        $str_symbols_ready = 0;
                        $long_str_found = false;
                    }

                    if ( $line_matchings[1] == '&lt;/p&gt;' &amp;&amp; $str_amount_ready == $str_amount_required )
                    {
                        break;
                    }
                    
                    if ( $line_matchings[1] == '&lt;br&gt;' || $line_matchings[1] == '&lt;br /&gt;' || $line_matchings[1] == '&lt;br/&gt;' )
                    {
                        if ( $str_amount_ready &gt;= $str_amount_required )
                        {
                            break;
                        }
                        else
                        {
                            ++$str_amount_ready;
                            $str_symbols_ready = 0;   
                            
                            if ( $str_amount_ready &gt;= $str_amount_required )
                            {                            
                                $No_Output_Ending = true;
                                $truncate .= $Output_Ending; 
                                break;
                            }
                        }
                    }
                }
			}

			// the number of characters which are left
			$left = $total_symbols_amount - $total_length;
			if ($plain_mode || ($plain_tag &amp;&amp; $tag)) {
				// treats text as plain in &lt;pre&gt;, &lt;plaintext&gt; tags
				$content = $plain_mode ? $line_matchings[0] : $line_matchings[2];
				if (mb_strlen($content) &lt;= $left) {
					$truncate .= $content;
					$total_length += mb_strlen($content);

				} else {
					$truncate .= mb_substr($content, 0, $left);
					$total_length += $left;
				}
				if ($plain_tag &amp;&amp; !$plain_mode) {
                    $plain_mode = $plain_tag;
                }

			} else {
				// calculate the length of the plain text part of the line; handle entities as one character
				$content_length = mb_strlen(preg_replace('/&amp;[0-9a-z]{2,8};|&amp;#[0-9]{1,7};|&amp;#x[0-9a-f]{1,6};|[\r\n\s]{2,}/i', ' ', $line_matchings[2]));
                // Checking for &lt;a&gt; href block
                $offset1 = strpos($line_matchings[1], $looking_for2[0], 0 );

				if ($total_length + $content_length &gt; $total_symbols_amount &amp;&amp; $offset1 =='' ) {
					$entities_length = 0;

                    // One big string
                    $Big_str = (int)($content_length / $allowed_symbols_in_str);
                    
                    $New_str_sym_amount = $content_length - $allowed_symbols_in_str;
                    if ( $New_str_sym_amount &lt; 0 )
                    {
                        $New_str_sym_amount = 0;
                    }

                    $str_amount_ready += $Big_str;
                    if ( $str_amount_ready &gt;= $str_amount_required )
                    {
// LINK REPLACE     
                        $offset1 = strpos($line_matchings[1], $looking_for2[0], 0 );

                        if ( $offset1 != '' )
                        {
                            $truncate .= '...';
                        }
                        else
                        {
                            $truncate_required = true;

                            if ( $left &lt; $allowed_symbols_in_str )
                            {
                                $truncate .= mb_substr($line_matchings[2], 0, $left ); 
                            }

                            if ( $New_str_sym_amount &lt; $allowed_symbols_in_str )
                            {
                                $truncate .= mb_substr($line_matchings[2], 0, $allowed_symbols_in_str );
                                $Required_output_ending = true;
                            }

                            if ( $New_str_sym_amount &gt; $allowed_symbols_in_str &amp;&amp;
                                 $left &gt; $allowed_symbols_in_str )
                                 {
                                    $truncate .= mb_substr($line_matchings[2], 0, $left - $Output_Ending_size * 3 ); 
                                 }
                            
                        }
// LINK REPLACE 
// One big string  no &lt;p&gt; tag
                        $offset1 = strpos($truncate, $looking_for3[0], 0 );

                        if ( $offset1 == '' )
                        {
                            $add_one_BR = true;
                        }
                        else
                        {
                            $add_one_BR = false;
                        }
// One big string  no &lt;p&gt; tag
                    }
                    
                    
					// search for html entities and spaces
					if (
                        preg_match_all(
                            '/&amp;[0-9a-z]{2,8};|&amp;#[0-9]{1,7};|&amp;#x[0-9a-f]{1,6};|[\r\n\s]{2,}/i',
                            $line_matchings[2],
                            $entities,
                            PREG_OFFSET_CAPTURE
                        )
                    ) {
						// calculate the real length of all entities in the legal range
						foreach ($entities[0] as $entity) {
							if ($entity[1]+1-$entities_length &lt;= $left) {
								$left--;
								$entities_length += mb_strlen($entity[0]);
							} else {
								// no more characters left
								break;
							}
						}
					}

                    // maximum lenght is reached, so get off the loop
					$truncated_by_space = preg_match('/[\r\n\s]/', mb_substr($line_matchings[2], $left+$entities_length, 1));
					break;
				} else 
                {
                    $offset1 = strpos($line_matchings[1], $looking_for2[0], 0 );

                    if ( $offset1 != '' )
                    {
                            $truncate .= '...';
                            $No_Output_Ending = true;
                            $total_length += $content_length;
                            $link_replaced = true;
                    }
                    else
                    {
                        $truncate .= $line_matchings[2]; 
                        $total_length += $content_length;
                    }
					
/* Injection */
                    if ( $link_replaced )
                    {
                        $link_replaced = false;
                        $str_symbols_ready += 3;
                    }
                    else
                    {
                        $str_symbols_ready += $content_length;
                    }
                
                    if ( $str_symbols_ready &gt;= $allowed_symbols_in_str &amp;&amp; $str_amount_ready &lt; $str_amount_required )
                    {
                        $long_str_found = true;
                        do 
                        {
                            ++$str_amount_ready;

                            if ( $str_amount_ready &gt; $str_amount_required )
                                break;

                            if ( $str_amount_ready == $str_amount_required &amp;&amp; 
                                $str_symbols_ready &gt; $allowed_symbols_in_str )
                                {
                                    $truncate = mb_substr($truncate, 0, -($str_symbols_ready - $allowed_symbols_in_str + $Output_Ending_size) );
                                    break;
                                }

                            $str_symbols_ready = $str_symbols_ready - $allowed_symbols_in_str;
                        }
                        while ( $str_symbols_ready &gt;= $allowed_symbols_in_str );
                    }

/* Injection */                    
				}
			}

			// if the maximum length is reached, get off the loop
			if ($total_length &gt;= $total_symbols_amount || $str_symbols_ready &gt;= $allowed_symbols_in_str  ) {
				break;
			}
		}
        // No Output_Ending required
        if ( (( $total_length + $Output_Ending_size ) &lt; $total_symbols_amount) &amp;&amp; (( $content_length + $Output_Ending_size ) &lt; $total_symbols_amount ) &amp;&amp; 
             ( $str_symbols_ready + $Output_Ending_size ) &lt; $allowed_symbols_in_str )
        {
            $No_Output_Ending = true;
        }

        if ( $Required_output_ending )
        {
            $No_Output_Ending = false;
        }

    }

	if ( $truncate_required || ( !$exact &amp;&amp; !$truncated_by_space &amp;&amp; !$plain_mode 
                &amp;&amp; ( ($str_symbols_ready &gt;= $allowed_symbols_in_str) || ($content_length &gt;= $total_symbols_amount)) )
    ) {
		// ...search the last occurence of a space...
		if (mb_strrpos($truncate, ' ') &gt; 0) {
			$pos1 = mb_strrpos($truncate, ' ');
			$pos2 = mb_strrpos($truncate, '&gt;');
			$spos = ($pos2 &lt; $pos1) ? $pos1 : ($pos2+1);
			if (isset($spos)) {
				// ...and cut the text in this position
				$truncate = mb_substr($truncate, 0, $spos );
			}
		}
	}

    if ( !$No_Output_Ending )
    {
        $truncate .= $Output_Ending;
    }

	if ($considerhtml) {
		// close all unclosed html-tags
		if ($plain_mode) {
            $truncate .= '&lt;/' . $plain_mode . '&gt;';
        }
		foreach ($open_tags as $tag) {
			$truncate .= '&lt;/' . $tag . '&gt;';
            if ( $tag == 'p' )
             ++$str_amount_ready;
		}
	}

Inject_New_Lines:
    
    if ( $add_one_BR )
    {
        $truncate .= "&lt;br&gt;";
    }


    for ($count = $str_amount_ready; $count &lt; $str_amount_required ; ++$count )
    {
        $truncate .= "&lt;br&gt;";
    }
 
	 return $truncate;
 }
</pre>

<p> </p>

<pre class="brush:php;">
		$t-&gt;assign(cot_generate_usertags($row, 'PAGECOM_ROW_AUTHOR_'));
/* +++++   My code    ==== */
	//	$cutstring = cot_string_truncate($row['com_text'], $cfg['plugin']['pagecom']['message_cut_amount'] * $cfg['plugin']['pagecom']['message_strings_amount'], $considerhtml = true, $exact = false, $cuttext = $cfg['plugin']['pagecom']['end_string']);
		$cutstring = pagecom_string_truncate($row['com_text'], $cfg['plugin']['pagecom']['message_cut_amount'], $considerhtml = true, $exact = false, $cuttext = $cfg['plugin']['pagecom']['end_string'] , $cfg['plugin']['pagecom']['message_strings_amount'] );
/* +++++   My code    ==== */
		$com_text = cot_parse($row['com_text'], $cfg['plugin']['comments']['markup']);

		$t-&gt;assign(array(
			'PAGECOM_ROW_NUM' =&gt; $jj,
			'PAGECOM_ROW_ODDEVEN' =&gt; cot_build_oddeven($jj),
			'PAGECOM_ROW_ID' =&gt; $row['com_id'],
			'PAGECOM_ROW_URL' =&gt; cot_url('page', $link_params, '#c'.$row['com_id']),
			'PAGECOM_ROW_AUTHOR' =&gt; cot_build_user($row['com_authorid'], htmlspecialchars($row['com_author'])),
			'PAGECOM_ROW_AUTHORNAME' =&gt; htmlspecialchars($row['com_author']),
			'PAGECOM_ROW_AUTHORID' =&gt; $row['com_authorid'],
			'PAGECOM_ROW_TEXT' =&gt; $com_text,
			/* +++++   My code    ==== */
			'PAGECOM_ROW_CUTED_TEXT' =&gt; $cutstring,
			/* +++++   My code    ==== */			
			'PAGECOM_ROW_TEXT_PLAIN' =&gt; strip_tags($com_text),
			'PAGECOM_ROW_DATE' =&gt; cot_date('datetime_medium', $row['com_date']),
			'PAGECOM_ROW_DATE_STAMP' =&gt; $row['com_date'],
			'PAGECOM_ROW_CATTITLE' =&gt; htmlspecialchars($structure['page'][$row['page_cat']]['title'])
		));</pre>

<p> </p>
]]></description>
			<pubDate>Pzt, 18 Eyl 2023 14:30:23 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=9263&d=0#post47079]]></link>
		</item>
		<item>
			<title>Kort</title>
			<description><![CDATA[<p>Реализация белого и черного списка:</p>

<ol>
	<li>включить опцию "Создавать теги для модуля Page",</li>
	<li>в аргументе $extra указать +/- (белый / черный), 1/0 (добавлять / не добавлять вложенные подразделы) и указать разделы белого списка через ';' -- все без пробелов,</li>
	<li>установить плагин Pagelist последней версии</li>
</ol>

<p>Вызов такой:</p>

<pre class="brush:xml;">
{PHP|cot_comlist('comlist', '0', '', '+0cat1;cat2')}</pre>

<p>P.S. Но сделать под свои нужды тоже дело!</p>
]]></description>
			<pubDate>Sal, 29 Ağu 2023 08:33:45 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=9263&d=0#post47043]]></link>
		</item>
		<item>
			<title>Kabak</title>
			<description><![CDATA[<p>Я переделал под мои нужны Pagecom/ Из-за наличия чёрного и белых списков он мне нравится больше.  Но это здорово, что есть выбор для пользователей Cotonti.</p>
]]></description>
			<pubDate>Sal, 29 Ağu 2023 07:52:04 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=9263&d=0#post47042]]></link>
		</item>
		<item>
			<title>Kort</title>
			<description><![CDATA[<p>1. Удобство настроек состоит именно в том, что они указываются при конкретном вызове функции. Зачем в админке их задавать глобально? В каждом конкретном случае нужно свое количество записей, порядок сортировки, паджинация, кэш и прочее.</p>

<p>2. Количество символов и строк -- это вообще из области допфункций и CSS. Как оставлять их нужное количество уже пояснял.</p>

<p>3. Прелесть кэша в том, что при наличии закэшированного вывода, он и отдается сразу в шаблон, без отработки функции и не нагружая сервер. При добавлении, удалении и редактировании комментария весь кэш плагина удаляется и при следующем вызове функции создается заново. И так по кругу. Время загрузки страницы можешь сравнить.</p>

<p>4. Кэш и аякс вместе не работают. Плюс необходимости в этом нет.</p>

<p>5. Права доступа к разделам (и, соответственно, страницам) и черно-белые списки -- это о разном. Отдельно сделать можно и то и другое.</p>
]]></description>
			<pubDate>Sal, 29 Ağu 2023 07:30:41 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=9263&d=0#post47041]]></link>
		</item>
		<item>
			<title>Kabak</title>
			<description><![CDATA[<p>Нужно, чтобы плагин делвл выборку комментариев только из тех разделов которые может читать конкретный пользователь в соответствии с его уровнем на сайте.  Чёрным списком я могу исключить коментарии как минимум не зарегистрированным пользователям на сайте.  Для меня чёрный список удобен. </p>

<p> </p>

<p>Если плагин без чёрного списка сам выбирает из базы коментарии которые видны конкретному пользователю в соответствии с его уровнем, то чёрный список не нужен.</p>

<p> </p>

<p>Чёрный и белый списки добавляют гибкости.  Мне нравится, что я могу управлятьтем,  что показывать не зарегистрированным пользователям и наоборот - не показывать, если появилась необходимость.</p>

<p class="updated"><strong>Добавлено 8 минут спустя:</strong></p>

<p>Удобно было бы все эти настройки размещать в админке, а не править TPL.  Например, что в белом или чёрных листах, количество символов и количество строк которое необходимо оставлять, тип сортировки и т.д.</p>
<p class="updated"><strong>Добавлено 45 секунд спустя:</strong></p><p>Мне не понятна прелесть кэша. Я , вероятно, не понимаю как он работает в Cotonti</p>
]]></description>
			<pubDate>Sal, 29 Ağu 2023 07:05:07 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=9263&d=0#post47040]]></link>
		</item>
		<item>
			<title>Kort</title>
			<description><![CDATA[<p>А как вообще надо? Черно-белые списки нужны принципиально или только для исключения показа комментариев в недоступных пользователю разделах?</p>
]]></description>
			<pubDate>Sal, 29 Ağu 2023 06:43:23 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=9263&d=0#post47039]]></link>
		</item>
		<item>
			<title>Kabak</title>
			<description><![CDATA[<p>Я про Pagecom , если не использовать чёрный список. </p>

<p> </p>

<p>В Comlist при рандомной генерации списка комментариев учитывается уровень читателя и не используются комментарии из закрытых для пользователя разделов ?</p>
]]></description>
			<pubDate>Sal, 29 Ağu 2023 06:21:22 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=9263&d=0#post47038]]></link>
		</item>
		<item>
			<title>Kort</title>
			<description><![CDATA[<p>С какими аргументами вызывается функция? Плагин обновлен из репозитория?</p>
]]></description>
			<pubDate>Pzt, 28 Ağu 2023 19:47:39 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=9263&d=0#post47037]]></link>
		</item>
		<item>
			<title>Kabak</title>
			<description><![CDATA[<p>В рандом плагин начинает показывать комментарии страниц которые не должны показываться определённым читателям. Нарушается приватность.  Чёрный список из прежней версии плагина мне нравится больше. <br />
 </p>

<p>Аякс использован только для кэша ? ( может ерунду спрашиваю )</p>
]]></description>
			<pubDate>Pzt, 28 Ağu 2023 15:11:09 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=9263&d=0#post47036]]></link>
		</item>
		<item>
			<title>Kort</title>
			<description><![CDATA[<h2 dir="ltr">[Plugin] Comlist / Pagecom</h2>

<p dir="ltr">Плагин вывода комментариев через функцию по условиям (аргументам):</p>

<ul dir="ltr">
	<li>$tpl – имя шаблона</li>
	<li>$items – количество выводимых элементов (при непустом $pagination – на страницу)</li>
	<li>$order – сортировка в формате SQL (по умолчанию com_id DESC)</li>
	<li>$extra – дополнительный SQL-запрос</li>
	<li>$group – значение 1 группирует комментарии по страницам (одна страница -- один комментарий)</li>
	<li>$offset -- сдвиг записей от начала (минус $offset комментариев)</li>
	<li>$pagination – код паджинации</li>
	<li>$ajax_block – id блока при использовании аякса (включение аякса в конфиге плагина)</li>
	<li>$cache_name – имя записи кэша</li>
	<li>$cache_ttl – срок действия кэша</li>
</ul>

<p>Для работы плагина необходимо установить или просто загрузить <a href="https://www.cotonti.com/extensions/navigation-structure/pagelist">плагин Pagelist</a>.</p>

<h3 dir="ltr">Примеры использования</h3>

<pre class="brush:xml;">
// Вывести 5 последних комментариев
{PHP|cot_comlist(‘comlist’, 5}

// Вывести 5 последних комментариев, сгруппированных по страницам
{PHP|cot_comlist(‘comlist’, 5, ‘’, ‘’, 1}

// Вывести последние комментарии, сгруппированные по страницам 
// и с паджинацией по 5 записей на страницу
{PHP|cot_comlist(‘comlist’, 5, ‘’, ‘’, 1, ‘compage’}

// Вывести последние комментарии, сгруппированные по страницам 
// и с ajax-паджинацией по 5 записей на страницу
{PHP|cot_comlist(‘comlist’, 5, ‘’, ‘’, 1, ‘compage’, ‘com2list’}

// Вывести 5 последних комментариев к опросам
{PHP|cot_comlist(‘comlist’, 5, '', 'com_area = "polls"'}

// Вывести 5 последних комментариев к разделу docs
{PHP|cot_comlist(‘comlist’, 5, '', 'com_area = "page" and com_code = "docs"'}


// Вывести 5 последних комментариев с сортировкой по дате и закэшировать на 1 день
{PHP|cot_comlist(‘comlist’, 5, 'com_date DESC', '', 1, '', '', 'comments_global', 86400}</pre>

<h3 dir="ltr">Почему удалены аргументы black / white lists</h3>

<p>Функционал белого и черного списка нечасто используется, поэтому он реализоватн в виде дополнения. Пример использования в шаблоне:</p>

<pre class="brush:xml;">
{PHP|cot_comlist('comlist', '5', 'com_date DESC', '-1docs;system', 1)}</pre>

<p>В аргументе $extra можно указать режим и опции белого и черно списка:</p>

<ul>
	<li>первый символ (+ или -) отвечает за режим белого или черного списка соответственно,</li>
	<li>второй символ (0 или 1) отвечает за включение или не включение вложенных подкаталогов,</li>
	<li>все остальное - это коды разделов, указанные через точку с запятой.</li>
</ul>

<p>Если в аргументе $extra присутствует точка с запятой, функция "расшифрует" и обработает указанные настройки. Работает только при включенной опции "Генерировать page tags".</p>

<p>Если необходимости в использовании белых и черных списков нет, части comlist.first.black_white.php и comlist.query.black_white.php можно отключить (поставить на паузу).</p>

<p><a href="https://www.cotonti.com/extensions/comlist-sedby">Страница загрузки</a> |  <a href="https://github.com/seditio/cot_comlist" rel="nofollow">Репозиторий на Github</a></p>
]]></description>
			<pubDate>Per, 17 Ağu 2023 17:30:02 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=9263&d=0#post47023]]></link>
		</item>
	</channel>
</rss>