0 Пользователей и 1 Гость просматривают эту тему.
  • 14 Ответов
  • 290 Просмотров
*

timssky

  • Давно я тут
  • 298
  • 0
Есть такой модуль. Принцип работы: в настройках указывается ID статьи из которой он показывает кусок материала, расположенный между тегами. <div id="start" style="display: none;">1</div> и <div style="display: none;">1</div>

Код
<?php
defined('_JEXEC') or die;
$start = '<div id="start" style="display: none;">1</div>';
$separator = '<div style="display: none;">1</div>';

$db =& JFactory::getDBO();
$id = $params->get("article_id");
$q="SELECT introtext FROM #__content WHERE `id` = $id";
$db->setQuery($q);
$article_text = $db->loadResult();
$article_text = substr_replace($article_text, '', 0, strpos ( $article_text , $start ) + 47 );
$article_text = substr ($article_text, 0 , strpos ( $article_text , $separator ) );
echo $article_text;
?>

Я бы хотел немного переделать данный модуль, чтобы он показывал 3 верхние таблицы  с классом "stroka"  (<table class="stroka"></table>) из указанного материала

Я не силен в PHP, прошу помощи
« Последнее редактирование: 07.11.2016, 15:47:14 от timssky »
*

timssky

  • Давно я тут
  • 298
  • 0
Re: Вывод части материала в модуле
« Ответ #1 : 09.11.2016, 19:38:06 »
Up
*

effrit

  • Группа развития
  • 7569
  • 819
  • effrit.com
*

effrit

  • Группа развития
  • 7569
  • 819
  • effrit.com
Re: Вывод части материала в модуле
« Ответ #3 : 09.11.2016, 23:02:39 »
Код
$article_text = $db->loadResult();
$re = '/(<table[^>]*stroka[\"\']>[\s\S]*?<\/table>)/';
preg_match_all($re, $article_text, $matches);
$c=0;
foreach ($matches as $val) {
    echo($val[$c])."<br/>";
$c++;
if($c==3) break;
}
*

timssky

  • Давно я тут
  • 298
  • 0
Re: Вывод части материала в модуле
« Ответ #4 : 10.11.2016, 15:18:04 »
Спасибо, а как вставить ваш код в мой код, чтобы все работало ?


*

effrit

  • Группа развития
  • 7569
  • 819
  • effrit.com
Re: Вывод части материала в модуле
« Ответ #5 : 10.11.2016, 15:25:50 »
земенить вот этот фрагмент
Код
$article_text = $db->loadResult();
$article_text = substr_replace($article_text, '', 0, strpos ( $article_text , $start ) + 47 );
$article_text = substr ($article_text, 0 , strpos ( $article_text , $separator ) );
echo $article_text;
*

timssky

  • Давно я тут
  • 298
  • 0
Re: Вывод части материала в модуле
« Ответ #6 : 10.11.2016, 19:17:18 »
Работает только отображает 2 таблицы, а не 3 и большой отступ между ними.  Отступ вероятно из за "<br/>" убрал, пропал.  Как сделать чтобы отображалось  3 таблицы ?
« Последнее редактирование: 10.11.2016, 19:23:18 от timssky »
*

timssky

  • Давно я тут
  • 298
  • 0
Re: Вывод части материала в модуле
« Ответ #8 : 10.11.2016, 20:59:51 »
Не помогает хоть 4 хоть 5 все равно почему то 2 таблицы отображается
*

effrit

  • Группа развития
  • 7569
  • 819
  • effrit.com
Re: Вывод части материала в модуле
« Ответ #9 : 10.11.2016, 21:13:08 »
скорее всего синтаксис (html-код) разный.
сюда скопируй код проблемной таблицы (первая строка, где <table>, шаблон подредактирую)
*

timssky

  • Давно я тут
  • 298
  • 0
Re: Вывод части материала в модуле
« Ответ #10 : 10.11.2016, 21:35:05 »
Код
<div class="uk-panel uk-panel-box uk-panel-box-secondary"><h3 class="uk-panel-title">Заголовок модуля</h3><table class="stroka">
<tbody>
<tr>
<td class="date">Текст</td>
<td class="sport">Текст</td>
<td class="match">Текст</td>
<td class="stavka">Текст</td>
<td class="calc">Текст</td>
<td class="znak plus">+</td>
</tr>
</tbody>
</table><table class="stroka">
<tbody>
<tr>
<td class="date">Текст</td>
<td class="sport">Текст</td>
<td class="match">Текст</td>
<td class="stavka">Текст</td>
<td class="calc">Текст</td>
<td class="znak plus">+</td>
</tr>
</tbody>
</table></div>
« Последнее редактирование: 10.11.2016, 21:38:14 от timssky »
*

robert

  • Профи
  • 4075
  • 376
Re: Вывод части материала в модуле
« Ответ #12 : 10.11.2016, 21:51:22 »
Так, наверное:
Код: php-brief
$article_text=$db->loadResult();
$re='/<table[^>]*stroka[\"\']\s*>[\s\S]*?<\/table>/';
preg_match_all($re,$article_text,$matches);
for($c=0;$c<3;$c++){
    echo($matches[0][$c])."<br/>";
}
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

timssky

  • Давно я тут
  • 298
  • 0
Re: Вывод части материала в модуле
« Ответ #13 : 10.11.2016, 22:00:32 »
ЗАРАБОТАЛО! ОГРОМНОЕ ВАМ СПАСИБО!
*

robert

  • Профи
  • 4075
  • 376
Re: Вывод части материала в модуле
« Ответ #14 : 10.11.2016, 22:04:04 »
Мне не надо плюсовать: все сделал effrit, я только указал на перый элемент массива.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Интротекст в модуле

Автор alpha_ru

Ответов: 3
Просмотров: 79
Последний ответ 18.09.2017, 19:45:23
от alpha_ru
Вывод материалов в блоге категории

Автор kik84

Ответов: 13
Просмотров: 134
Последний ответ 09.09.2017, 22:26:07
от KKAAZZOO
Вывод материалов на странице категорий

Автор saulS

Ответов: 0
Просмотров: 52
Последний ответ 06.09.2017, 12:38:14
от saulS
Вывод компонента в модуле

Автор ChervonStudio

Ответов: 1
Просмотров: 67
Последний ответ 01.09.2017, 21:49:38
от Филипп Сорокин
Сохранение данных из элементов формы внутри редактора материала

Автор step-di

Ответов: 0
Просмотров: 37
Последний ответ 01.09.2017, 09:36:56
от step-di