Фильтр "Скрыть текст от гостей"

4150
Описывается линейка фильтров, позволяющих скрывать от неавторизированных посетителей сайта текст, назначенный автором статьи. Фильтры работают под 1.10.3 - 1.10.6.

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

На форуме подняли тему о скрытом от гостей фрагменте статьи.
Оказалось, что такой фильтр уже существует и написан он Михаилом М

Я, признаюсь честно, не знал про фильтр Михаила. Поэтому некоторое время назад набросал на скорую руку небольшой фильтр для своего сайта и не придал этому значения.

Выяснилось, что мой фильтр тоже востребован. Хотя бы потому, что Михаил на Инстанте не появляется уже два года. Учитывая пожелания трудящихся, особенно нашей фигуристки Любаши, которая даже летом ходит на коньках, решил поделиться бесплатным вариантом фильтра. Потому что есть и платный!

Как работает фильтр.

Чтобы фильтр сработал, его нужно вставить туда, где он поддерживается. Обычно это текст статьи и пользовательский модуль.

Говоря более точно, его можно применять везде, где ядро Инстанта поддерживает фильтры. Например, я для своих нужд прикрутил поддержку фильтров еще в два места: в описание клуба, и в описание раздела. Но это отдельная тема.

Для вызова фильтра в текст (статьи, пользовательского модуля или туда, где фильтр поддерживается) нужно добавить конструкцию
Код FILTER:
  1. {СКРЫТЬ=Скрываемый от гостей текст}
Все авторизированные посетители сайта "Скрываемый от гостей текст" увидят как простой текст, ничем не выделяющийся от других буковок. Зато гости вместо этой строчки увидят предупреждение, что этот текст скрыт от гостей и ссылку на страницу авторизации.

Другое дело, если вы приобрели у меня и поставили себе платный вариант фильтра. Этих фильтров несколько.

Платные варианты фильтра

Все платные варианты поддерживают те или иные параметры, отделенные от скрываемого текста и друг от друга точкой с запятой.
Если параметр имеет два или более значений, значения перечисляются через запятую (в любом порядке).
В приведенном ниже примере для фильтра GROUP переданы два параметра: параметр -help и параметр groups с тремя значениями :
Код PHP:
  1. {СКРЫТЬ=Скрываемый текст; -help; groups =ламеры, lusers, 11}
Если параметры не указываются, работа фильтра ничем не отличается от бесплатного образца.

Все платные варианты фильтра снабжены справкой, которая вызывается прямо из фильтра. Для этого в качестве параметра достаточно набрать - help, а затем сохранить статью. Вместо скрываемого текста будет выведен текст справки. Полагаю, для автора статьи это достаточно удобно. Пробежав глазами справку, можно опять открыть статью для редактирования и внести изменения в текст фильтра.

Справка имеет приоритет перед остальными параметрами: если фильтр обнаруживает - help среди других параметров, он выводит только справку. При этом текст справки виден всем, даже гостям. Помните от этом, если вы оставили сохраненной статью, где в фильтре указан параметр - help.

Фильтр COLOR

Cтоимость 100 рублей.
Фильтр поддерживает параметры: color, color_h, ground, ground_h, - help.
У автора статьи есть возможность подчеркнуть, что лицезреть этот участок текста могут только избранные. В этом варианте прямо из фильтра можно задать цвет шрифта и цвет фона:
Код FILTER:
  1. {СКРЫТЬ=Скрываемый от гостей текст;color=red;ground=grey}
