<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.umisoft.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%92%D1%8B%D0%B2%D0%BE%D0%B4_%D1%82%D0%B5%D0%BC_%D1%83%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BE%D0%BD%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B8</id>
	<title>Вывод тем указанной конференции - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.umisoft.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%92%D1%8B%D0%B2%D0%BE%D0%B4_%D1%82%D0%B5%D0%BC_%D1%83%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BE%D0%BD%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B8"/>
	<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%92%D1%8B%D0%B2%D0%BE%D0%B4_%D1%82%D0%B5%D0%BC_%D1%83%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BE%D0%BD%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B8&amp;action=history"/>
	<updated>2026-05-09T15:24:14Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%92%D1%8B%D0%B2%D0%BE%D0%B4_%D1%82%D0%B5%D0%BC_%D1%83%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BE%D0%BD%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B8&amp;diff=5283&amp;oldid=prev</id>
		<title>Mad grant в 09:27, 5 июня 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%92%D1%8B%D0%B2%D0%BE%D0%B4_%D1%82%D0%B5%D0%BC_%D1%83%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BE%D0%BD%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B8&amp;diff=5283&amp;oldid=prev"/>
		<updated>2013-06-05T09:27:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Версия 09:27, 5 июня 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 2.9&amp;#039;&amp;#039;&amp;#039;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Для вывода тем текущей конференции используется макрос forum conf(). Если требуется вывести темы не текущей, а какой нибудь определённой конференции то можно написать кастомный макрос, на основе существующего forum conf(), который в качестве одного из параметров принимает id конференции.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Для вывода тем текущей конференции используется макрос forum conf(). Если требуется вывести темы не текущей, а какой нибудь определённой конференции то можно написать кастомный макрос, на основе существующего forum conf(), который в качестве одного из параметров принимает id конференции.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Для начала скопируем код метода conf из файла ~/classes/modules/forum/class.php и поместим его в файл в этой же директории __custom.php сразу после строки&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Для начала скопируем код метода conf из файла ~/classes/modules/forum/class.php и поместим его в файл в этой же директории __custom.php сразу после строки&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Mad grant</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%92%D1%8B%D0%B2%D0%BE%D0%B4_%D1%82%D0%B5%D0%BC_%D1%83%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BE%D0%BD%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B8&amp;diff=4281&amp;oldid=prev</id>
		<title>Davidov: Новая страница: «Для вывода тем текущей конференции используется макрос forum conf(). Если требуется вывести те…»</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%92%D1%8B%D0%B2%D0%BE%D0%B4_%D1%82%D0%B5%D0%BC_%D1%83%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BE%D0%BD%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B8&amp;diff=4281&amp;oldid=prev"/>
		<updated>2012-12-05T13:02:48Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «Для вывода тем текущей конференции используется макрос forum conf(). Если требуется вывести те…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Для вывода тем текущей конференции используется макрос forum conf(). Если требуется вывести темы не текущей, а какой нибудь определённой конференции то можно написать кастомный макрос, на основе существующего forum conf(), который в качестве одного из параметров принимает id конференции.&lt;br /&gt;
