ICQ214-697-723 | Emailinfo@mainsource.ru | Телефон(812) 946-31-81
Все контакты
Автор статьи
Синцов Роман
модуль «Комментарии» для UMI.CMS

Дорабатываем своими руками модуль «Комментарии» для UMI.CMS

Статья посвящена счастливым обладателям системы управления UMI.CMS. Это коммерческая система управления сайтом, обладающая удобным интерфейсом, высоким уровнем юзабилити и широким функционалом, охватывающим большинство задач по созданию сайтов различного уровня сложности.

Для UMI существует широкий ассортимент подключаемых модулей, на момент написания статьи их порядка 23, в частности, в данной статье рассмотрим модуль «Комментарии». Он по умолчанию входит в состав редакции PRO Commerce. Также этот модуль можно заказать отдельно для любой другой сборки системы.

Я не буду подробно описывать методику установки модуля и вставку его на нужную страницу Вашего сайта, это достаточно подробно описано на официальном сайте UMI.

Изображение комментариев на UMI (по умолчанию)
Вот так выглядит модуль, встроенный на страницу сайта.

Xочу обратить внимание, что данный модуль имеет с точки зрения пользователя одно важное ограничение: это порядок вывода комментариев на странице. Ко мне часто обращаются с просьбой, сделать так, чтобы последний комментарий отображался не сверху, а снизу, так как многие считают такой вывод более удобным. Для опытного разработчика знакомого с UMI это задача решается практически мгновенно. Я хочу рассказать, как Вы можете сделать это самостоятельно, не привлекая к процессу специалиста.

Исходный код модуля комментариев находится в classes/modules/comments (доступен по ftp для тех, кто не в курсе). Править будем файл class.php - там находится основная логика модуля. Ищем функцию вставки комментариев:

public function insert($parent_element_id = false, $template = "default") {

Добавляем новую переменную $sort, которая позволит при вставке комментариев на страницу сайта задавать порядок сортировки:

public function insert($parent_element_id = false, $template = "default", $sort = 0) {

В нашем случае:

  • $sort = 0 - комментарии выводятся в порядке по умолчанию;
  • $sort = 1 – комментарии выводятся в обратном порядке.
Далее в теле этой функции находим код вида (цикл):

foreach($result as $element_id){
line_arr = Array();

$element = $oHierarchy->getElement($element_id);

$line_arr['attribute:id'] = $element_id;
$line_arr['attribute:title'] = $element->getName();
$line_arr['attribute:author_id'] = $author_id = $element->getValue("author_id");
$line_arr['attribute:num'] = ($per_page * $curr_page) + (++$i);
$line_arr['xlink:href'] = "upage://" . $element_id;
$line_arr['xlink:author-href'] = "udata://users/viewAuthor/" . $author_id;
$line_arr['node:message'] = self::formatMessage($element->getValue("message"));

if($publish_time = $element->getValue('publish_time')) {
$line_arr['attribute:publish_time'] = $publish_time->getFormattedDate("U");
}

templater::pushEditable("comments", "comment", $element_id);

$lines[] = self::parseTemplate($template_line, $line_arr, $element_id);
}

Перед циклом добавляем следующее условие:

if($sort == 1) assort($result);
foreach($result as $element_id){

Стандартная функция php assort() осуществляет сортировку ассоциативного массива в обратном порядке, что нам и требуется сделать, в случае, если $sort = 1.

Для того, чтобы увидеть изменения, нужно в код страницы, на которой Вы хотите вывести комментарии, вставить следующую строку:

%comments insert(%pid%, ‘default’, 1)%

Здесь:

  • pid - вывод комментариев только текущей страницы;
  • default – стандартный шаблон отображения модуля;
  • 1 – режим сортировки.

Изображение комментариев на UMI (с обратным порядком)
Вы должны увидеть примерно такую картину после изменений.

Для использования стандартной сортировки достаточно добавить:

%comments insert()%

Либо в случае использования нестандартного шаблона:

%comments insert(%pid%, ‘not_default_template’, 0)%

Надеюсь, статья окажется для Вас полезной. Желаю успехов в разработке и решении интересных задач. Если Вы заинтересовались возможностями популярной CMS UMI, то команда MainSource может ответить на Ваши вопросы или оказать услуги в создании сайтов и разработке модулей на основе UMI.CMS. В следующих своих статьях, я подробнее расскажу о том, что из себя представляет данная система управления сайтом, какие ее достоинства и недостатки.

Опубликовано в августе 2009 года.

Антон Мак [21.02.2010 23:19]
Юми вроде и ничего, но столько проблем с АПИ для разработчиков у них ((((
Для пользователя имеются хорошие материалы для работы с этой цмской, а вот программисты - бедные.
Чтобы узнать ка реализовать какую-нить элементарную вещь, нужно очень много всего перерыть, не все имеется в описании api.
Надеюсь Юмисофт когда-нибудь опишет полностью как разрабатывать проекты на их продукте.
small юми [23.03.2010 20:10]
М-да... чтобы такую ерундовину сделать надо стоко заморочиться...

Перейти к списку статей

АкцияИнтересные акции и предложения

Мы за спорт, поэтому всем заказчикам на проекты, связанные со спортивной тематикой скидка - 20%. Спешите воспользоваться этой уникальной возможностью.

полный список

Наши специалисты имеют высшее образование в сфере компьютерных технологий, а также многолетний опыт работы по своим направлениям.

Мы постоянно повышаем квалификацию наших сотрудников и расширяем список IT-технологий с помощью которых могут быть реализованы любые Ваши задачи.

вакансии Вакансии партнеры Партнеры
отзывы Отзывы сотрудники Сотрудники

Реализованные проекты

vzemle.ru Буровой сайт
Информационный сайт на базе CMS 1С-Битрикс "под ключ".
pro-tours.ru Форум под ключ
Туристический портал для общения, реализованный на популярном движке.

другие

MainSource