Описывается линейка фильтров, позволяющих скрывать от неавторизированных посетителей сайта текст, назначенный автором статьи. Фильтры работают под 1.10.3 — 1.10.6.
Оказалось, что такой фильтр уже существует и написан он Михаилом М
Я, признаюсь честно, не знал про фильтр Михаила. Поэтому некоторое время назад набросал на скорую руку небольшой фильтр для своего сайта и не придал этому значения.
Выяснилось, что мой фильтр тоже востребован. Хотя бы потому, что Михаил на Инстанте не появляется уже два года. Учитывая пожелания трудящихся, особенно нашей фигуристки Любаши, которая даже летом ходит на коньках, решил поделиться бесплатным вариантом фильтра. Потому что есть и платный!
Говоря более точно, его можно применять везде, где ядро Инстанта поддерживает фильтры. Например, я для своих нужд прикрутил поддержку фильтров еще в два места: в описание клуба, и в описание раздела. Но это отдельная тема.
Для вызова фильтра в текст (статьи, пользовательского модуля или туда, где фильтр поддерживается) нужно добавить конструкцию
Все авторизированные посетители сайта "Скрываемый от гостей текст" увидят как простой текст, ничем не выделяющийся от других буковок. Зато гости вместо этой строчки увидят предупреждение, что этот текст скрыт от гостей и ссылку на страницу авторизации.
Другое дело, если вы приобрели у меня и поставили себе платный вариант фильтра. Этих фильтров несколько.
Если параметр имеет два или более значений, значения перечисляются через запятую (в любом порядке).
В приведенном ниже примере для фильтра GROUP переданы два параметра: параметр -help и параметр groups с тремя значениями :
Если параметры не указываются, работа фильтра ничем не отличается от бесплатного образца.
Все платные варианты фильтра снабжены справкой, которая вызывается прямо из фильтра. Для этого в качестве параметра достаточно набрать — help, а затем сохранить статью. Вместо скрываемого текста будет выведен текст справки. Полагаю, для автора статьи это достаточно удобно. Пробежав глазами справку, можно опять открыть статью для редактирования и внести изменения в текст фильтра.
Справка имеет приоритет перед остальными параметрами: если фильтр обнаруживает — help среди других параметров, он выводит только справку. При этом текст справки виден всем, даже гостям. Помните от этом, если вы оставили сохраненной статью, где в фильтре указан параметр — help.
Фильтр поддерживает параметры: color, color_h, ground, ground_h, — help.
У автора статьи есть возможность подчеркнуть, что лицезреть этот участок текста могут только избранные. В этом варианте прямо из фильтра можно задать цвет шрифта и цвет фона:
либо
Как видно, цвета можно задавать либо названиями цветов, либо их html-обозначениями.
Цвет фона задается параметром ground. Значения для этого параметра задаются так же, как и для параметра color.
Аналогично можно задать цвета для гостей:
Порядок параметров значения не имеет. Их можно передавать в любой последовательности.
Если параметр не упомянут, вместо него используется значение по умолчанию, которое такое же, как в бесплатном фильтре.
Фильтр поддерживает параметры groups, — help.
Значения параметра groups:
— имя группы, с прописной или строчной буквы.
— псевдоним (alias) группы
— id группы
Например, на сайте существуют группы Чайники (kettles, id = 11), Ламеры (lamers, id = 12) и Лузеры (lusers, id = 13). Фильтр
скроет текст в фильтре от групп Ламеры, Лузеры, Чайники, вместо фразы "Скрываемый текст" выведя фразу "Автор статьи запретил Вашей группе просматривать этот текст. Обратитесь к автору статьи или к администрации сайта".
Администраторы, модераторы и редакторы сайта все равно увидят этот текст, даже если вы их укажете в фильтре.
От гостей этот текст будет скрыт фразой "Этот текст скрыт от незарегистрированных посетителей. Рекомендуем Вам авторизоваться" со ссылкой на страницу авторизации.
Фильтр поддерживает справку, например, если в качестве параметра будет передано — help
либо
ламеры, lusers, 11
будет выведена справка, которую увидят все — и автор статьи и гости, читающие сайт.
Фильтр поддерживает параметры friends, no_friends, — help.
В этом фильтре использован эвристический алгоритм определения автора статьи. Как мы все понимаем, в любой фильтр, через ядро, попадает только текст. Алгоритм определяет автора статьи по фрагменту этого текста, просмотрев таблицу cms_content. Я полагаю, в большинстве случаев алгоритм автора вычислит. Если автор статьи не определен, фильтр работать не будет. Он скромный.
Параметры friends и no_friends имеют разные приоритеты. При этом первый параметр имеет приоритет над вторым, при передаче обоих параметров параметр no_friends игнорируется.
При передаче параметра friends без значений текст скрывается от всех, кроме друзей автора статьи. Если параметр передан со значениями, например:
фильтр скроет текст от всех, кроме троих: друга с никнеймом Василий, друга с логином feodor и друга с id = 43. Как видим, в качестве значений параметра можно использовать либо никнейм, либо логин, либо id друга.
Параметр no_friends наоборот, скрывает текст от друзей автора статьи, если применен без значений. Если значения (никнейм, логин или id) этого параметра указаны, текст скрывается от этих конкретных пользователей.
Параметр — help имеет приоритет над любым из параметров friends, no_friends. Например,
либо
будет выведена справка, которую увидят все — и автор статьи и гости, читающие сайт.
Администраторы, модераторы и редакторы сайта все равно увидят скрытый текст, даже если вы их укажете в фильтре.
И, конечно, от гостей текст тоже будет скрыт.
Фильтр поддерживает параметры users, no_users, -help.
Этот фильтр работает аналогично уже описанным выше. Выражение
скроет текст от всех, кроме трех юзеров: с ником Василий (или с маленькой буквы, василий), с логином feodor (либо Feodor) и с id, равным 43.
Этот фильтр, вызванный с параметром no_users, например:
наоборот, покажет текст всем, кроме этих троих перечисленных.
Параметр users имеет приоритет над параметром no_users — если вы вызовете их оба, второй будет проигнорирован. Вызов справки -help имеет приоритет над всеми параметрами.
Администраторы, модераторы и редакторы сайта все равно увидят скрытый текст, даже если вы их укажете в фильтре.
От гостей текст тоже будет скрыт.
Фильтр поддерживает параметры module, -help.
Этот фильтр стоит особняком. Я его написал по заказу нашей красавицы Любаши, которая коньки сменила на ласты, что сделало ее неотразимой. Любаша! Так и ходи!
Любаша попросила меня сделать скрытие проигрывателя медиафайлов от гостей. Я это реализовал в данном фильтре.
Фильтр скрывает от гостей, читающих статью, пользовательский модуль, которые показываются в статье всем авторизированым:
или
или
Как видим, фильтр ищет в базе модуль: либо по имени модуля на сайте (поле title), либо но его названию в админке (поле name), либо просто по id.
Обратите внимание, этот фильтр не обрабатывает скрываемого текста. Вы сюда можете написать после СКРЫТЬ= (до точки с запятой) что угодно, фильтр этот текст проигнорирует. Почему так сделано? Дело в том, что фильтр выводит в статью вместо команды, заключенной в фигурные скобки контент пользовательского модуля. Поэтому в модуль, кроме проигрывателя, можно вставить обычный текст, рисунки и т.д.
По этой причине необходимость обрабатывать скрываемый фильтром текст отпадает.
Естественно, чтобы в статье что-то появилось, нужно заранее создать пользовательский модуль (в приведенном выше примере название пользовательского модуля "Иероглиф", имя "hieroglyph", id = 97 — ид, под которым создался модуль). Если такой модуль отсутствует, либо не содержит контента, фильтр сообщит об этом автору статьи, обругав его буковками красного цвета.
Пару слов о идее. Идея помещать модуль в статьи с помощью фильтра принадлежит Марату. У него фильтр бесплатный, поэтому и я с продажи этого фильтра себе не оставлю ни копейки.
1. Получить у меня архив с платным фильтром или скачать архив с бесплатным.
2. Распаковать куда-нибудь. В архиве папка filters и два файлика: инструкция f_hide.txt и тексты sql-запросов.
3. Зайти в админку и убедиться, что на вашем сайте не стоит фильтр Михаила. Он, естественно, тоже называется f_hide (я чесное слово про него не знал). К сожалению, его придется удалить.
4. Залить в корень сайта папку filters.
5. Открыть файл f_hide.txt и прочитать инструкцию.
6. Зайти в БД и выполнить sql-запрос для установки фильтра. Текст запроса — в файле sql.txt
7. Пользоваться.
В инструкции есть так же указания, как удалять фильтр (фильтр Михаила удалять так же) или менять.
Скачать бесплатный фильтр можно тут
Получить платный можно, написав мне в личку.
Оплатить любым из способов:
яд 410011913797936
wmr 342960323367
карточка сбербанка 67619600 0308703785
Удачи в сайтостроении.
Постановка задачи
На форуме подняли тему о скрытом от гостей фрагменте статьи.Оказалось, что такой фильтр уже существует и написан он Михаилом М
Я, признаюсь честно, не знал про фильтр Михаила. Поэтому некоторое время назад набросал на скорую руку небольшой фильтр для своего сайта и не придал этому значения.
Выяснилось, что мой фильтр тоже востребован. Хотя бы потому, что Михаил на Инстанте не появляется уже два года. Учитывая пожелания трудящихся, особенно нашей фигуристки Любаши, которая даже летом ходит на коньках, решил поделиться бесплатным вариантом фильтра. Потому что есть и платный!
Как работает фильтр.
Чтобы фильтр сработал, его нужно вставить туда, где он поддерживается. Обычно это текст статьи и пользовательский модуль.Говоря более точно, его можно применять везде, где ядро Инстанта поддерживает фильтры. Например, я для своих нужд прикрутил поддержку фильтров еще в два места: в описание клуба, и в описание раздела. Но это отдельная тема.
Для вызова фильтра в текст (статьи, пользовательского модуля или туда, где фильтр поддерживается) нужно добавить конструкцию
{СКРЫТЬ=Скрываемый от гостей текст}
Другое дело, если вы приобрели у меня и поставили себе платный вариант фильтра. Этих фильтров несколько.
Платные варианты фильтра
Все платные варианты поддерживают те или иные параметры, отделенные от скрываемого текста и друг от друга точкой с запятой.Если параметр имеет два или более значений, значения перечисляются через запятую (в любом порядке).
В приведенном ниже примере для фильтра GROUP переданы два параметра: параметр -help и параметр groups с тремя значениями :
{СКРЫТЬ=Скрываемый текст; -help; groups =ламеры, lusers, 11}
Все платные варианты фильтра снабжены справкой, которая вызывается прямо из фильтра. Для этого в качестве параметра достаточно набрать — help, а затем сохранить статью. Вместо скрываемого текста будет выведен текст справки. Полагаю, для автора статьи это достаточно удобно. Пробежав глазами справку, можно опять открыть статью для редактирования и внести изменения в текст фильтра.
Справка имеет приоритет перед остальными параметрами: если фильтр обнаруживает — help среди других параметров, он выводит только справку. При этом текст справки виден всем, даже гостям. Помните от этом, если вы оставили сохраненной статью, где в фильтре указан параметр — help.
Фильтр COLOR
Cтоимость 100 рублей.Фильтр поддерживает параметры: color, color_h, ground, ground_h, — help.
У автора статьи есть возможность подчеркнуть, что лицезреть этот участок текста могут только избранные. В этом варианте прямо из фильтра можно задать цвет шрифта и цвет фона:
{СКРЫТЬ=Скрываемый от гостей текст;color=red;ground=grey}
{СКРЫТЬ=Скрываемый от гостей текст;color=#fabbcd;ground=#fbccdd}
Цвет фона задается параметром ground. Значения для этого параметра задаются так же, как и для параметра color.
Аналогично можно задать цвета для гостей:
{СКРЫТЬ=Скрываемый от гостей текст;color_h=#fabbcd;ground_h=grey}
Если параметр не упомянут, вместо него используется значение по умолчанию, которое такое же, как в бесплатном фильтре.
Фильтр GROUPS
Cтоимость 100 рублей.Фильтр поддерживает параметры groups, — help.
Значения параметра groups:
— имя группы, с прописной или строчной буквы.
— псевдоним (alias) группы
— id группы
Например, на сайте существуют группы Чайники (kettles, id = 11), Ламеры (lamers, id = 12) и Лузеры (lusers, id = 13). Фильтр
{СКРЫТЬ=Скрываемый текст; groups = ламеры, lusers, 11}
Администраторы, модераторы и редакторы сайта все равно увидят этот текст, даже если вы их укажете в фильтре.
От гостей этот текст будет скрыт фразой "Этот текст скрыт от незарегистрированных посетителей. Рекомендуем Вам авторизоваться" со ссылкой на страницу авторизации.
Фильтр поддерживает справку, например, если в качестве параметра будет передано — help
{СКРЫТЬ=Скрываемый текст; -help; groups =ламеры, lusers, 11}
{СКРЫТЬ=Скрываемый текст; groups = ламеры, lusers, 11; -help}
будет выведена справка, которую увидят все — и автор статьи и гости, читающие сайт.
Фильтр FRIENDS
Стоимость 200 рублей.Фильтр поддерживает параметры friends, no_friends, — help.
В этом фильтре использован эвристический алгоритм определения автора статьи. Как мы все понимаем, в любой фильтр, через ядро, попадает только текст. Алгоритм определяет автора статьи по фрагменту этого текста, просмотрев таблицу cms_content. Я полагаю, в большинстве случаев алгоритм автора вычислит. Если автор статьи не определен, фильтр работать не будет. Он скромный.
Параметры friends и no_friends имеют разные приоритеты. При этом первый параметр имеет приоритет над вторым, при передаче обоих параметров параметр no_friends игнорируется.
{СКРЫТЬ=Скрываемый текст; friends}
{СКРЫТЬ=Скрываемый текст; friends = Василий, feodor, 43}
Параметр no_friends наоборот, скрывает текст от друзей автора статьи, если применен без значений. Если значения (никнейм, логин или id) этого параметра указаны, текст скрывается от этих конкретных пользователей.
Параметр — help имеет приоритет над любым из параметров friends, no_friends. Например,
{СКРЫТЬ=Скрываемый текст; -help; friends = Василий, feodor, 43}
{СКРЫТЬ=Скрываемый текст; friends = Василий, feodor, 43; -help}
Администраторы, модераторы и редакторы сайта все равно увидят скрытый текст, даже если вы их укажете в фильтре.
И, конечно, от гостей текст тоже будет скрыт.
Фильтр USERS
Стоимость 100 рублей.Фильтр поддерживает параметры users, no_users, -help.
Этот фильтр работает аналогично уже описанным выше. Выражение
{СКРЫТЬ=Скрываемый текст; users = Василий, feodor, 43}
Этот фильтр, вызванный с параметром no_users, например:
{СКРЫТЬ=Скрываемый текст; no_users = Василий, feodor, 43}
Параметр users имеет приоритет над параметром no_users — если вы вызовете их оба, второй будет проигнорирован. Вызов справки -help имеет приоритет над всеми параметрами.
Администраторы, модераторы и редакторы сайта все равно увидят скрытый текст, даже если вы их укажете в фильтре.
От гостей текст тоже будет скрыт.
Фильтр MODULES
Стоимость 200 рублей. Все средства, полученные от продажи этого фильтра, будут перечислены в фонд развития Инстанта.Фильтр поддерживает параметры module, -help.
Этот фильтр стоит особняком. Я его написал по заказу нашей красавицы Любаши, которая коньки сменила на ласты, что сделало ее неотразимой. Любаша! Так и ходи!
Любаша попросила меня сделать скрытие проигрывателя медиафайлов от гостей. Я это реализовал в данном фильтре.
Фильтр скрывает от гостей, читающих статью, пользовательский модуль, которые показываются в статье всем авторизированым:
{СКРЫТЬ=; module = Иероглиф}
{СКРЫТЬ=; module = hieroglyph}
{СКРЫТЬ=; module=97}
Обратите внимание, этот фильтр не обрабатывает скрываемого текста. Вы сюда можете написать после СКРЫТЬ= (до точки с запятой) что угодно, фильтр этот текст проигнорирует. Почему так сделано? Дело в том, что фильтр выводит в статью вместо команды, заключенной в фигурные скобки контент пользовательского модуля. Поэтому в модуль, кроме проигрывателя, можно вставить обычный текст, рисунки и т.д.
<p>Группа "Пикник". Песня "Иероглиф":</p> <iframe src="https://youtu.be/LTymUZRW2gY"width="640" height="360" frame allowfullscreen webkitallowfullscreen msallowfullscreen></iframe>
Естественно, чтобы в статье что-то появилось, нужно заранее создать пользовательский модуль (в приведенном выше примере название пользовательского модуля "Иероглиф", имя "hieroglyph", id = 97 — ид, под которым создался модуль). Если такой модуль отсутствует, либо не содержит контента, фильтр сообщит об этом автору статьи, обругав его буковками красного цвета.
Технические требования.
Линейка фильтров отлаживалась и тестировалась на версии 1.10.3 — 1.10.6. В связи с тем, что более ранних версиях в ядерном классе page.class.php отсутствуют кое-какие методы (например, метод printModule(id) и кое-какие еще) работа данного фильтра на ранних версиях невозможна (специально для блондинок: Любаша, делай апгрейд версии!).Пару слов о идее. Идея помещать модуль в статьи с помощью фильтра принадлежит Марату. У него фильтр бесплатный, поэтому и я с продажи этого фильтра себе не оставлю ни копейки.
Установка фильтра.
Установка всех фильтров совершенно одинакова.1. Получить у меня архив с платным фильтром или скачать архив с бесплатным.
2. Распаковать куда-нибудь. В архиве папка filters и два файлика: инструкция f_hide.txt и тексты sql-запросов.
3. Зайти в админку и убедиться, что на вашем сайте не стоит фильтр Михаила. Он, естественно, тоже называется f_hide (я чесное слово про него не знал). К сожалению, его придется удалить.
4. Залить в корень сайта папку filters.
5. Открыть файл f_hide.txt и прочитать инструкцию.
6. Зайти в БД и выполнить sql-запрос для установки фильтра. Текст запроса — в файле sql.txt
7. Пользоваться.
В инструкции есть так же указания, как удалять фильтр (фильтр Михаила удалять так же) или менять.
Скачать бесплатный фильтр можно тут
Получить платный можно, написав мне в личку.
Оплатить любым из способов:
яд 410011913797936
wmr 342960323367
карточка сбербанка 67619600 0308703785
Удачи в сайтостроении.
Реклама #
Алексей Т 10 лет назад #
И за мануал
Странник 10 лет назад #
Майкл 10 лет назад #
Oleg_z75 10 лет назад #
Странник 9 лет назад #
Александр 10 лет назад #
И ещё вопрос, а можно сделать так, чтобы текст был доступен для определённой группы пользователей, на пример только для модераторов, или для другой какой либо группы которой надо дать доступ? Тогда было бы вообще супер :)
Странник 10 лет назад #
Абсурд получается. Короче, здраво помыслил и делать не стал. Хотя невозможного ничего нет...Если будете хором настаивать, сделаю третий вариант фильтра, с группами....или четвертый, с друзьями автора статьи
NeBox 10 лет назад #
Т.е. независимо от того, что указано будет guest, пользователи дополнительных разрешенных групп будут видеть.
Либо добавить функционал исключений групп, а не разрешений. Т.е. каким группам запрещено просматривать контент.
Странник 10 лет назад #
Фильтр в статью вставляет автор статьи. этим автором может быть админ, или редактор, или модер, или пользователь. или те группы, которые вы добавили.
Мы этим фильтром даем ему возможность закрыть некий контент от гостей.
Объясните мне, как мне выстроить эту иерархию?
Предположим, у нас стандартная иерархия админ-редактор-модератор-пользователь-гость.
Я понимаю, админ может закрыть контент, например от пользователей, открыв его редакторам и модерам.
Но от кого может закрыть его пользователь, кроме как не от гостей?
И как быть, если админ галками в настройках изменил им права? Сделал редакторов и/или модераторов админами?
Мне кажется, это будет излишним усложнением.
Кроме того, автору статьи придется "держать в голове" все эти настройки, помнить псевдонимы групп или их id,
потому что стандартный движок не позволяет вставить в статью новые фильтры.
Я конечно, могу написать хак к стандартному движку, чтобы он "подсказывал" пользователю и вставлял новые фильтры и со всеми параметрами. Но это уже будет серьезная доработка, а не простенький фильтр за 100 рублей.
Кроме того, хак есть хак - при следующем обновлении он исчезнет, если вы не примете меры к его переносу на новый движок.
NeBox 10 лет назад #
Стандартно, прятать только от гостей. Т.е. когда человек хочет скрыть часть статьи, то в теге сразу подставляется guest.
Если на сайте несколько разных групп, то тогда уже просто пояснение сделать, что можно перечислять группы, от которых будет скрыто.
Не вижу проблемы вообще. Много таких функций на форумах разных используют.
Странник 10 лет назад #
NeBox 10 лет назад #
Странник 10 лет назад #
NeBox 10 лет назад #
Стандартно подставлять guest. Это лучше, чем вписывать тех, кому можно смотреть.
Вообще, такое описывать нужно где-то в информации по работе с сайтом. Иначе понятное дело, будут сложности.
Странник 10 лет назад #
NeBox 10 лет назад #
Странник 10 лет назад #
Су-27 10 лет назад #
Странник 10 лет назад #
Странник 10 лет назад #
Может, вы приведете "пример из жизни", когда может возникнуть ситуация, когда автору статьи (например, относящегося к группе пользователей) нужно закрыть контент в статье от редактора, например, но не закрывать его от модераторов и других пользователей, притом, что редактор на иерархической лестнице групп находится выше и обязан видеть контент?
NeBox 10 лет назад #
Странник 10 лет назад #
А любому программисту всегда ценно мнение пользователей, поскольку служит источником новых идей. Например, мне пришла в голову идея, совершенно не связанная с этим фильтром... и которую я со временем, наверно, реализую. Если жив буду))))
Су-27 10 лет назад #
Странник 10 лет назад #
Странник 10 лет назад #
Андрей 10 лет назад #
просто не представляю текст в общем разделе статей, который должен быть виден на треть модерам, на четверть пользователям и на 10% гостям :)
ну а если реализовать, может быть имеет смысл в админке фильтра (не видел, может и админки нет), сделать по аналогии Дениса для вывода блогов: просто список с галочками ВСЕХ групп, присутствующих на сайте...
т.е. тупо ставишь галочки напротив тех групп, которым текст скрыт и все дела :)
Андрей 10 лет назад #
Андрей 10 лет назад #
Странник 10 лет назад #
но сегодня поздно, завтра уже)))
как буду готов, сброшу реквизиты
Су-27 10 лет назад #
Странник 10 лет назад #
Если групп несколько, можно писать через запятую:
Стоимость фильтра 100 р.
Приступил к фильтру "Друзья".
Су-27 10 лет назад #
Странник 10 лет назад #
У всех платных фильтров появилась справка.
Приступил к фильтру Позльзователи.
Странник 10 лет назад #
Приступил к объединению всех параметров в один фильтр - универсальный. Любаша, когда приедет с Красного моря, получит его в качестве подарка, как первая купившая фильтр.
Андрей 10 лет назад #
Странник 10 лет назад #
Андрей 10 лет назад #
1. Для чего в коде в regex \s* в середине?
2. если два скрытых текста делаешь, то обрабатывается только последний
Странник 10 лет назад #
2. Не у вас первого: http://instantcms.ru/forum/thread18214.html#172688 А проблема так и не решена.
Странник 10 лет назад #
Андрей 10 лет назад #
Андрей 10 лет назад #
Странник 10 лет назад #
Однако автор статьи вовсе необязательно админ. Например, админ разрешил писать статьи пользователям. С помощью фильтра COLOR это можно сделать и юзеру, не имеющего доступа в css. Вот для этого случая применение этого фильтра оправдано.
Андрей 10 лет назад #
Странник 10 лет назад #
Андрей 10 лет назад #
Странник 10 лет назад #
Тем, кто купил у меня фильтр, я разошлю исправленные версии. Спасибо.
Андрей 10 лет назад #
Странник 10 лет назад #
Странник 10 лет назад #
Подробнее в основной статье.
Все деньги от продажи этого модуля пойдут в фонд развития Инстанта.
Странник 10 лет назад #