Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Valette

Можно ли вырезать определенные бб-коды на главной в статьях? Content 2.2.1 + IPB 3.2.2

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

09/30/11 14:56 (изменено)

Приветствую.

Занимаюсь оформлением главной странички контента.

Суть в том, что список статей на главной должен быть с небольшим "превью" (т.е. обычные несколько строк с текстом статьи, при клике на статью мы попадаем ко всему тексту..).

Так вот если в статье размещено, например, видео (/media/http://.../media/), то оно нагло выплывает на фронтпэйдже.

Задача - вырезать бб-код перед выводом на главную, а при просмотре одной статьи оставить все на месте.

 

Как лучше поступить для реализации данной задачи..?

Спасибо.

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

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


Ссылка на сообщение

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

 

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

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


Ссылка на сообщение
09/30/11 16:46 (изменено)

Пробовал вырезать, увы. Может, конечно, где напутал - регулярки не мой конек..

Весь код привел нижу, тут напишу лишь что пробовал. {$record['article_body'] - и есть тело статьи, из которого нужно вырезать тэг:

<php>
бла-бла-бла..
$record['article_body'] = preg_replace("/\[media\](.+?)\[\/media\]/is", '', $record['article_body']);
пробовал вырезать вообще все бб-коды к чертям:
$record['article_body'] = preg_replace('|[[\/!]?[[]]?]|si', '', $record['article_body']);
</php>
{$record['article_body']}

 

Я уже начал думать, что движок распарсивает бб-коды до этого шаблона, а в него уже идет html..

 

Код между foreach'ми:

<div class='ipsBox' id='{$record['article_title']}'>
		<div class='ipsBox_container ipsPad'>
			<if test="$record['article_image']">
				<img src='{$record['article_image']}' class='photo' {parse resize_image="$record['article_image']" maxwidth="100"} alt='' style="float: left; padding-right: 5px" />
			</if>
			<h2 class='ipsType_subtitle'>
				<if test="!$record['record_approved']">
					<span class='ipsBadge ipsBadge_orange'>{$this->lang->words['article_unapproved']}</span>
				</if>
				<if test="$record[ $data['special']['date'] ] > time()">
					<span class='ipsBadge ipsBadge_lightgrey'>{$this->lang->words['article_unpublished']}</span>
				</if>
<a href="javascript:addToLeftDiv('{$record['article_title']}')">{$record['article_title']}</a>
<!-- <a href='{$record['record_link']}'>{$record['article_title']}</a> -->
			</h2>
			<div class="desc">{$record['article_date']} | <a href='{parse url="showuser={$record['member_id']}" base="public" template="showuser" seotitle="{$record['members_seo_name']}"}'>{$record['members_display_name']}</a> {$this->lang->words['fpdt_in']} <a href='{$record['category_link']}'>{$record['category_name']}</a></div>

			<span class='links'>
				<a href='{$record['record_link']}' class='read_more'>{$this->lang->words['fpdt_readstory']}</a>
				<br />
				<a href='{$record['record_link']}#comments' class='comments'>{$record['record_comments']} {$this->lang->words['fpdt_comments']}</a>
				  
				<if test="$data['database']['database_rate']">
					<if test="$record['rating_real'] >= 1">{parse replacement="rate_on"}<else />{parse replacement="rate_off"}</if><if test="$record['rating_real'] >= 2">{parse replacement="rate_on"}<else />{parse replacement="rate_off"}</if><if test="$record['rating_real'] >= 3">{parse replacement="rate_on"}<else />{parse replacement="rate_off"}</if><if test="$record['rating_real'] >= 4">{parse replacement="rate_on"}<else />{parse replacement="rate_off"}</if><if test="$record['rating_real'] >= 5">{parse replacement="rate_on"}<else />{parse replacement="rate_off"}</if>
				</if>
			</span>
		</div>
	</div>

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

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


Ссылка на сообщение

Вы совершенно правы. article_body содержит уже отпарсенный код.

 

Неотпрарсенный по-умолчанию лежит в {$record['field_2']}.

 

Значит как-то так:

<php>
$post = preg_replace("/\[media\](.+?)\[\/media\]/is", '', $record['field_2']);
$post = IPSText::getTextClass( 'bbcode' )->preDisplayParse( $post );
</php>
{$post}

 

(регулярку бегло посмотрел).

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


Ссылка на сообщение

Спасибо, все ок.

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


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

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