либо
Код FILTER:
  1. {СКРЫТЬ=Скрываемый от гостей текст;color=#fabbcd;ground=#fbccdd}
Как видно, цвета можно задавать либо названиями цветов, либо их html-обозначениями.

Цвет фона задается параметром ground. Значения для этого параметра задаются так же, как и для параметра color.

Аналогично можно задать цвета для гостей:
Код FILTER:
  1. {СКРЫТЬ=Скрываемый от гостей текст;color_h=#fabbcd;ground_h=grey}
Порядок параметров значения не имеет. Их можно передавать в любой последовательности.

Если параметр не упомянут, вместо него используется значение по умолчанию, которое такое же, как в бесплатном фильтре.

Фильтр GROUPS

Cтоимость 100 рублей.
Фильтр поддерживает параметры groups, - help.
Значения параметра groups:
- имя группы, с прописной или строчной буквы.
- псевдоним (alias) группы
- id группы
Например, на сайте существуют группы Чайники (kettles, id = 11), Ламеры (lamers, id = 12) и Лузеры (lusers, id = 13). Фильтр
Код FILTER:
  1. {СКРЫТЬ=Скрываемый текст; groups = ламеры, lusers, 11}
скроет текст в фильтре от групп Ламеры, Лузеры, Чайники, вместо фразы "Скрываемый текст" выведя фразу "Автор статьи запретил Вашей группе просматривать этот текст. Обратитесь к автору статьи или к администрации сайта".
Администраторы, модераторы и редакторы сайта все равно увидят этот текст, даже если вы их укажете в фильтре.
От гостей этот текст будет скрыт фразой "Этот текст скрыт от незарегистрированных посетителей. Рекомендуем Вам авторизоваться" со ссылкой на страницу авторизации.
Фильтр поддерживает справку, например, если в качестве параметра будет передано - help
Код PHP:
  1. {СКРЫТЬ=Скрываемый текст; -help; groups =ламеры, lusers, 11}
либо
Код PHP:
  1. {СКРЫТЬ=Скрываемый текст; groups = ламеры, lusers, 11; -help}
ламеры, lusers, 11
будет выведена справка, которую увидят все - и автор статьи и гости, читающие сайт.

Фильтр FRIENDS

Стоимость 200 рублей.
Фильтр поддерживает параметры friends, no_friends, - help.
В этом фильтре использован эвристический алгоритм определения автора статьи. Как мы все понимаем, в любой фильтр, через ядро, попадает только текст. Алгоритм определяет автора статьи по фрагменту этого текста, просмотрев таблицу cms_content. Я полагаю, в большинстве случаев алгоритм автора вычислит. Если автор статьи не определен, фильтр работать не будет. Он скромный.
Параметры friends и no_friends имеют разные приоритеты. При этом первый параметр имеет приоритет над вторым, при передаче обоих параметров параметр no_friends игнорируется.
Код FILTER:
  1. {СКРЫТЬ=Скрываемый текст; friends}
При передаче параметра friends без значений текст скрывается от всех, кроме друзей автора статьи. Если параметр передан со значениями, например:
Код FILTER:
  1. {СКРЫТЬ=Скрываемый текст; friends = Василий, feodor, 43}
фильтр скроет текст от всех, кроме троих: друга с никнеймом Василий, друга с логином feodor и друга с id = 43. Как видим, в качестве значений параметра можно использовать либо никнейм, либо логин, либо id друга.

Параметр no_friends наоборот, скрывает текст от друзей автора статьи, если применен без значений. Если значения (никнейм, логин или id) этого параметра указаны, текст скрывается от этих конкретных пользователей.

Параметр - help имеет приоритет над любым из параметров friends, no_friends. Например,
Код PHP:
  1. {СКРЫТЬ=Скрываемый текст; -help; friends = Василий, feodor, 43}
либо
Код PHP:
  1. {СКРЫТЬ=Скрываемый текст; friends = Василий, feodor, 43; -help}
будет выведена справка, которую увидят все - и автор статьи и гости, читающие сайт.

Администраторы, модераторы и редакторы сайта все равно увидят скрытый текст, даже если вы их укажете в фильтре.
И, конечно, от гостей текст тоже будет скрыт.

Фильтр USERS

Стоимость 100 рублей.
Фильтр поддерживает параметры users, no_users, -help.
Этот фильтр работает аналогично уже описанным выше. Выражение
Код FILTER:
  1. {СКРЫТЬ=Скрываемый текст; users = Василий, feodor, 43}
скроет текст от всех, кроме трех юзеров: с ником Василий (или с маленькой буквы, василий), с логином feodor (либо Feodor) и с id, равным 43.
Этот фильтр, вызванный с параметром no_users, например:
Код FILTER:
  1. {СКРЫТЬ=Скрываемый текст; no_users = Василий, feodor, 43}
наоборот, покажет текст всем, кроме этих троих перечисленных.

Параметр users имеет приоритет над параметром no_users - если вы вызовете их оба, второй будет проигнорирован. Вызов справки -help имеет приоритет над всеми параметрами.

Администраторы, модераторы и редакторы сайта все равно увидят скрытый текст, даже если вы их укажете в фильтре.
От гостей текст тоже будет скрыт.

Фильтр MODULES

Стоимость 200 рублей. Все средства, полученные от продажи этого фильтра, будут перечислены в фонд развития Инстанта.
Фильтр поддерживает параметры module, -help.
Этот фильтр стоит особняком. Я его написал по заказу нашей красавицы Любаши, которая коньки сменила на ласты, что сделало ее неотразимой. Любаша! Так и ходи!

Любаша попросила меня сделать скрытие проигрывателя медиафайлов от гостей. Я это реализовал в данном фильтре.
Фильтр скрывает от гостей, читающих статью, пользовательский модуль, которые показываются в статье всем авторизированым:
Код FILTER:
  1. {СКРЫТЬ=; module = Иероглиф}
или
Код FILTER:
  1. {СКРЫТЬ=; module = hieroglyph}
или
Код FILTER:
  1. {СКРЫТЬ=; module=97}
Как видим, фильтр ищет в базе модуль: либо по имени модуля на сайте (поле title), либо но его названию в админке (поле name), либо просто по id.

Обратите внимание, этот фильтр не обрабатывает скрываемого текста. Вы сюда можете написать после СКРЫТЬ= (до точки с запятой) что угодно, фильтр этот текст проигнорирует. Почему так сделано? Дело в том, что фильтр выводит в статью вместо команды, заключенной в фигурные скобки контент пользовательского модуля. Поэтому в модуль, кроме проигрывателя, можно вставить обычный текст, рисунки и т.д.
Код HTML:
  1. <p>Группа "Пикник". Песня "Иероглиф":</p>
  2. <iframe src="https://youtu.be/LTymUZRW2gY"width="640" height="360" frameborder="0" 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

Удачи в сайтостроении.
Как проверить, работает ли задача cron | Утилита "Садовод" (модифицированный Ремонтник Деревьев)
Комментарии (50)
Алексей Тимофеев 22 апреля 2014 в 17:05 0
Отличный фильтр однозначно +
И за мануал
Кирилл Эдуардович (Странник) 22 апреля 2014 в 17:21 +5
Спасибо))
Майкл 22 апреля 2014 в 17:54 +2
+ Спасибо за бесплатность!
Oleg_z75 16 октября 2014 в 04:10 0
Странник, на двоечку такой фильтр можете сделать? Очень нужен!!! Я думаю другим тоже польза будет и Вам за одно!
Могу...в свободное от основной работы время и если мне такой фильтр специально закажут.
Александр 22 апреля 2014 в 19:12 +1
Плюс однозначно :)
И ещё вопрос, а можно сделать так, чтобы текст был доступен для определённой группы пользователей, на пример только для модераторов, или для другой какой либо группы которой надо дать доступ? Тогда было бы вообще супер :)
Была такая идея. Но не стал реализовывать, потому что например, автор статьи укажет по неопытности ТОЛЬКО группу guest, и админы этого фрагмента не увидят)))
Абсурд получается. Короче, здраво помыслил и делать не стал. Хотя невозможного ничего нет...Если будете хором настаивать, сделаю третий вариант фильтра, с группами....или четвертый, с друзьями автора статьи
NeBox 23 апреля 2014 в 00:58 0
Можно добавить настройку каким группам отображать в любом случае.
Т.е. независимо от того, что указано будет guest, пользователи дополнительных разрешенных групп будут видеть.