Для начала скопируем код метода conf из файла ~/classes/modules/forum/class.php и поместим его в файл в этой же директории __custom.php сразу после строки&lt;br /&gt;
//TODO: Write here your own macroses&lt;br /&gt;
после чего изменим его название на conf_custom. Чтобы макрос мог принимать в качестве параметра id конференции, изменим первую строку таким образом:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
public function conf_custom($template = &amp;quot;default&amp;quot;, $conf_id = &amp;quot;false&amp;quot;, $per_page = false, $ignore_context = false)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
после этого надо заменить строку&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$element_id = cmsController::getInstance()-&amp;gt;getCurrentElementId();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
на&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (!$conf_id) {&lt;br /&gt;
            $element_id = cmsController::getInstance()-&amp;gt;getCurrentElementId();&lt;br /&gt;
        } else {&lt;br /&gt;
            $element_id = $conf_id;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и заменить в методе все self на def_module.&lt;br /&gt;
в итоге мы получим такой метод:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
public function conf_custom($template = &amp;quot;default&amp;quot;, $conf_id = &amp;quot;false&amp;quot;, $per_page = false, $ignore_context = false) {&lt;br /&gt;
        if (!$template)&lt;br /&gt;
            $template = &amp;quot;default&amp;quot;;&lt;br /&gt;
        list($template_block, $template_line) = def_module::loadTemplates(&amp;quot;forum/&amp;quot; . $template, &amp;quot;topics_block&amp;quot;, &amp;quot;topics_block_line&amp;quot;);&lt;br /&gt;
        if (!$conf_id) {&lt;br /&gt;
            $element_id = cmsController::getInstance()-&amp;gt;getCurrentElementId();&lt;br /&gt;
        } else {&lt;br /&gt;
            $element_id = $conf_id;&lt;br /&gt;
        }&lt;br /&gt;
        $element = umiHierarchy::getInstance()-&amp;gt;getElement($element_id);&lt;br /&gt;
&lt;br /&gt;
        $this-&amp;gt;pushEditable(&amp;quot;forum&amp;quot;, &amp;quot;conf&amp;quot;, $element_id);&lt;br /&gt;
&lt;br /&gt;
        $per_page = ($per_page) ? $per_page : $this-&amp;gt;per_page;&lt;br /&gt;
        $curr_page = getRequest(&amp;#039;p&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
        $sel = new umiSelection;&lt;br /&gt;
        $sel-&amp;gt;setLimitFilter();&lt;br /&gt;
        $sel-&amp;gt;addLimit($per_page, $curr_page);&lt;br /&gt;
&lt;br /&gt;
        $sel-&amp;gt;setElementTypeFilter();&lt;br /&gt;
        $topic_hierarchy_type_id = umiHierarchyTypesCollection::getInstance()-&amp;gt;getTypeByName(&amp;quot;forum&amp;quot;, &amp;quot;topic&amp;quot;)-&amp;gt;getId();&lt;br /&gt;
        $sel-&amp;gt;addElementType($topic_hierarchy_type_id);&lt;br /&gt;
&lt;br /&gt;
        if (!$ignore_context) {&lt;br /&gt;
            $sel-&amp;gt;setHierarchyFilter();&lt;br /&gt;
            $sel-&amp;gt;addHierarchyFilter($element_id);&lt;br /&gt;
        } else {&lt;br /&gt;
            $sel-&amp;gt;forceHierarchyTable();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $object_type_id = umiObjectTypesCollection::getInstance()-&amp;gt;getBaseType(&amp;quot;forum&amp;quot;, &amp;quot;topic&amp;quot;);&lt;br /&gt;
        $object_type = umiObjectTypesCollection::getInstance()-&amp;gt;getType($object_type_id);&lt;br /&gt;
        $publish_time_field_id = $object_type-&amp;gt;getFieldId(&amp;#039;publish_time&amp;#039;);&lt;br /&gt;
        $last_post_time_field_id = $object_type-&amp;gt;getFieldId(&amp;#039;last_post_time&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
        $sel-&amp;gt;setOrderFilter();&lt;br /&gt;
&lt;br /&gt;
        if (getRequest(&amp;#039;order_property&amp;#039;)) {&lt;br /&gt;
            // == &amp;#039;order by&amp;#039; requirements processing start&lt;br /&gt;
            $b_asc = false;&lt;br /&gt;
            $s_order_direction = getRequest(&amp;#039;order_direction&amp;#039;);&lt;br /&gt;
            if (strtoupper($s_order_direction) === &amp;#039;ASC&amp;#039;)&lt;br /&gt;
                $b_asc = true;&lt;br /&gt;
            $s_order_property = getRequest(&amp;#039;order_property&amp;#039;);&lt;br /&gt;
            if (!$s_order_property)&lt;br /&gt;
                $s_order_property = &amp;#039;publish_time&amp;#039;;&lt;br /&gt;
            switch ($s_order_property) {&lt;br /&gt;
                /*&lt;br /&gt;
                  Дата создания - publish_time&lt;br /&gt;
                  Автор - author_id&lt;br /&gt;
                  Дата последнего добавления - last_post_time&lt;br /&gt;
                  sys::ord&lt;br /&gt;
                  sys::rand&lt;br /&gt;
                  sys::name&lt;br /&gt;
                  sys::objectid&lt;br /&gt;
                 */&lt;br /&gt;
                case &amp;#039;sys::ord&amp;#039;:&lt;br /&gt;
                    $sel-&amp;gt;setOrderByOrd();&lt;br /&gt;
                    break;&lt;br /&gt;
                case &amp;#039;sys::rand&amp;#039;:&lt;br /&gt;
                    $sel-&amp;gt;setOrderByRand();&lt;br /&gt;
                    break;&lt;br /&gt;
                case &amp;#039;sys::name&amp;#039;:&lt;br /&gt;
                    $sel-&amp;gt;setOrderByName($b_asc);&lt;br /&gt;
                    break;&lt;br /&gt;
                case &amp;#039;sys::objectid&amp;#039;:&lt;br /&gt;
                    $sel-&amp;gt;setOrderByObjectId($b_asc);&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    $publish_time_field_id = $object_type-&amp;gt;getFieldId($s_order_property);&lt;br /&gt;
                    if (!$publish_time_field_id)&lt;br /&gt;
                        $publish_time_field_id = $object_type-&amp;gt;getFieldId(&amp;#039;publish_time&amp;#039;);&lt;br /&gt;
                    $sel-&amp;gt;setOrderByProperty($publish_time_field_id, $b_asc);&lt;br /&gt;
                    break;&lt;br /&gt;
            }&lt;br /&gt;
            // == &amp;#039;order by&amp;#039; requirements processing fin&lt;br /&gt;
        } else {&lt;br /&gt;
            if ($last_post_time_field_id) {&lt;br /&gt;
                if (regedit::getInstance()-&amp;gt;getVal(&amp;quot;//modules/forum/sort_by_last_message&amp;quot;)) {&lt;br /&gt;
                    $sel-&amp;gt;setOrderByProperty($last_post_time_field_id, false);&lt;br /&gt;
                } else {&lt;br /&gt;
                    $sel-&amp;gt;setOrderByProperty($publish_time_field_id, false);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $sel-&amp;gt;setPermissionsFilter();&lt;br /&gt;
        $sel-&amp;gt;addPermissions();&lt;br /&gt;
&lt;br /&gt;
        $result = umiSelectionsParser::runSelection($sel);&lt;br /&gt;
        $total = umiSelectionsParser::runSelectionCounts($sel);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        unset($sel);&lt;br /&gt;
&lt;br /&gt;
        $block_arr = Array();&lt;br /&gt;
&lt;br /&gt;
        $lines = Array();&lt;br /&gt;
        foreach ($result as $topic_element_id) {&lt;br /&gt;
            $line_arr = Array();&lt;br /&gt;
            $topic_element = umiHierarchy::getInstance()-&amp;gt;getElement($topic_element_id);&lt;br /&gt;
&lt;br /&gt;
            if (!$topic_element) {&lt;br /&gt;
                continue;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            $messages_count = $this-&amp;gt;getTopicMessagesCount($topic_element_id);&lt;br /&gt;
&lt;br /&gt;
            $line_arr[&amp;#039;attribute:id&amp;#039;] = $topic_element_id;&lt;br /&gt;
            $line_arr[&amp;#039;attribute:link&amp;#039;] = umiHierarchy::getInstance()-&amp;gt;getPathById($topic_element_id);&lt;br /&gt;
            $line_arr[&amp;#039;attribute:messages_count&amp;#039;] = $messages_count;&lt;br /&gt;
            $line_arr[&amp;#039;xlink:href&amp;#039;] = &amp;quot;upage://&amp;quot; . $topic_element_id;&lt;br /&gt;
            $line_arr[&amp;#039;node:name&amp;#039;] = $topic_element-&amp;gt;getName();&lt;br /&gt;
&lt;br /&gt;
            $lines[] = def_module::parseTemplate($template_line, $line_arr, $topic_element_id);&lt;br /&gt;
&lt;br /&gt;
            $this-&amp;gt;pushEditable(&amp;quot;forum&amp;quot;, &amp;quot;topic&amp;quot;, $topic_element_id);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $block_arr[&amp;#039;attribute:id&amp;#039;] = $element_id;&lt;br /&gt;
        $block_arr[&amp;#039;subnodes:lines&amp;#039;] = $lines;&lt;br /&gt;
        $block_arr[&amp;#039;total&amp;#039;] = $total;&lt;br /&gt;
        $block_arr[&amp;#039;per_page&amp;#039;] = $per_page;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        return def_module::parseTemplate($template_block, $block_arr, $element_id);&lt;br /&gt;
    }&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
теперь необходимо разрешить пользователям этот метод использовать, для чего в файл permissions.custom.php из этой директории добавить код&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
	$permissions = Array(&lt;br /&gt;
		&amp;quot;view&amp;quot; =&amp;gt; Array(&lt;br /&gt;
			&amp;#039;conf_custom&amp;#039;&lt;br /&gt;
		)&lt;br /&gt;
	);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
теперь для вывода тем нужной конференции можно просто в качестве второго параметра указать id нужной конференции, например&lt;br /&gt;
udata://forum/conf_custom/notemplate/5396&lt;br /&gt;
[[Категория:Написание кастомных макросов]][[Категория:Модуль Форум]]&lt;/div&gt;</summary>
		<author><name>Davidov</name></author>
		
	</entry>
</feed>