Адаптация компонента "Закладки" от 19 января 2011 к коробочной версии 1.10.7

+7
961

На форуме появилась тема с пожеланиями адаптировать довольно старый компонент «Instant Bookmarks» Fuze к современным реалиям.
Я написал Игорю, попросил разрешения поработать над его изделием. Разрешение было получено.
В этой статье описывается возрожденный компонент «Закладки».

Постановка задачи

  1. Адаптировать компонент «Instant Bookmarks» к коробочной версии InstantCMS 1.10.7 от 26.07.2016.
  2. Отредактировать код в соответствии с Соглашением о культуре написания кода. (это Соглашение в Документации. Будучи начинающим кодером, я из этого Соглашения почерпнул для себя множество полезнейших сведений. Стараюсь придерживаться положений этого Соглашения и сегодня.)
  3. Чуток добавить компоненту юзабилити (или, если угодно, удобства для пользователя).

Что сделано

  1. В файле components/bookmarks/frontend.php переписал обращение к Smarty
  2. Подредактировал установочный файл components/bookmarks/install.sql для создания таблицы с кодировкой utf8
  3. Прикрутил локализацию компонента «Закладки» к компоненту «Users».
  4. Отредактировал файл templates/_default_/components/com_users_profile.tpl, чтобы в профиле пользователя появилась ссылка на страничку «Закладки»
  5. Переименовал таблицу компонента с cms_user_zakladki на cms_user_bookmarks (в соответствии с Соглашением).
  6. Локализовал плагин plugins/p_bookmarks/plugin.php.
  7. Переименовал файл zakl.js в bookmarks.js (в соответствии с Соглашением).
  8. Чуточку изменил алгоритм добавления контента в Закладки.
  9. Добавил две новых иконки.

Список измененных файлов:
components/bookmarks/frontend.php
components/bookmarks/install.sql
components/bookmarks/model.php
components/users/frontend.php
components/bookmarks/js/bookmarksl.js
plugins/p_bookmarks/plugin.php
languages/ru/components/bookmarks.php
templates/_default_/components/com_users_profile.tpl
templates/_default_/css/styles.css

Список новых файлов
languages/ru/plugins/p_bookmarks.php
images/bookmark/bookmark.png
images/bookmark/heart.png
images/icons/bookmark.png

Что изменилось в компоненте с точки зрения пользователя.

Первое, что я изменил, это сделал видимой ссылку на добавление закладок. В оригинале эта ссылка была невидимой. Пользователю приходилось «ловить» ее указателем в правом верхнем углу блока в надежде, что выскочит сердечко, на которое следует нажать. С учетом того, что возможность добавить закладку есть не на всех страницах, догадаться, стоит ли ловить ссылку, было невозможно. На скриншоте ниже показано примерное место, где следовало ловить ссылку.Иллюстрация
Второе, ссылка в виде закладки теперь присутствует на тех страницах, контент которых можно добавить в закладки. После добавления закладки иконка «закладка» меняется на «сердечко».
Иллюстрация
Третье, посетить страницу закладок можно из своего профиля, нажав на ссылку Закладки:Иллюстрация
Так выглядит страница закладок. Щелкнув по заголовку, мы попадаем в указанный контент. Здесь же закладку можно удалить:
Иллюстрация

Как ставить компонент

1. Скачать архив и распаковать его в любое место.
2. Три файла придется смержить.

2.1. В файле components/users/frontend.php найдите блок $do=='profile'
и после строчки

  1. $inPage->addHeadJsLang(array('NEW_POST_ON_WALL','CONFIRM_DEL_POST_ON_WALL'));

вставьте этот фрагмент:

  1. // Подключаю конфиг движка - Странник.
  2. $inConf = cmsConfig::getInstance();
  3. // Проверяю, есть ли файл локализации компонента Bookmarks, и если да, подключаю его - Странник.
  4. if(file_exists(PATH.'/languages/'.$inConf->lang.'/components/bookmarks.php')){
  5. include_once(PATH.'/languages/'.$inConf->lang.'/components/bookmarks.php');
  6. }

2.2. В файле templates/_default_/components/com_users_profile.tpl найдите фрагмент

  1. <tr>
  2. <td><img src="/templates/{template}/images/icons/profile/karma.png" /></td>
  3. <td><a href="/users/{$usr.id}/karma.html" title="{$LANG.KARMA_HISTORY}">{$LANG.KARMA_HISTORY}</a></td>
  4. </tr>

