Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

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

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

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

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

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

 

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

Спасибо.

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

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

Опубликовано:

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

 

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

Опубликовано:
  • Автор

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

Весь код привел нижу, тут напишу лишь что пробовал. {$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

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.