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

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

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

Иллюстрация


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

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

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

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

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

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

  1.  
  2. <?php
  3. /******************************************************************************/
  4. // //
  5. // InstantCMS v1.8 //
  6. // http://instantcms.ru/ //
  7. // //
  8. // LICENSED BY GNU/GPL v2 //
  9. // Автор: Lucku. //
  10. // Фильтр Показать/убрать скрытый текст //
  11. // //
  12. // //
  13. /******************************************************************************/
  14.  
  15. function f_tooltip(&$text){
  16.  
  17. $inUser = cmsUser::getInstance();
  18. $regex = '/\{показать\}(.*?)[.*|](.*?)\{\/показать\}/i';
  19.  
  20. $var_block = "'block'";
  21. $variant = "'none'";
  22. $var_disp = "'display: none'";
  23.  
  24. if (!$inUser->id){
  25. $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>';
  26. } else {
  27. $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>';
  28. }
  29.  
  30. $text= preg_replace($regex, $output, $text);
  31.  
  32. return true;
  33.  
  34. }
  35. ?>
  36.  
вариант второй показывать только зарегистрированным пользователям

  1.  
  2. <?php
  3. /******************************************************************************/
  4. // //
  5. // InstantCMS v1.8 //
  6. // http://instantcms.ru/ //
  7. // //
  8. // LICENSED BY GNU/GPL v2 //
  9. // Автор: Lucku. //
  10. // Фильтр Показать/убрать скрытый текст //
  11. // //
  12. // //
  13. /******************************************************************************/
  14.  
  15. function f_tooltip(&$text){
  16.  
  17. $inUser = cmsUser::getInstance();
  18. $regex = '/\{показать\}(.*?)[.*|](.*?)\{\/показать\}/i';
  19.  
  20. $hide_text = 'Скрытый текст виден только <a href="/registration">зарегистрированным</a> пользователям';
  21. $var_block = "'block'";
  22. $variant = "'none'";
  23. $var_disp = "'display: none'";
  24.  
  25. if (!$inUser->id){
  26. $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>';
  27. } else {
  28. $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>';
  29. }
  30.  
  31. $text= preg_replace($regex, $output, $text);
  32.  
  33. return true;
  34.  
  35. }
  36. ?>
  37.  
Все фильтр готов
Так-же можно прописать стили
ссылка .tooltip {}
сам текст .tooltip_vnurt {}

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

Если есть необходимость добавить в форму редактора, читаем здесь
0
Telema93 Telema93 12 лет назад #
не совсем ясна суть. это наподобие свернутого текста?
0
lucku lucku 12 лет назад #
Да, именно так.
Нажал на ссылку текст под ней появился. нажал еще раз текст скрылся
0
NIKITA NIKITA 12 лет назад #
Как убрать, если я уже сделал запрос?
0
NIKITA NIKITA 12 лет назад #
Извини, уже не надо, был глюк на сайте
0
lucku lucku 12 лет назад #
Заходим в БД
таблица cms_filters
ищем по title Показать/убрать скрытый текст
и удаляем нужную строку
0
ukrtop ukrtop 12 лет назад #
Что-то не клеится. Выводит текст просто в виде ссылки.{hide}Скачать|ываыва{/hide} отоброжается только слово Скачать и при нажатии просто перегружается страница.{показать} сменил везде на {hide}, я не думаю что из-за этого, т.к. с {показать} эффект тот-же. Подскажите плиз кому удалось реализовать.
0
INTERES INTERES 12 лет назад #
большое спасибо автору!поставил у себя на сайте...но есть не стыковки...сам сижу на "Mozillа FireFox". и при нажатии на "кнопку" происходить перезагрузка странице. Так же происходит и с "оперой". но вот "Internet Explorer" полет нормальный!!! проверял работа способность на компе и на ноутбуке...и просил друга что бы он проверил через свой комп... на всех системах одинаковая ситуация. Помогите решить данную проблему!
0
INTERES INTERES 12 лет назад #
вот моя статья...в конце статьи есть " пример показа скрытого текста" вот при нажатии должно все работать...((( но почему то не хочет(((
0
ukrtop ukrtop 12 лет назад #
Такой вывод и у меня был, но так-же перегружал страницу и не отображал скрытый текст.

Еще от автора

Добавляем в редактор новые формы
Здесь будет описано как добавлять новые формы в редактор, на основе этой информации можно добавить любую форму.
Фильтр всплывающая подсказка для статей
Разработан фильтр всплывающая подсказка, полностью построен на CSS и 2-х изображений В редакторе выводиться достаточно просто {показ}пишем текст | пиш
Удаления пользователя через админку из базы
Для версии 1.8 При удалении пользователя из админ панели, он все равно остается в базе. Но на сайт уже не зайдет.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.