Либо добавить функционал исключений групп, а не разрешений. Т.е. каким группам запрещено просматривать контент.
Давайте мыслить логически.
Фильтр в статью вставляет автор статьи. этим автором может быть админ, или редактор, или модер, или пользователь. или те группы, которые вы добавили.
Мы этим фильтром даем ему возможность закрыть некий контент от гостей.

Объясните мне, как мне выстроить эту иерархию?

Предположим, у нас стандартная иерархия админ-редактор-модератор-пользователь-гость.
Я понимаю, админ может закрыть контент, например от пользователей, открыв его редакторам и модерам.
Но от кого может закрыть его пользователь, кроме как не от гостей?

И как быть, если админ галками в настройках изменил им права? Сделал редакторов и/или модераторов админами?

Мне кажется, это будет излишним усложнением.


Кроме того, автору статьи придется "держать в голове" все эти настройки, помнить псевдонимы групп или их id,
потому что стандартный движок не позволяет вставить в статью новые фильтры.
Я конечно, могу написать хак к стандартному движку, чтобы он "подсказывал" пользователю и вставлял новые фильтры и со всеми параметрами. Но это уже будет серьезная доработка, а не простенький фильтр за 100 рублей.
Кроме того, хак есть хак - при следующем обновлении он исчезнет, если вы не примете меры к его переносу на новый движок.
NeBox 23 апреля 2014 в 11:36 0
Админ\модераторы должный так или иначе видеть контент полностью. Их сразу исключить из данного фильтра.

Стандартно, прятать только от гостей. Т.е. когда человек хочет скрыть часть статьи, то в теге сразу подставляется guest.
Если на сайте несколько разных групп, то тогда уже просто пояснение сделать, что можно перечислять группы, от которых будет скрыто.

Не вижу проблемы вообще. Много таких функций на форумах разных используют.
проблема в том, что этот фильтр работает в статье и пользовательском модуле. причем тут форум? вы не путаете ничего?
NeBox 23 апреля 2014 в 12:35 0
нет, не путаю) я просто о функционале упомянул, который применяется в форумах часто.
на форуме icms для скрытия текста применяются bb-коды.
NeBox 23 апреля 2014 в 11:39 0
Странник:
Кроме того, автору статьи придется "держать в голове" все эти настройки
Ну тут как раз и нужно делать исключения, чтобы человек исключал группы, которые не нужно показывать.
Стандартно подставлять guest. Это лучше, чем вписывать тех, кому можно смотреть.

Вообще, такое описывать нужно где-то в информации по работе с сайтом. Иначе понятное дело, будут сложности.
Этот фильтр и так закрывает от guest.
NeBox 23 апреля 2014 в 12:36 0
я имел в виду, что бы стандартно скрывало только от гостей, но при желании можно было указать от каких еще групп можно прятать. просто по умолчанию гость был.
Реализовано. Читайте основную статью.
Су-27 22 апреля 2014 в 20:09 0
Коллега спасибо - плюс конечно но без групп никак - Александр правильно сказал hoho
Кирилл Эдуардович (Странник) 22 апреля 2014 в 20:16 +2
ну, быть посему. но уже завтра. сегодня поздно уже
Кирилл Эдуардович (Странник) 23 апреля 2014 в 11:39 +1
NeBox и Су-27 я раздумываю над вашей хотелкой и не понимаю, зачем она нужна.
Может, вы приведете "пример из жизни", когда может возникнуть ситуация, когда автору статьи (например, относящегося к группе пользователей) нужно закрыть контент в статье от редактора, например, но не закрывать его от модераторов и других пользователей, притом, что редактор на иерархической лестнице групп находится выше и обязан видеть контент?
NeBox 23 апреля 2014 в 12:38 0
у меня не хотелка. я просто нагло влез в обсуждение laugh
Хм...не думаю, что нагло, поскольку здесь - как раз площадка для обсуждения.
А любому программисту всегда ценно мнение пользователей, поскольку служит источником новых идей. Например, мне пришла в голову идея, совершенно не связанная с этим фильтром... и которую я со временем, наверно, реализую. Если жив буду))))
Су-27 23 апреля 2014 в 21:15 +1
Пользователь через биллинг получает доступ к группе , в которой сообщения, фразы или контент статей не предусмотренный для обычных пользователей тем более гостей сайта становится доступным только для юзверей этой группы, при этом у админа и модера остаются полные права - а там как фантазия подскажет, зачем и почему... laugh
Да, коллега, теперь я представляю. Немного подождите, закончу ту задачу, над которой пыхчу сейчас, будет третий вариант фильтра.
Кирилл Эдуардович (Странник) 24 апреля 2014 в 19:02 +1
Внимание, всем скачавшим у меня из профиля этот фильтр. Возможно, в вашем архиве битый файл фильтра. На всякий случай, скачайте заново - я перезалил архив.
Андрей 24 апреля 2014 в 19:59 0
По поводу групп... тема интересная, хоть и зачастую излишняя. Закрывать для гостей - понятно, стимул к реге, закрывать от других регнутых - велкам в блоги клубов закрытых, так чтоли....

просто не представляю текст в общем разделе статей, который должен быть виден на треть модерам, на четверть пользователям и на 10% гостям :)

ну а если реализовать, может быть имеет смысл в админке фильтра (не видел, может и админки нет), сделать по аналогии Дениса для вывода блогов: просто список с галочками ВСЕХ групп, присутствующих на сайте...

т.е. тупо ставишь галочки напротив тех групп, которым текст скрыт и все дела :)
Андрей 24 апреля 2014 в 20:01 0
да, Странник, готов купить платную версию, скиньте реквизиты в ЛС, плиз
Андрей 24 апреля 2014 в 20:02 0
ессно, оставив админу права корректировать фильтр, установленный любым пользователем
Кирилл Эдуардович (Странник) 24 апреля 2014 в 20:36 +1
потерпите тогда, я сделаю еще два варианта фильтра - с группами и с друзьями автора статьи. и наверно, еще третий, универсальный, где все будет.
но сегодня поздно, завтра уже)))
как буду готов, сброшу реквизиты
Су-27 24 апреля 2014 в 20:51 0
Универсальный фильтр - это то что нужно hoho
Кирилл Эдуардович (Странник) 25 апреля 2014 в 17:31 +4
Я написал еще один вариант этого фильтра, с запрещением группы. Естественно, админы, редакторы и модераторы все равно будут видеть скрываемый текст. То есть если вы создали группу Чайники, то автор статьи может написать:
Код TEXT:
  1. {СКРЫТЬ=Скрываемый от гостей текст;groups = Чайники}
или, с маленькой буквы
Код TEXT:
  1. {СКРЫТЬ=Скрываемый от гостей текст;groups = чайники}
и группе чайников вместо скрываемого текста выведет
Автор статьи запретил Вашей группе просматривать этот текст. Обратитесь к администрации.
Естественно, гостям фильтр по прежнему выведет
Этот текст скрыт от незарегистрированных посетителей. Рекомендуем Вам авторизоваться

Если групп несколько, можно писать через запятую:
Код TEXT:
  1. {СКРЫТЬ=Скрываемый от гостей текст; groups = Чайники, Лузеры}
Значения параметра можно с пробелами, можно без.

Стоимость фильтра 100 р.

Приступил к фильтру "Друзья".
Су-27 25 апреля 2014 в 22:06 +1
То, что надо smile
Создан еще один вариант фильтра - Друзья. Подробнее о нем в основной заметке.

У всех платных фильтров появилась справка.

Приступил к фильтру Позльзователи.
Создан еще вариант фильтра - Пользователи. Подробнее в основной заметке.

Приступил к объединению всех параметров в один фильтр - универсальный. Любаша, когда приедет с Красного моря, получит его в качестве подарка, как первая купившая фильтр.
Андрей 29 апреля 2014 в 19:42 0
мм.. спасибо, гляну! но имхо платный вариант с цветами ни к чему.. удобней сделать через css и бесплатно
Это вы не видели, как девочки от цветных буковок пищат от восторга. По заказу блондинок и сделал. И уже купили))))
Андрей 29 апреля 2014 в 21:02 0
ясно) Странник, я тут поковырялся. Два момента:
1. Для чего в коде в regex \s* в середине?
2. если два скрытых текста делаешь, то обрабатывается только последний
1. Умная книжка Бхагаватгитта говорит, что это регулярное выражение пробельного символа. То есть после знака равенства можете использовать пробел, а можете не использовать. Вы будете поражены, но в Рамаяне и Упанишадах тоже об этом сказано.
2. Не у вас первого: http://instantcms.ru/forum/thread18214.html#172688 А проблема так и не решена.
Что касается второго замечания - Макс подсказал еще поковыряться в регулярках, чуть попозже займусь этим. Сейчас другим занят.
Андрей 30 апреля 2014 в 11:00 +1
ок. насчет пробела - там после него идет .* - а это все символы, не только пробел, так что это лишнее вроде как. я не силен в регулярных выражениях, но когда пытаюсь разобраться в чьем-то коде, это сильно напрягает)
Андрей 30 апреля 2014 в 11:50 0
Разобрался. Заменить:

Код PHP:
  1. foreach ($matches as $elm){
  2. $elm[0] = str_replace('{', '', $elm[0]);
  3. $elm[0] = str_replace('}', '', $elm[0]);
  4. mb_parse_str( $elm[0], $args );
  5. $context[email protected]$args[$phrase];
  6. }
  7.  
  8. if ($inUser->id){
  9. $output = '<span class="filter_f_hide">'.$context.'</span>';
  10. }else {
  11. $output = '<span class="filter_f_hide">Здесь скрытый текст. Просмотр доступен после <a href="/login">авторизации</a>.</span>';
  12. }
  13.  
  14. $text = str_replace('{'.$phrase.'='.$context.'}', $output, $text );
  15.  
  16. return true;
на:

Код PHP:
  1. foreach ($matches as $elm){
  2. $elm[0] = str_replace('{', '', $elm[0]);
  3. $elm[0] = str_replace('}', '', $elm[0]);
  4. mb_parse_str( $elm[0], $args );
  5. $context[email protected]$args[$phrase];
  6.  
  7. if ($inUser->id){
  8. $output = '<span class="filter_f_hide">'.$context.'</span>';
  9. }else {
  10. $output = '<span class="filter_f_hide">Здесь скрытый текст. Просмотр доступен после <a href="/login">авторизации</a>.</span>';
  11. }
  12.  
  13. $text = str_replace('{'.$phrase.'='.$context.'}', $output, $text );
  14.  
  15. }
  16.  
  17. return true;
Кирилл Эдуардович (Странник) 30 апреля 2014 в 12:13 +1
Это вы вынесли свойства span' а в css. Для админа, который имеет доступ по ftp, можно сделать и так. Когда админ пишет статьи на сайте, это даже оправдано.

Однако автор статьи вовсе необязательно админ. Например, админ разрешил писать статьи пользователям. С помощью фильтра COLOR это можно сделать и юзеру, не имеющего доступа в css. Вот для этого случая применение этого фильтра оправдано.
Андрей 30 апреля 2014 в 12:28 0
вы внимательно посмотрите... конец кода из функции занесен в цикл foreach . span это я случайно скопировал, т.к. у себя изменил
Я догадался, почему срабатывает только второй фильтр. Ближе к вечеру постараюсь исправить. Ждите.
Андрей 30 апреля 2014 в 12:30 0
выше смотрите коммент. вывод output и замену в тексте надо в foreach - тогда все работает как надо.
Прошу всех, кто скачал у меня фильтр, скачать у меня его заново. Исправлена досадная ошибка, показывающая только последний фильтр, если их в статье несколько.

Тем, кто купил у меня фильтр, я разошлю исправленные версии. Спасибо.
Андрей 30 апреля 2014 в 13:16 0
раз пошла такая пьянка, то в посте ссылка теперь 404, и в sql файле еще небольшой косячок - в описании вместо "Фильтр" - "Сильтр" =)
Спасибо, исправил.
Готов еще один фильтр MODULES. Фильтр позволяет скрыть от гостей, например проигрыватель с песней, которую зареганые могут прослушать. Для этого нужно код проигрывателя вставить в тело пользовательского модуля, и указать либо имя модуля на сайте, либо имя модуля в админке, либо id модуля.

Подробнее в основной статье.

Все деньги от продажи этого модуля пойдут в фонд развития Инстанта.
Небольшое уточнение: этот фильтр отлаживался и тестировался на версии 1.10.3. На более ранних версиях он работать не будет, поскольку в этих версиях отсутствуют некоторые методы ядерного класса page.class.php