Перейти к публикации
webil

Краткая новость и тег переноса

Рекомендованные сообщения

webil

DLE 9.7 Нул N2C

На денвере

 

Привет всем)

Создавая шаблон столкнулся с проблемой на DLE а точнее с проблемой тега {short-story limit="x"}

В описании тега написано что он выводит текст краткой новости без HTML форматирования и сокращает его до нужного числа символов а если оставить x за место числа то выведет весь текст краткой новости но также без HTML форматирования и все бы было как надо вот только тег <br> мне нужно сохранить.

В PHP я ой как не силен но кое что понял из ниже написанного кода следует что мы сначала удаляем весь html кроме тега <br> а потом меняем тег <br> на пробелы

	$row['short_story'] = strip_tags( $row['short_story'], "<br>" );
	$row['short_story'] = trim(str_replace( "<br>", " ", str_replace( "<br />", " ", str_replace( "n", " ", str_replace( "r", "", $row['short_story'] ) ) ) ));

Казалось бы все просто убери вторую строчку и будет тебе счастье но не тут то было, если человек при создании новости сначала втыкает картинку в краткую часть а потом на автомате делает отступ и пишет содержание то в итоге мы получаем что-то вроде этого:

post-15-0-41749600-1355577226_thumb.png

 

Вот тут то и вопрос как убрать первый <br> перед текстом и последний после, если такой имеется...

 

Вот весь код:

if ( preg_match( "#{short-story limit=['"](.+?)['"]}#i", $tpl->copy_template, $matches ) ) {
	$count= intval($matches[1]);

	$row['short_story'] = str_replace( "</p><p>", " ", $row['short_story'] );
	$row['short_story'] = strip_tags( $row['short_story'], "<br>" );
	$row['short_story'] = trim(str_replace( "<br>", " ", str_replace( "<br />", " ", str_replace( "n", " ", str_replace( "r", "", $row['short_story'] ) ) ) ));

	if( $count AND dle_strlen( $row['short_story'], $config['charset'] ) > $count ) {
	
	 $row['short_story'] = dle_substr( $row['short_story'], 0, $count, $config['charset'] );
	
	 if( ($temp_dmax = dle_strrpos( $row['short_story'], ' ', $config['charset'] )) ) $row['short_story'] = dle_substr( $row['short_story'], 0, $temp_dmax, $config['charset'] );
	
	}

	$tpl->set( $matches[0], "<div id="news-id-" . $row['id'] . "" style="display:inline;">" . $row['short_story'] . "</div>" );

   } else $tpl->set( '{short-story}', "<div id="news-id-" . $row['id'] . "" style="display:inline;">" . $row['short_story'] . "</div>" );

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

Изменено пользователем webil

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
TheAndrey

Вот эту сторчку стоит переделать:


$row['short_story'] = trim(str_replace( "<br>", " ", str_replace( "<br />", " ", str_replace( "n", " ", str_replace( "r", "", $row['short_story'] ) ) ) ));

Вот так:


$row['short_story'] = str_replace( "<br>", " ", str_replace( "<br />", " ", str_replace( "n", " ", str_replace( "r", "", trim($row['short_story']) ) ) ) );

Чтобы сначала удалялись начальные и конечные переводы строк и лишние проблелы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
webil

Вот эту сторчку стоит переделать:


$row['short_story'] = trim(str_replace( "<br>", " ", str_replace( "<br />", " ", str_replace( "n", " ", str_replace( "r", "", $row['short_story'] ) ) ) ));

Вот так:


$row['short_story'] = str_replace( "<br>", " ", str_replace( "<br />", " ", str_replace( "n", " ", str_replace( "r", "", trim($row['short_story']) ) ) ) );

Чтобы сначала удалялись начальные и конечные переводы строк и лишние проблелы.

 

Хм забавно но совершенно никакой разницы текст все равно выводиться в строчку без перевода строки

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
webil

нашел своеобразное решение в место пробелов поставил <div></div> высота у них 0 потому и работает как надо)

$row['short_story'] = str_replace( "<br>", "<div></div>", str_replace( "<br />", "<div></div>", str_replace( "n", " ", str_replace( "r", "", trim($row['short_story']) ) ) ) );

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...