Коллеги. Я уже публиковал запись с таким названием. Функционал того хака был точно таким же.
В чем же отличие? В том, что в первом хаке я старался сохранить код движка как можно ближе к коробочной версии. Однако, в процессе обкатки хака оказалось, что многие введенные мои регулировки дублируют или даже противоречат коробочным. Стало ясно, что без кардинального изменения движка не обойтись. Второй хак как раз и является таким кардинальным изменением.
Часть регулировок пришлось "забрать" у админа и "отдать" пользователю. Теперь админ лишь назначает по умолчанию группы, которым можно показывать профиль. Каждый новый регистрирующийся получает эти группы выделенными в настройках своего профиля. Однако он всегда может изменить показ профиля группам так, как считает нужным. Следует пояснить, что даже если пользователь исключит админов из показа, профиль этого пользователя админам все равно будет показан.
Естественно, этот хак так же показывает профили друзьям. Для этого в настройках профиля есть дополнительная регулировка. Если ваш друг не входит в разрешенную в профиле группу, ваш профиль все равно будет ему показан.
Данный хак несовместим с первым хаком. Ставить его надо на свежеустановленый движок. Если вы уже залили на свой движок первый хак, вам придется смерживать перечисленные файлы.
В целом код вычисления показа профиля группам получился проще и легче для понимания.
admin\components\users\backend.php
components\users\frontend.php
components\registration\frontend.php
components\blogs\frontend.php
languages\ru\admin\components\users.php
languages\ru\components\users.php
core\classes\user.class.php
modules\mod_respect\module.php
modules\mod_comments\module.php
modules\mod_lastreg\module.php
modules\mod_blogs\module.php
modules\mod_whoonline\module.php
modules\mod_actions\module.php
modules\mod_bestcontent\module.php
modules\mod_latest\module.php
templates\_default_\components\com_users_edit_profile.tpl
templates\_default_\components\com_users_not_allow.tpl
templates\_default_\components\com_registration.tpl
templates\_default_\modules\mod_respect.tpl
templates\_default_\modules\mod_comments.tpl
templates\_default_\modules\mod_lastreg.tpl
templates\_default_\modules\mod_blogs.tpl
templates\_default_\modules\mod_whoonline.tpl
templates\_default_\modules\mod_actions.tpl
templates\_default_\modules\mod_bestcontent.tpl
templates\_default_\modules\mod_latest.tpl
Кроме того, поле allow_who больше не используется во фронтенде компонента users, хотя проверки на наличие и содержание этого поля остались модели этого компонента и в ядерном классе core\classes\user.class.php. Огромное спасибо abasia за обнаружение этой проблемы.
Я нашел и обнаружил, в чем дело. Теперь поле allow_who из таблицы cms_user_profiles можно безболезнено удалить, сделав запрос:
На всякий случай, если что то пошло не так, и после удаления поля все профили показывают 404 ошибку, вернуть поле можно запросом
Каждый пользователь в настройках своего профиля (Мои настройки, закладка Приватность) увидит две настройки:
На приведенном примере пользователь выбрал две группы — "редакторы" и "администраторы". Как видим, этот список отличается от того рекомендованного списка, который предлагает администратор. Поэтому профиль данного пользователя будет показываться только редакторам и админам.
Коробочная регулировка "Показать профиль всем" в данном хаке эквивалентна выбору всех групп.
Регулировка "Не показывать профиль никому" в данном хаке эквивалентна выбору для показа только администраторам (админы все равно ваш профиль увидят, даже если вы их исключите).
1. Не все модули допилены, чтобы отражать регулировки скрытия/показа аватара и никнейма.
2. Компоненты Форум, Статьи и другие тоже требуют допиливания. Тут, как говорится, конь не валялся.
Я выложил эту версию хака для того, чтобы пользователи могли оценить удобство регулировок. Буду благодарен всем коллегам, если они мне покажут, какие еще компоненты и модули требуют доработки.
Скачать
Удачи в сайтостроении!
В чем же отличие? В том, что в первом хаке я старался сохранить код движка как можно ближе к коробочной версии. Однако, в процессе обкатки хака оказалось, что многие введенные мои регулировки дублируют или даже противоречат коробочным. Стало ясно, что без кардинального изменения движка не обойтись. Второй хак как раз и является таким кардинальным изменением.
Постановка задачи
Обсуждение первого хака с abasia выявило непонимание пользователями принципов регулировок. Многие регулировки дублировали или противоречили коробочным. Была поставлена задача сделать управление показом профиля как можно более понятным.Часть регулировок пришлось "забрать" у админа и "отдать" пользователю. Теперь админ лишь назначает по умолчанию группы, которым можно показывать профиль. Каждый новый регистрирующийся получает эти группы выделенными в настройках своего профиля. Однако он всегда может изменить показ профиля группам так, как считает нужным. Следует пояснить, что даже если пользователь исключит админов из показа, профиль этого пользователя админам все равно будет показан.
Естественно, этот хак так же показывает профили друзьям. Для этого в настройках профиля есть дополнительная регулировка. Если ваш друг не входит в разрешенную в профиле группу, ваш профиль все равно будет ему показан.
Данный хак несовместим с первым хаком. Ставить его надо на свежеустановленый движок. Если вы уже залили на свой движок первый хак, вам придется смерживать перечисленные файлы.
Измененные файлы движка
Помимо компонента users пришлось копнуть и компонент registration. Это сделано для того, чтобы каждый вновь регающийся получал перечень групп по умолчанию, которые ему назначил админ. Кроме того, было затронуто ядро — класс user.class.php получил новый метод. Были переписаны все перечисленные модули. Принцип работы хака в модулях один и тот же: аватар пользователя скрывается, вместо него показывается картинка "нет аватара". Никнейм пользователя заменяется на логин (который и так можно увидеть в адресной строке браузера).В целом код вычисления показа профиля группам получился проще и легче для понимания.
admin\components\users\backend.php
components\users\frontend.php
components\registration\frontend.php
components\blogs\frontend.php
languages\ru\admin\components\users.php
languages\ru\components\users.php
core\classes\user.class.php
modules\mod_respect\module.php
modules\mod_comments\module.php
modules\mod_lastreg\module.php
modules\mod_blogs\module.php
modules\mod_whoonline\module.php
modules\mod_actions\module.php
modules\mod_bestcontent\module.php
modules\mod_latest\module.php
templates\_default_\components\com_users_edit_profile.tpl
templates\_default_\components\com_users_not_allow.tpl
templates\_default_\components\com_registration.tpl
templates\_default_\modules\mod_respect.tpl
templates\_default_\modules\mod_comments.tpl
templates\_default_\modules\mod_lastreg.tpl
templates\_default_\modules\mod_blogs.tpl
templates\_default_\modules\mod_whoonline.tpl
templates\_default_\modules\mod_actions.tpl
templates\_default_\modules\mod_bestcontent.tpl
templates\_default_\modules\mod_latest.tpl
Изменение БД
В таблице cms_user_profiles добавлены два новых поля friends_view и groups_view. Этот запрос надо сделать обязательно — без него хак работать не будет:
ALTER TABLE `cms_user_profiles` ADD `friends_view` TINYINT(4) NOT NULL AFTER `imageurl`, ADD `groups_view` VARCHAR(400) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'admin, moderators, registered, editors' AFTER `friends_view`;
Я нашел и обнаружил, в чем дело. Теперь поле allow_who из таблицы cms_user_profiles можно безболезнено удалить, сделав запрос:
ALTER TABLE `cms_user_profiles` DROP `allow_who`;
ALTER TABLE `cms_user_profiles` ADD `allow_who` VARCHAR(35) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'all' AFTER `imageurl`;
Вид движка после установки хака
В админке администратор сайта найдет единственную регулировку (Админка->Компоненты->Профили пользователей, закладка Настройки профилей). Это группы, которым может быть показан профиль по умолчанию для каждого вновь регистрирующегося пользователя. Здесь указаны все группы, кроме незареганых гостей. При необходимости админ может изменить этот список.Каждый пользователь в настройках своего профиля (Мои настройки, закладка Приватность) увидит две настройки:
На приведенном примере пользователь выбрал две группы — "редакторы" и "администраторы". Как видим, этот список отличается от того рекомендованного списка, который предлагает администратор. Поэтому профиль данного пользователя будет показываться только редакторам и админам.
Коробочная регулировка "Показать профиль всем" в данном хаке эквивалентна выбору всех групп.
Регулировка "Не показывать профиль никому" в данном хаке эквивалентна выбору для показа только администраторам (админы все равно ваш профиль увидят, даже если вы их исключите).
Что еще предстоит сделать на движке
Естественно, я не считаю, что сделал все, что нужно было сделать. Например:1. Не все модули допилены, чтобы отражать регулировки скрытия/показа аватара и никнейма.
2. Компоненты Форум, Статьи и другие тоже требуют допиливания. Тут, как говорится, конь не валялся.
Я выложил эту версию хака для того, чтобы пользователи могли оценить удобство регулировок. Буду благодарен всем коллегам, если они мне покажут, какие еще компоненты и модули требуют доработки.
Как скачать хак
Как водится, из моего профиля даром, то есть бесплатно.Скачать
Удачи в сайтостроении!
Реклама #
abasia 5 лет назад #
abasia 5 лет назад #
abasia 5 лет назад #
abasia 5 лет назад #
Странник 5 лет назад #
abasia 5 лет назад #
Странник 5 лет назад #
abasia 5 лет назад #
Странник 5 лет назад #
Странник 5 лет назад #
Пока верните поле на место, везде со значением all.
Надо вникнуть, как это поле используется - и тогда либо вернем его на место, либо везде вычистим из движка.
abasia 5 лет назад #
Странник 5 лет назад #
оцените, пожалуйста, удобство интерфейса , все ли работает.
я в ближайшее время займусь выворчевыванием из движка этого поля.
abasia 5 лет назад #
Странник 5 лет назад #
Причина заключалась в sql-запросе несуществующего поля в модели компонента users. Убрал поле из запроса - и все стало гладко.
Просьба всем заинтересованным скачать у меня архив заново.
Еще поле allow_who используется в альбомах и фотографиях. Поэтому в текущем хаке возможно, альбомы и фотографии будут видеть все, в том числе незареганые. Ближайшие несколько дней займусь этим вопросом.
Удачи в программировании.
Андрей 5 лет назад #
Странник 5 лет назад #
Хотя код читается легче, чем в моем предыдущем хаке.
Думаю, коллеги - когда посмотрят код - оценят, что это: всего лишь еще хак или уже форк.
Надо обсуждать.
Андрей 5 лет назад #
Код не может стоять на месте, и с каждым разом все будет проще и совершеннее...
В любом случае, все, что сейчас сделано, далеко ушло от оригинала, и обратной дороги не будет
Андрей 5 лет назад #
Вкладку саму разместить второй слева
Думаю, что надо перелопатить чутка структуру вкладок, сделать ее более логичной...
займусь и сделаю к 008 версии
Андрей 5 лет назад #
собственно, просто перезалить файлы...