Posted June 17, 20213 yr comment_170004 какая функция удаляет например ipsSpoiler из контента на страницах профиля, поиска и т.д.? Либо я туплю, но функция public static function removeElements в IPS\Text\Parser ничего не удаляет Link to comment https://ipbmafia.ru/topic/23253-funkciya-udaleniya/ Share on other sites More sharing options...
June 17, 20213 yr comment_170005 Движок указанной функцией обрезает теги, например здесь system/Content/Search/Index /* Strip spoilers */ $content = $object->searchIndexContent(); if ( preg_match( '#<div\s+?class=["\']ipsSpoiler["\']#', $content ) ) { $content = \IPS\Text\Parser::removeElements( $content, array( 'div[class=ipsSpoiler]' ) ); } /* Take the HTML out of the content */ $content = trim( str_replace( \chr(0xC2) . \chr(0xA0), ' ', strip_tags( preg_replace( "/(<br(?: \/)?>|<\/p>)/i", ' ', preg_replace( "#<blockquote(?:[^>]+?)>.+?(?<!<blockquote)</blockquote>#s", " ", preg_replace( "#<script(.*?)>(.*)</script>#uis", "", ' ' . $content . ' ' ) ) ) ) ) ); Link to comment https://ipbmafia.ru/topic/23253-funkciya-udaleniya/?&do=findComment&comment=170005 Share on other sites More sharing options...
June 17, 20213 yr Author comment_170006 3 минуты назад, Respected сказал: Движок указанной функцией обрезает теги, например здесь system/Content/Search/Index /* Strip spoilers */ $content = $object->searchIndexContent(); if ( preg_match( '#<div\s+?class=["\']ipsSpoiler["\']#', $content ) ) { $content = \IPS\Text\Parser::removeElements( $content, array( 'div[class=ipsSpoiler]' ) ); } /* Take the HTML out of the content */ $content = trim( str_replace( \chr(0xC2) . \chr(0xA0), ' ', strip_tags( preg_replace( "/(<br(?: \/)?>|<\/p>)/i", ' ', preg_replace( "#<blockquote(?:[^>]+?)>.+?(?<!<blockquote)</blockquote>#s", " ", preg_replace( "#<script(.*?)>(.*)</script>#uis", "", ' ' . $content . ' ' ) ) ) ) ) ); тогда какой он удаляет то, что находится в ipsSpoiler ? Link to comment https://ipbmafia.ru/topic/23253-funkciya-udaleniya/?&do=findComment&comment=170006 Share on other sites More sharing options...
June 17, 20213 yr comment_170007 Так этой строкой и удаляет $content = \IPS\Text\Parser::removeElements( $content, array( 'div[class=ipsSpoiler]' ) ); Link to comment https://ipbmafia.ru/topic/23253-funkciya-udaleniya/?&do=findComment&comment=170007 Share on other sites More sharing options...
June 18, 20213 yr Author comment_170009 3 часа назад, Respected сказал: Так этой строкой и удаляет $content = \IPS\Text\Parser::removeElements( $content, array( 'div[class=ipsSpoiler]' ) ); что-то у меня локальный сервер развалился, контент не обновлялся и хук не срабатывал, а так все работает правильно. Link to comment https://ipbmafia.ru/topic/23253-funkciya-udaleniya/?&do=findComment&comment=170009 Share on other sites More sharing options...
June 25, 20213 yr Author comment_170184 /** * Remove specific elements, useful for cleaning up content for display or truncating * * @param string $value The value to parse * @param array|string $elements Element to remove, or array of elements to remove. Can be in format "element[attribute=value]" * @return string */ public static function removeElements( $value, $elements=array( 'blockquote', 'img', 'a' ) ) { array_push($elements, 'div[class=my_spoiler]'); return parent::removeElements( $value, $elements ); } я попробовал добавить элемент глобально, он удаляет его в приложении страниц (главная страница со списком статей), но не удаляет в профиле, страниц с результатами поиска и т.д. Link to comment https://ipbmafia.ru/topic/23253-funkciya-udaleniya/?&do=findComment&comment=170184 Share on other sites More sharing options...
June 25, 20213 yr Author comment_170189 Через truncated тоже удаляет только в приложении страниц /** * Removes HTML and optionally truncates content * * @param bool $oneLine If TRUE, will use spaces instead of line breaks. Useful if using a single line display. * @param int|null $length If supplied, and $oneLine is set to TRUE, the returned content will be truncated to this length * @return string * @note For now we are removing all HTML. If we decide to change this to remove specific tags in future, we can use \IPS\Text\Parser::removeElements( $this->content() ) */ static public function truncate( $content, $oneLine=false, $length=500 ) { $content = static::removeElements( $content, array( 'div[class=my_spoiler]' ) ); return parent::truncate( $content, $oneLine, $length ); } у меня уже мозг плавится, не понимаю как удалить в профиле и т.д. Link to comment https://ipbmafia.ru/topic/23253-funkciya-udaleniya/?&do=findComment&comment=170189 Share on other sites More sharing options...
June 27, 20213 yr Author comment_170217 я так понял это делается через public function indexData( \IPS\Content\Searchable $object ) в IPS\Content\Search\Index как правильно захукать код, чтобы добавить в него \IPS\Text\Parser::removeElements( $content, array( 'div[class=my_spoiler]' ) ); ? Link to comment https://ipbmafia.ru/topic/23253-funkciya-udaleniya/?&do=findComment&comment=170217 Share on other sites More sharing options...
June 28, 20213 yr comment_170220 Глянь \IPS\Content\Search\Result::preDisplay Link to comment https://ipbmafia.ru/topic/23253-funkciya-udaleniya/?&do=findComment&comment=170220 Share on other sites More sharing options...
June 28, 20213 yr Author comment_170221 7 часов назад, WaNted сказал: Глянь \IPS\Content\Search\Result::preDisplay там вроде везде уже отформатированный текст выводит. Я нашел обходной путь, так как в public function indexData() вызывается searchIndexContent(), я просто в IPS\Content в эту функцию запилил \IPS\Text\Parser::removeElements( $content, array( 'div[class=my_spoiler]' ) ); Link to comment https://ipbmafia.ru/topic/23253-funkciya-udaleniya/?&do=findComment&comment=170221 Share on other sites More sharing options...
July 1, 20213 yr Author comment_170257 Не нашел рабочего хайда под новую версию ips, пришлось писать самому. Как вам идея хайда под ранг пользователя? Так как ранг пользователя гибок к настройкам, а пользователь сам решает какими путями его получить, думаю это самый топ вариант. Link to comment https://ipbmafia.ru/topic/23253-funkciya-udaleniya/?&do=findComment&comment=170257 Share on other sites More sharing options...
September 14, 20213 yr comment_172473 ZIKURIK отличная идея. А есть уже рабочая версия? Link to comment https://ipbmafia.ru/topic/23253-funkciya-udaleniya/?&do=findComment&comment=172473 Share on other sites More sharing options...
September 14, 20213 yr Author comment_172474 38 минут назад, Dobrochas сказал: ZIKURIK отличная идея. А есть уже рабочая версия? Работает на одном из моих проектов который я запущу скорее всего на неделе. А так в паблике если и будет то будет платная версия Еще реализовал чью-то идею, кто-то хотел спойлер с редактируемым заголовком. Второй спойлер кастомный: Link to comment https://ipbmafia.ru/topic/23253-funkciya-udaleniya/?&do=findComment&comment=172474 Share on other sites More sharing options...
October 2, 20213 yr comment_173091 @ZIKURIK спойлер тоже будет платный? Link to comment https://ipbmafia.ru/topic/23253-funkciya-udaleniya/?&do=findComment&comment=173091 Share on other sites More sharing options...
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.