и после него вставьте такой фрагмент:

  1. {* Добавлено Странником ссылка на страницу "Закладки" *}
  2. <tr>
  3. <td><img src="/images/icons/bookmark.png" /></td>
  4. <td><a href="/bookmarks/{$usr.login}">{$LANG.BOOKMARKS}</a></td>
  5. </tr>
  6. {* Конец добавления "Закладки" *}

2.3. В архиве вы увидите два файла стилей:

Первый файл templates\_default_\css\styles.css содержит измененный файл стилей из коробки (осторожнее с ним).
Второй файл templates\_default_\css\styles_bookmark.css содержит изменения, которые должны быть добавлены к ВАШЕМУ файлу стилей styles.css, который вы уже наверняка меняли.
Осторожно, не залейте файл styles.css поверх своего, который лежит на сайте. Самый правильный вариант — добавить к ВАШЕМУ файлу styles.css содержимое файла styles_bookmark.css!

Если вы уверены, что в данных трех файлах отсутствуют изменения (другими словами, у вас строго коробочная версия), можете заливать эти три файла вместе с остальными файлами, с заменой. Архив содержит уже измененные файлы.

3. Залейте остальные файлы. Замены быть не должно. Если выскочит табличка «Заменить», значит, что-то не так. Прервите установку. Посмотрите, какой файл требуется заменить. Напишите мне о коллизии.

4. Установка компонента из админки.
4.1. Пройдите в Админку, Компоненты/Установка компонентов. Найдите компонент «Instant Bookmarks» и щелкните по заголовку. Компонент установится.
4.2. Перейдите в Дополнения/Установить плагины. Найдите плагин «Instant Bookmarks» и щелкните по заголовку, чтобы установить его. Затем перейдите на страницу админки Плагины и включите данный плагин.

5.Завершается установка удалением двух установочных файлов
components\bookmarks\install.php
и
components\bookmarks\install.sql

6. Можете пользоваться.

Как скачать

Бесплатно, то есть даром.
Скачать
Удачи в сайтостроении, приятной работы.

Мне задают вопросы об адаптации этого компонента для версии 1.10.7.008. Как только сделаю, выложу в качестве еще одного архива. Будут полезные и вкусные ништяки. Например, у компонента появится админка с настройками. Вероятно, добавится список компонентов, где будут работать закладки. В версию 1.10.7.009 этот компонент сразу войдет в дистрибутив.

+1
KoRn KoRn 2 года назад #
Большое спасибо за дополнение, оперативно. А вот ссылки для доната что не оставили?))
0
Странник Странник 2 года назад #
Пожалуйста.
По поводу доната - по понятным причинам не хочу светить тут своей карточкой сбербанка. Я вам ее номер в личку напишу. Спасибо.
+3
Lora Lora 2 года назад #
Старые халтурщики))). Плагин в десяток строк,решил бы проблему вносить изменения в другие компоненты.
Спойлер
Для дефолтового шаблона. Но пойдёт для любого. Нужно просто поменять классы.
0
abasia abasia 2 года назад #
Спасибо, если кому надо, плагин вкладки в профиле "Закладки" тут
0
Странник Странник 2 года назад #
Прошу всех, кто скачал у меня архив, скачать его заново. Обнаружена и устранена досадная ошибка, не позволяющая работать сортировке. Теперь она работает.
0
abasia abasia 2 года назад #
В файле plugins\p_bookmarks\plugin.php нужно переименовать zakl.js на bookmarks.js
у меня закладки не заработали, иконки не выводятся и при нажатии ничего не происходит
0
Странник Странник 2 года назад #
Это уже сделано в архиве, 12 июня. Я тоже нашел эту ошибку и устранил. Скачайте заново.
0
abasia abasia 2 года назад #
Путь к иконкам в приложенном styles.css ../images/bookmark/bookmarks.png а в styles_bookmark.css ../images/bookmarks.png где истина?)))
0
Странник Странник 2 года назад #
Поскольку компонент готовился сразу и для релиза 1.10.7.008, иконки перенесены из дефолтного шаблона в папку images. Вы можете располагать их там, где вам удобно.

Еще от автора

Утилита "Садовод" для версии InstantCMS 1.10.7.008
В этой краткой заметке описывается утилита "Садовод" для ремонта деревьев версии InstantCMS 1.10.7.008.
Изменение компонента "Баннеры" для будущей  версии 1.10.7.008
Данная статья рассказывает всем ждущим новую версию 008, что нового ожидается в будущем релизе версии 1.10.7.008.
Добавление элемента радиокнопки в админки модулей и плагинов с расширением *.xml для версии  1.10.7.
В этой заметке рассказывается о добавлении поддержки радиокнопки, как элемента управления, в админках модулей и плагинов.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.