Форум русской поддержки Joomla!® CMS
08.12.2016, 04:19:11 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Вывод части материала в модуле

 (Прочитано 145 раз)
0 Пользователей и 1 Гость смотрят эту тему.
timssky
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 277



« : 07.11.2016, 16:43:57 »

Есть такой модуль. Принцип работы: в настройках указывается 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, 16:47:14 от timssky » Записан
timssky
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 277



« Ответ #1 : 09.11.2016, 20:38:06 »

Up
Записан
effrit
Группа развития
*****

Репутация: +731/-7
Online Online

Пол: Мужской
Сообщений: 6812


effrit.com


« Ответ #2 : 09.11.2016, 22:03:28 »

это регулярным выражением можно вытащить. сейчас попробую вспомнить
Записан
effrit
Группа развития
*****

Репутация: +731/-7
Online Online

Пол: Мужской
Сообщений: 6812


effrit.com


« Ответ #3 : 10.11.2016, 00: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
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 277



« Ответ #4 : 10.11.2016, 16:18:04 »

Спасибо, а как вставить ваш код в мой код, чтобы все работало ?


Записан
effrit
Группа развития
*****

Репутация: +731/-7
Online Online

Пол: Мужской
Сообщений: 6812


effrit.com


« Ответ #5 : 10.11.2016, 16: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
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 277



« Ответ #6 : 10.11.2016, 20:17:18 »

Работает только отображает 2 таблицы, а не 3 и большой отступ между ними.  Отступ вероятно из за "<br/>" убрал, пропал.  Как сделать чтобы отображалось  3 таблицы ?
« Последнее редактирование: 10.11.2016, 20:23:18 от timssky » Записан
effrit
Группа развития
*****

Репутация: +731/-7
Online Online

Пол: Мужской
Сообщений: 6812


effrit.com


« Ответ #7 : 10.11.2016, 20:46:26 »

по идее 3 должно быть.
но можно так попробовать
if($c==4) break;
Записан
timssky
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 277



« Ответ #8 : 10.11.2016, 21:59:51 »

Не помогает хоть 4 хоть 5 все равно почему то 2 таблицы отображается
Записан
effrit
Группа развития
*****

Репутация: +731/-7
Online Online

Пол: Мужской
Сообщений: 6812


effrit.com


« Ответ #9 : 10.11.2016, 22:13:08 »

скорее всего синтаксис (html-код) разный.
сюда скопируй код проблемной таблицы (первая строка, где <table>, шаблон подредактирую)
Записан
timssky
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 277



« Ответ #10 : 10.11.2016, 22: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, 22:38:14 от timssky » Записан
effrit
Группа развития
*****

Репутация: +731/-7
Online Online

Пол: Мужской
Сообщений: 6812


effrit.com


« Ответ #11 : 10.11.2016, 22:46:01 »

так тут 2 таблицы. и обе их шаблон выщепляет.
где третья?
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3590


« Ответ #12 : 10.11.2016, 22:51:22 »

Так, наверное:
Код
$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/>";
}
 
Записан
timssky
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 277



« Ответ #13 : 10.11.2016, 23:00:32 »

ЗАРАБОТАЛО! ОГРОМНОЕ ВАМ СПАСИБО!
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3590


« Ответ #14 : 10.11.2016, 23:04:04 »

Мне не надо плюсовать: все сделал effrit, я только указал на перый элемент массива.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet