Фильтр скрыть / показать текст для статей

1187
Фильтр работает следующим образом он подгружает скрытый текст и при клике на ссылку текст выводиться на сайте.
В редакторе выводиться достаточно просто {показать}пишем текст | пишем подсказку {/показать}
Сделано два варианта
1. Показывает скрытый текст всем пользователям
2. Показывает только зарегистрирован пользователям, если пользователь не авторизованный, вместо скрытого текста появляться надпись Скрытый текст виден только зарегистрированным пользователям.

Пример работы фильтра, две ссылки до клика, после клика




1. Делаем запрос в БД

Код PHP:
INSERT INTO `cms_filters` (`id`, `title`, `description`, `link`, `published`) VALUES('', 'Показать/убрать скрытый текст', 'Показать/убрать скрытый текст. {показать}текст | скрытый текст{/показать}', 'f_tooltip', 1);

2. Создаем папку f_tooltip в /filters/

Далее в папку f_tooltip кидаем файл filter.php, который описан ниже

3. filter.php в двух примерах

Вариант первый показ всем пользователям

Код PHP:
<?php
/******************************************************************************/
//                                                                            //
//                             InstantCMS v1.8                                //
//                        http://instantcms.ru/                           //
//                                                                            //
//                   	    LICENSED BY GNU/GPL v2			      //
//                	        Автор: Lucku.		                      //
//                    Фильтр Показать/убрать скрытый текст                    //
//                                                     	                      //
//                                                                            //
/******************************************************************************/

 function f_tooltip(&$text){
		
        $inUser = cmsUser::getInstance();
        $regex         = '/\{показать\}(.*?)[.*|](.*?)\{\/показать\}/i';
        
        $var_block    = "'block'";
        $variant = "'none'";
        $var_disp = "'display: none'";

	if (!$inUser->id){
            $output = '<span class="tooltip"><a href="" onclick="obj=this.parentNode.childNodes[1].style; tmp=(obj.display!='.$var_block.') ? '.$var_block.' : '.$variant.';obj.display=tmp;return false;">${1}</a><div style='.$var_disp.' class="tooltip_vnurt">${2}</div></span>';
        } else {
            $output = '<span class="tooltip"><a href="" onclick="obj=this.parentNode.childNodes[1].style; tmp=(obj.display!='.$var_block.') ? '.$var_block.' : '.$variant.';obj.display=tmp;return false;">${1}</a><div style='.$var_disp.' class="tooltip_vnurt">${2}</div></span>';
        }       

       $text= preg_replace($regex, $output, $text);
		
         return true;
		 
    }
?>
вариант второй показывать только зарегистрированным пользователям

Код PHP:
<?php
/******************************************************************************/
//                                                                            //
//                             InstantCMS v1.8                                //
//                        http://instantcms.ru/                           //
//                                                                            //
//                   	    LICENSED BY GNU/GPL v2			      //
//                	        Автор: Lucku.		                      //
//                    Фильтр Показать/убрать скрытый текст                    //
//                                                     	                      //
//                                                                            //
/******************************************************************************/

 function f_tooltip(&$text){
		
        $inUser = cmsUser::getInstance();
        $regex         = '/\{показать\}(.*?)[.*|](.*?)\{\/показать\}/i';
        
        $hide_text    = 'Скрытый текст виден только <a href="/registration">зарегистрированным</a> пользователям';
        $var_block    = "'block'";
        $variant = "'none'";
        $var_disp = "'display: none'";

	if (!$inUser->id){
           $output = '<span class="tooltip"><a href="" onclick="obj=this.parentNode.childNodes[1].style; tmp=(obj.display!='.$var_block.') ? '.$var_block.' : '.$variant.';obj.display=tmp;return false;">${1}</a><div style='.$var_disp.' class="tooltip_vnurt">'.$hide_text.'</div></span>';
        } else {
            $output = '<span class="tooltip"><a href="" onclick="obj=this.parentNode.childNodes[1].style; tmp=(obj.display!='.$var_block.') ? '.$var_block.' : '.$variant.';obj.display=tmp;return false;">${1}</a><div style='.$var_disp.' class="tooltip_vnurt">${2}</div></span>';
        }       

       $text= preg_replace($regex, $output, $text);
		
         return true;
		 
    }
?>
Все фильтр готов
Так-же можно прописать стили
ссылка .tooltip {}
сам текст .tooltip_vnurt {}

Кому лень делать самому, качаем фильтр здесь читаем readme

Если есть необходимость добавить в форму редактора, читаем здесь
Фильтр всплывающая подсказка для статей | Добавляем в редактор новые формы
Комментарии (9)
Telema93 28 сентября 2011 в 19:56 0
не совсем ясна суть. это наподобие свернутого текста?
lucku 28 сентября 2011 в 20:04 0
Да, именно так.
Нажал на ссылку текст под ней появился. нажал еще раз текст скрылся
NIKITA 29 сентября 2011 в 22:09 0
Как убрать, если я уже сделал запрос?
NIKITA 29 сентября 2011 в 22:12 0
Извини, уже не надо, был глюк на сайте
lucku 29 сентября 2011 в 22:12 0
Заходим в БД
таблица cms_filters
ищем по title Показать/убрать скрытый текст
и удаляем нужную строку
ukrtop 2 февраля 2012 в 17:59 0
Что-то не клеится. Выводит текст просто в виде ссылки.{hide}Скачать|ываыва{/hide} отоброжается только слово Скачать и при нажатии просто перегружается страница.{показать} сменил везде на {hide}, я не думаю что из-за этого, т.к. с {показать} эффект тот-же. Подскажите плиз кому удалось реализовать.
INTERES 3 февраля 2012 в 20:26 0
большое спасибо автору!поставил у себя на сайте...но есть не стыковки...сам сижу на "Mozillа FireFox". и при нажатии на "кнопку" происходить перезагрузка странице. Так же происходит и с "оперой". но вот "Internet Explorer" полет нормальный!!! проверял работа способность на компе и на ноутбуке...и просил друга что бы он проверил через свой комп... на всех системах одинаковая ситуация. Помогите решить данную проблему!
INTERES 3 февраля 2012 в 20:45 0
вот моя статья...в конце статьи есть " пример показа скрытого текста" вот при нажатии должно все работать...((( но почему то не хочет(((
ukrtop 5 февраля 2012 в 13:55 0
Такой вывод и у меня был, но так-же перегружал страницу и не отображал скрытый текст.