
Добрый день!
Уже почти как год назад появилась на свет InstantCMS 2. В то время я блуждал по просторам всемирной паутины в поисках подходящего фреймворка или системы управления контентом на базе которого (или которой =)) я смогу построить свой сайт, та система, которая будет максимально соответствовать моим требованиям и которая будет содержать в себе минимальный набор необходимого мне функционала.Выбор мой пал на... другую CMS (((
Совсем недавно, сначала в одной из тем на форуме, а затем и в своем блоге IngDesign выложил компонент "Закладки пользователей". Радости моей не было предела в тот прекрасный день! Я проинсталлил компонент на локалку и проверил его работоспособность - вторая волна счастья накрыла меня )). Закладки делали то, чего мне так не хватало для своего будущего проекта. Они великолепно выполняли свою функцию, но хотелось немножко большего...
В преддверии праздника я выбрал "свободную минуточку" и решил сделать форк закладок IngDesign'а. Но, чем дальше в лес, тем меньше исходного кода осталось не тронутым)), даже таблицы компонента в базе данных претерпели на столько существенные изменения, что их количество сократилось до одной, а, от её структуры, не тронутым осталось только поле "id". Собственно и сам код процентов на 90-95 полностью переписан. Поэтому можно говорить о другом самостоятельном компоненте.
Избранные записи пользователей
Основная функция компонента не изменилась, он по прежнему необходим пользователям, чтобы организовать быстрый доступ к понравившемся материалам сайта (статьям, постам в блогах, альбомов и др.) Также, по примеру Хабрахабр, я добавил возможность сохранять в "избранном" комментарии других пользователей. И реализовал всю эту "не легкую" работу через ajax.В Панели управления настраивается какой тип контента и кому разрешить добавлять записи в избранное, включить или нет добавление комментариев в список избранного. Т.е. возможен более гибкий механизм работы компонента. При этом список избранных записей отображается на странице пользователя в том же виде, что и список контента в соответствующем разделе сайта, скажем так, нативный рендеринг

Более подробно познакомиться и пощупать компонент можно на демосайте (данные для входа внизу статьи).
Как установить.
Компонент устанавливается как любое стандартное дополнение InstantCMS 2.x - через панель администрирования в разделе компоненты нажимаем "Установить пакет дополнения", выбираем заранее скачанный файл и следуем инструкциям на экране. Более подробно можно почитать здесь: http://docs.instantcms.ru/manual/addons.Компонент установлен в системе, но это еще не всё... Теперь надо прописать "указатели" чтобы пользователь мог взаимодействовать с компонентом. Для этого в файлы шаблона в необходимых местах вставляем ссылку:
Код PHP:
. Я считаю, что самое удобное место для размещения ссылки на добавление текущей записи в избранное - это инфобар (такая область, обычно внизу типов контента, где перечисляется информация об авторе материала, дате его создания, выводится виджет рейтинга, социальные кнопки и др.).
<?php echo $item['favorite_widget']; ?>

Поэтому:
для вывода типов контента следующий код:
Код PHP:
прописываем в файлы шаблона (вставляем ссылку в div с классом "info_bar" перед выводом количества комментариев, или кнопок шаринга):
<?php if ($ctype['is_favorites']){ ?> <div class="bar_item bi_favorite"> <?php echo $item['favorite_widget']; ?> </div> <?php } ?>
albums_list.tpl.php (вставляем код между 114 и 115 строками)
default_item.tpl.php (147-148 строки)
default_list.tpl.php (126-127 строки)
default_list_featured.tpl.php (126-127 строки)
default_list_tiles.tpl.php (110-111 строки)
default_list_table.tpl.php - для этого файла сначала вставляем код
Код PHP:
между 24 и 25 строкой, а затем добавляем вот такой кусок кода:
<?php if ($ctype['is_favorites']) { ?> <th> </th> <?php } ?>
Код PHP:
между 61 и 62 строками. В данном случае шаблон описывает вывод контента в виде таблицы, поэтому мы показываем ссылку на избранное в ячейке этой таблицы.
<?php if ($ctype['is_favorites']){ ?> <td class="td_fav"> <?php echo $item['favorite_widget']; ?> </td> <?php } ?>
Все указанные файлы лежат в ..\templates\default\content\. Если у вас там есть дополнительные файлы, по желанию и необходимости, вы можете добавить в них приведенный выше код))
также для шаблона комментария ..\templates\default\controllers\comments\comment.tpl.php вставляем между 63 и 64 строками
Код PHP:
Здесь пришлось немного увеличить код, т.к. система не дает обработать хук перед выводом списка комментариев в теле типа контента. Поэтому мы делаем это постфактум в теле шаблона.
<?php echo $entry['favorite_widget']; ?> <?php } else { ?> <?php $is_show = ( cmsUser::isAdmin() || cmsUser::isAllowed('favorites', 'add') ) && cmsCore::getController('favorites')->options['is_comment_folder']; if ($is_show) { echo cmsCore::getController('favorites')->renderFavoriteWidget('comments', NULL, $entry); } ?> <?php } ?>
Уф...
Всем удачи! ))
Спасибо за внимание!
demo - login: demo@demo.ru pw: 123456Скачать "модифицированные" файлы шаблонов: fav_links.zip
P.S. Для поддержания и развития этого компонента и других дополнений для InstantCMS буду рад вашей благодарности в виде "спасибо" на R396646181623, Z304069635163 или плюсика в карме =)