Добрый день!
Уже почти как год назад появилась на свет InstantCMS 2. В то время я блуждал по просторам всемирной паутины в поисках подходящего фреймворка или системы управления контентом на базе которого (или которой =)) я смогу построить свой сайт, та система, которая будет максимально соответствовать моим требованиям и которая будет содержать в себе минимальный набор необходимого мне функционала.Выбор мой пал на… другую CMS (((
Совсем недавно, сначала в одной из тем на форуме, а затем и в своем блоге IngDesign выложил компонент "Закладки пользователей". Радости моей не было предела в тот прекрасный день! Я проинсталлил компонент на локалку и проверил его работоспособность — вторая волна счастья накрыла меня )). Закладки делали то, чего мне так не хватало для своего будущего проекта. Они великолепно выполняли свою функцию, но хотелось немножко большего...
В преддверии праздника я выбрал "свободную минуточку" и решил сделать форк закладок IngDesign'а. Но, чем дальше в лес, тем меньше исходного кода осталось не тронутым)), даже таблицы компонента в базе данных претерпели на столько существенные изменения, что их количество сократилось до одной, а, от её структуры, не тронутым осталось только поле "id". Собственно и сам код процентов на 90-95 полностью переписан. Поэтому можно говорить о другом самостоятельном компоненте.
Избранные записи пользователей
Основная функция компонента не изменилась, он по прежнему необходим пользователям, чтобы организовать быстрый доступ к понравившемся материалам сайта (статьям, постам в блогах, альбомов и др.) Также, по примеру Хабрахабр, я добавил возможность сохранять в "избранном" комментарии других пользователей. И реализовал всю эту "не легкую" работу через ajax.В Панели управления настраивается какой тип контента и кому разрешить добавлять записи в избранное, включить или нет добавление комментариев в список избранного. Т.е. возможен более гибкий механизм работы компонента. При этом список избранных записей отображается на странице пользователя в том же виде, что и список контента в соответствующем разделе сайта, скажем так, нативный рендеринг😊Это позволяет показывать все картиночки, кнопочки и другую сопутствующую информацию, которая предполагалась для данного типа контента.
Более подробно познакомиться и пощупать компонент можно на демосайте (данные для входа внизу статьи).
Как установить.
Компонент устанавливается как любое стандартное дополнение InstantCMS 2.x — через панель администрирования в разделе компоненты нажимаем "Установить пакет дополнения", выбираем заранее скачанный файл и следуем инструкциям на экране. Более подробно можно почитать здесь: http://docs.instantcms.ru/manual/addons.Компонент установлен в системе, но это еще не всё… Теперь надо прописать "указатели" чтобы пользователь мог взаимодействовать с компонентом. Для этого в файлы шаблона в необходимых местах вставляем ссылку:
<?php echo $item['favorite_widget']; ?>
Поэтому:
для вывода типов контента следующий код:
<?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 if ($ctype['is_favorites']) { ?> <th> </th> <?php } ?>
<?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 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 или плюсика в карме =)
Реклама #
qwest 10 лет назад #
qwest 10 лет назад #
Val 10 лет назад #
Думаю расположение кнопки избранного вопрос привычки)) Я сделал на подобии хабра, если немного позависать на сайте, привыкаешь и получается очень удобно)))
qwest 10 лет назад #
Val 10 лет назад #
qwest 10 лет назад #
Kantona 10 лет назад #
Олег Васильевич я 10 лет назад #
SpideR 10 лет назад #
НО! Насколько сложно сделать добавление в избранное людей?
Val 9 лет назад #
Но, IMHO, зачем добавлять пользователей в избранное?! Есть стандартный механизм - список друзей.
Также рассматриваю возможность сделать подписки на пользователей (т.е. добавить юзера в отдельный список, где потом можно следить за его деятельностью - например публикация статей, картинок и т.д.)
Александр 10 лет назад #
а так все равно огромное спасибо, если буду когда то на второй обязательно поставлю! ++
Val 9 лет назад #
Alexprofi 9 лет назад #
Что-то не могу на демо-сайт зайти. - "Вход не выполнен. Проверьте правильность адреса e-mail и пароля."
Val 9 лет назад #
Alexprofi 9 лет назад #
Val 9 лет назад #
p.s. Спасибо вам за "+"
reload 9 лет назад #
wayfox 9 лет назад #
Что может быть ?
wayfox 9 лет назад #
Val 9 лет назад #
Norm Gold 9 лет назад #
Но вот одно неудобство.. я когда то скопировал файл default_list_featured.tpl.php, переименовал в default_list_read.tpl.php и изменил вывод под себя (просто стили заменил).. В нем нажимаю на звезду.. ничего не происходит, если только не обновить страницу.. Может есть решение для этого? )
Val 9 лет назад #
Norm Gold 9 лет назад #
Norm Gold 9 лет назад #
Val 9 лет назад #
Norm Gold 9 лет назад #
SE7EN 9 лет назад #
Val 9 лет назад #
Замените файл картинки ..\templates\default\controllers\favorites\favorite.gif на соответствующую вашим потребностям и всё! ))
Джехутимери 9 лет назад #
Пригодится 100% :)
Val 9 лет назад #
А.Саган 9 лет назад #
Val 9 лет назад #
Но логически в худшем случае компонент просто не будет работать. Хотя структура такая что ломаться особо нечему)) Если, к примеру, поменяются файлы-шаблонов контента, т.е. старые перезапишутся новыми, то это поправимо. Название хуков и системных функций r2 менять не должен, а в остальном компонент автономен.
В любом случае, по мере своей возможности я буду поддерживать компонент для новых версий Инстанта.
482 9 лет назад #
Сайт работает без перебоем, но после замены необходимых фалов в папке ..\templates - никаких изменений при отображении не произошло.
Val 9 лет назад #
482 9 лет назад #
wayfox 9 лет назад #
Gudan 9 лет назад #
Gudan 9 лет назад #
Май 9 лет назад #
Огромное Вам спасибо!
Val 9 лет назад #
Слава 9 лет назад #
У меня сразу предложение. В репутации пользователей есть просмотр тех, кто проголосовал за твой профиль.
Хорошо бы такое сделать и для закладок.
Val 9 лет назад #
Возможность просматривать список избранного других пользователей есть.
Слава 9 лет назад #
При нажатии на количество голосов, появляется аякс-окно со списком пользователей, которые поставили репутацию.
И сдесь можно так сделать. Нажимаешь на количество пользователей, которые добавили данный материал в избранное, и появляется аякс-окно со списком пользователей, которые добавили этот материал в избранное..
Val 9 лет назад #
В целом можно сделать... а на сколько это будет полезно?))
Слава 9 лет назад #
Моё дело внести предложение. А Вы уже сами решите, стоит этому быть или нет.
На мой взгляд для поиска пользователей по интересам самое то.
Demet 9 лет назад #
Val 9 лет назад #
Demet 9 лет назад #
Василич 9 лет назад #
VonKruger 9 лет назад #
tuxo 9 лет назад #
Val 9 лет назад #
Natalya 9 лет назад #
NIKITA 9 лет назад #
Выводится только в комментариях.
NIKITA 9 лет назад #
Val 9 лет назад #
RBJ 9 лет назад #
если у пользователя или его друзей нет комментариев.
Val 9 лет назад #
Нашел причину косячка:
в ..\system\controllers\favorites\hooks\comments_before_list.php
нужно исправить 7-ую строку:
Shuma 9 лет назад #
Val 9 лет назад #
nmsk 9 лет назад #
Sergon 9 лет назад #
Val 9 лет назад #
Пилю обновление. Как закончу выложу в новом посте.
Sergon 9 лет назад #
Romanovcmc 9 лет назад #
Val 9 лет назад #
Обновление в работе, релиз ориентировочно конец мая - июнь
Ingvarruss 9 лет назад #
Val 9 лет назад #
Val 9 лет назад #
Спасибо за понимание.
Val 9 лет назад #
- Исправлены все косяки указанные здесь в комментариях;
- Добавлена возможность просмотра списка пользователей, которые добавили запись себе в избранное;
- Добавлен виджет со списком тегов (и кол-вом их использования) избранных записей пользователя, по которым можно осуществлять быстрый поиск по своим избранным записям;
- Также пользователь может добавлять/изменять свои метки к избранным записям. (Функционал на подобие сайта хабрахабр).
Ждем выхода новой версии iCMS 2!
My-InstantCMS.Ru 9 лет назад #
Val 9 лет назад #
Но! стоит заметить что в концепции iCMS 2 вполне реализуемые!!!
Старый балбес 9 лет назад #
В рамках своего проекта выполнил компонент для изменения системы, на распространенном классе vqmod.
Этим замечательным классом пользуются множество распространенных cms drupal. opencart и др. Достаточно загрузить xml файл и нажать кнопку установить. Будет создана копия любого файла системы с изменениями обозначенными в xml.И системы следующим шагом будет подключать модифицированный файл. Немного приведу в порядок компонент редактора xml и выложу бесплатно.
byb 9 лет назад #
Val 9 лет назад #
за это отвечает строка кода в шаблоне ..\templates\default\controllers\favorites\profile_tab.tpl.php
byb 9 лет назад #
Val 9 лет назад #
Судя по симптомам компонент отчетливо не видит переменную $profile - это выражается и в заголовке страницы и также в глубинометре (в хлебных крошках пропускается пункт имени пользователя).
Причем на локалке все отрабатывает нормально и все описанные проблемы не проявляются. В кодовой базе тоже вроде проблем не замечено. Единственное, что приходит на ум - это проверить права на файлы и папки компонента, может быть причина в них? (Но одновременно у всех маловероятно)
Буду думать...
Val 9 лет назад #
Ждём обновление, оно как раз в работе))) В компоненте исправлены ряд багов включая указанный сейчас и выше в комментариях, а также добавлены обработчики удаления пользователей, удаление контента и др. + новый функционал.
byb 9 лет назад #
Sergon 9 лет назад #
Val 9 лет назад #
Старые "косячки" конечно же присутствуют
Так что если очень очень хочется можете обновится, но я бы посоветовал немного подождать, постараюсь в течение одной-двух недель допилить обновление и выложить его. Как я ранее писал, это обновление включает ряд "критических" доработок и исправление многих мелких багов, и плюс новый функционал. Исправление "критических" моментов стало возможно после выхода новой версии InstantCMS 2.3, в ядро которой внесены ряд необходимых дополнений.
Sergon 9 лет назад #
Romanovcmc 9 лет назад #
Val 9 лет назад #
http://instantcms.ru/blogs/bitblog/komponent-izbranoe-dlja-instantcms-2-x.html#comment_79809
В любом случае обновление уже совсем скоро))
Romanovcmc 9 лет назад #
zeffs 8 лет назад #
Val 8 лет назад #
Михаил 8 лет назад #
Zau4man 8 лет назад #
http://docs.instantcms.ru/manual/menu/special
Val 8 лет назад #
Михаил, чтобы id подменялся на текущего пользователя ссылка будет выглядеть так: users/{user.id}/favorites
При этом не забудьте настроить отображение этого пункта меню (чтобы не показывать его гостям сайта).
Михаил 8 лет назад #
Не подскажите, как?
Val 8 лет назад #
Получаю количество избранного через $count = $favorites_model->getUserFavoritesCount($user_id); Если $count == 0 не показываем таб (в вашем случае ссылку).
P.S. Если будете делать в main.tpl.php то user_id можно получить, например так: cmsUser::getInstance()->id;
Михаил 8 лет назад #
А если мне требуется установить иконку, например, в виджете HTML-блок, то т.к. <?php echo $item['favorite_widget']; ?> нельзя, то какой мне код надо скопировать для ее вывода?
Val 8 лет назад #
Михаил 8 лет назад #
Val 8 лет назад #
Если вы можете вытащить и передать в функцию renderFavoriteWidget(...) нужные параметры, то в принципе куда выводить виджет уже не важно =)
Как вариант, можете попробовать костыльный метод в js-скрипте повесить на onDocumentReady() перенос виджета из записи в бок в html-виджет. Также посмотрите есть еще один компонент закладок - http://instantcms.ru/blogs/ingdesign/zakladki-dlja-tipov-kontenta-instantcms-2.html, возможно он вам подойдет больше.
BonBon 7 лет назад #
Val 7 лет назад #
Напомню, что сейчас если у пользователя нет избранных записей то вкладка "Избранное" вообще не отображается. Следовательно и нажимать никуда не надо чтобы увидеть 404! Как только пользователь добавит себе в список какой либо понравившийся ему материал, у него в профиле будет новый таб "Избранное", при переходе по которому он сможет увидеть список своего избранного контента.
denis 7 лет назад #
Не могу установить компонент избранное на Instant 2.8
Помогите пожалуйста.
denis 7 лет назад #
denis 7 лет назад #
Val 7 лет назад #
denis 7 лет назад #
denis 7 лет назад #
denis 7 лет назад #
Val 7 лет назад #
2. Удалить вашу версию компонента и установить последнюю на сегодняшний день из каталога дополнений. У вас стоит древняя версия еще чуть ли не на InstantCMS 2.0))