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

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

Как переделать структуру mod_articles_news?

 (Прочитано 7523 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Davidich
Осваиваюсь на форуме
***

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

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


« : 01.05.2014, 09:25:48 »

Здравствуйте. Модуль новостей из категории имеет такую структуру, если настроить его по горизонтали:
Код
<div class="latest-new">
<ul class="newsflash-horiz">
 <li>
   <h4 class="newsflash-title">  Материал </h4>
    <p>
       <img alt="image005" src="/images/image005.jpg">
   </p>
    <p>Текст материала.</p>
  <a class="readmore" href="/index.php/8-blog/1-material">Подробнее...</a>
<span class="article-separator"> </span>
</li>
</ul>
</div>

Вот у меня вопрос: Есть ли возможность переписать его в такой вид?
Код
<div class="latest-new">
 <img alt="image005" src="/images/image005.jpg">
  <div class="mystyle">
     <h4 class="newsflash-title">  Материал </h4>
       <p>Текст материала.</p>
      <a class="readmore" href="/index.php/8-blog/1-material">Подробнее...</a>
  </div>
</div>
Если конкретнее сказать, мне нужно вывести  картинку за таблицу.
Записан
AlekVolsk
Профи
********

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

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



« Ответ #1 : 01.05.2014, 09:35:01 »

Хмм... а Вы разве его уже не переписали?
Переопределяйте модуль в шаблоне и модифицируйте, как Вам будет угодно.
Записан
Davidich
Осваиваюсь на форуме
***

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

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


« Ответ #2 : 01.05.2014, 09:40:37 »

Хмм... а Вы разве его уже не переписали?
Переопределяйте модуль в шаблоне и модифицируйте, как Вам будет угодно.
Нет я его не переписывал, я еще вчера переопределил и со вчерашнего дня не могу модифицировать как не старался <img alt="image005" src="/images/image005.jpg"> и вывести его за  <li>. li поменять на div - это без проблем, а вывести никак не могу...
Записан
AlekVolsk
Профи
********

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

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



« Ответ #3 : 01.05.2014, 09:47:18 »

Что мешает? опишите подробно.
Записан
Davidich
Осваиваюсь на форуме
***

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

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


« Ответ #4 : 01.05.2014, 09:58:13 »

Что мешает? опишите подробно.
А выше разве не очень подробно...)
Подробнее: вывожу с бутстрапом 3 изображения по ширине:
Код
<div class="row<?php echo $params->get('moduleclass_sfx'); ?>">
<?php for ($i = 0, $n = count($list); $i < $n; $i ++) :
$item = $list[$i]; ?>
<div class="col-md-4">
<?php require JModuleHelper::getLayoutPath('mod_articles_news', '_item');
 
if ($n > 1 && (($i < $n - 1) || $params->get('showLastSeparator'))) : ?>
 
<span class="article-separator"> </span>
 
<?php endif; ?>
</div>
<?php endfor; ?>
</div>
Картинка попадает под col-md-4, а мне не нужно, чтобы она не входила в него. Структуру написал выше.
Записан
Shustry
Группа развития
*****

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

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


Рисую дизайны


« Ответ #5 : 01.05.2014, 10:03:51 »

Код
<?php require JModuleHelper::getLayoutPath('mod_articles_news', '_item');

У вас тут подшаблон подключается. В нём нужно переопределять.
Записан
AlekVolsk
Профи
********

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

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



« Ответ #6 : 01.05.2014, 10:05:24 »

Правильно, картинка принадлежит итему, и выводится вместе с итемом, в отдельном шаблоне для итема _item.php
Записан
fbr
Живу я здесь
******

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

Сообщений: 1279


« Ответ #7 : 01.05.2014, 10:07:33 »

В стандартном модуле выводится изображение, содержащееся в тексте вступления, т.е вот здесь:
Код
$item->introtext;
и вытащить его достаточно проблематично.
Если вы в переопределенном макете выводите изображение для вступительного текста (вставили самостоятельно) - тогда можно
Записан
Davidich
Осваиваюсь на форуме
***

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

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


« Ответ #8 : 01.05.2014, 10:12:04 »

Код
<?php require JModuleHelper::getLayoutPath('mod_articles_news', '_item');

У вас тут подшаблон подключается. В нём нужно переопределять.
В _item.php. А как? Можете помочь...
В стандартном модуле выводится изображение, содержащееся в тексте вступления, т.е вот здесь:
Код
$item->introtext;
и вытащить его достаточно проблематично.
Если вы в переопределенном макете выводите изображение для вступительного текста (вставили самостоятельно) - тогда можно
Вот именно на этом я и остановился, надо как-то отделить картинку от текста...
Записан
Shustry
Группа развития
*****

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

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


Рисую дизайны


« Ответ #9 : 01.05.2014, 10:14:22 »

Скорее всего файл называется default_item.php и находится там же, где и default.php. Выложите его листинг.
Записан
AlekVolsk
Профи
********

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

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



« Ответ #10 : 01.05.2014, 10:16:50 »

Вот именно на этом я и остановился, надо как-то отделить картинку от текста...
Получаете в отдельную переменную значение записи (итема) $aitem = $item->introtext; выковыриваете регуляркой из $aitem картинку и уже потом выводите остаток во фронт. Как ковырять - не подскажу, только теоретически представляю ((

Файл называется _item.php, лежит рядом с default.php. оригинальное содержимое:
<?php
/**
 * @package     Joomla.Site
 * @subpackage  mod_articles_news
 *
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;
$item_heading $params->get('item_heading''h4');
?>
<?php 
if ($params->get('item_title')) : ?>

	
<<?php echo $item_heading?> class="newsflash-title<?php echo $params->get('moduleclass_sfx'); ?>">
	
<?php if ($params->get('link_titles') && $item->link != '') : ?>
	
	
<a href="<?php echo $item->link;?>">
	
	
	
<?php echo $item->title;?></a>
	
<?php else : ?>
	
	
<?php echo $item->title?>
	
<?php endif; ?>
	
</<?php echo $item_heading?>>

<?php endif; ?>

<?php if (!$params->get('intro_only')) :
	
echo 
$item->afterDisplayTitle;
endif; 
?>

<?php echo $item->beforeDisplayContent?>

<?php echo $item->introtext?>

<?php if (isset($item->link) && $item->readmore != && $params->get('readmore')) :
	
echo 
'<a class="readmore" href="'.$item->link.'">'.$item->linkText.'</a>';
endif; 
?>
Записан
fbr
Живу я здесь
******

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

Сообщений: 1279


« Ответ #11 : 01.05.2014, 10:17:45 »

посмотрите здесь, может пригодится
http://www.wantweb.ru/mod-articles-news/mod-articles-news-date-image
Записан
Shustry
Группа развития
*****

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

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


Рисую дизайны


« Ответ #12 : 01.05.2014, 10:24:17 »

В стандартном модуле выводится изображение, содержащееся в тексте вступления, т.е вот здесь:
Код
$item->introtext;
и вытащить его достаточно проблематично.
Если вы в переопределенном макете выводите изображение для вступительного текста (вставили самостоятельно) - тогда можно

Первый раз только проблемно. Потом привыкаешь. Smiley

Код
/*сперва найдём первую картинку, вернее только её адрес:*/
$src_regex = '#src\s*=\s*(["\'])(.*?)\1#'; //регулярка для поиска src картинки
preg_match_all($src_regex, $item->introtext, $matches); //где $item->introtext — переменная, в которой ищем.
$item->imgsrc = $matches[2][0];
 
/*потом удалим все теги, в том числе картинки из текста. Выборочные, например <p> можно оставить*/
$item->introtext = strip_tags($item->introtext);
 
/*подчистим:*/
$item->introtext = trim($item->introtext);
 
/*ещё можно подрезать строку до нужного количества символов без кромсания слов:*/
$txtcut = 600;
$item->introtext = strip_tags($item->introtext);
$item->introtext = substr(
$item->introtext, 0, (
strripos(
substr($item->introtext, 0, $txtcut), ' '
)
)
);
 
/*Всё, теперь можно выводить:*/
 
//$item->introtext = чистый, готовый текст для вывода.
//$item->imgsrc = значение src первой картинки
Записан
Davidich
Осваиваюсь на форуме
***

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

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


« Ответ #13 : 01.05.2014, 10:35:56 »

посмотрите здесь, может пригодится
http://www.wantweb.ru/mod-articles-news/mod-articles-news-date-image
Интересная статья. но у меня вышло по две картинки. От вставленного кода и от стандартного кода. Автор не объяснил как заменить подробно.
Первый раз только проблемно. Потом привыкаешь. Smiley

Показать текстовый блок


Как правильно этот код вставить? А то я вставил и у меня картинки пропали  Roll Eyes
Записан
Shustry
Группа развития
*****

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

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


Рисую дизайны


« Ответ #14 : 01.05.2014, 10:40:53 »

Картинку вывести так:

Код
echo '<img src="'.$item->imgsrc.'" / >';
Записан
Davidich
Осваиваюсь на форуме
***

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

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


« Ответ #15 : 01.05.2014, 10:50:34 »

Если я правильно понял, то нужно <?php echo $item->introtext; ?> заменить на :
Код
<?php $src_regex = '#src\s*=\s*(["\'])(.*?)\1#'; 
preg_match_all($src_regex, $item->introtext, $matches);
$item->imgsrc = $matches[2][0];
 
 
$item->introtext = strip_tags($item->introtext);
 
/*подчистим:*/
$item->introtext = trim($item->introtext);
 
 
$txtcut = 600;
$item->introtext = strip_tags($item->introtext);
$item->introtext = substr(
$item->introtext, 0, (
strripos(
substr($item->introtext, 0, $txtcut), ' '
)
)
);
echo '<img src="'.$item->imgsrc.'" / >' ?>
Если так, то пропал вступительный текст...
Записан
Shustry
Группа развития
*****

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

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


Рисую дизайны


« Ответ #16 : 01.05.2014, 10:54:45 »

Я же файл не вижу.

Код
//выводим картинку:
echo '<img src="'.$item->imgsrc.'" / >';
 
//ниже выводим текст:
echo $item->introtext;
Записан
Davidich
Осваиваюсь на форуме
***

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

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


« Ответ #17 : 01.05.2014, 11:12:03 »

Я же файл не вижу.

Код
//выводим картинку:
echo '<img src="'.$item->imgsrc.'" / >';
 
//ниже выводим текст:
echo $item->introtext;
Файл стандартный, я не использую готовые шаблоны Smiley. Спасибо большое! Получилось по вашему коду!
Показать текстовый блок
Не обязательно было из-под col-md-4 выводить картинку, а достаточно было под div засунуть остальное))
Записан
b2z
Support Team
*****

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

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


Разраблю понемногу


« Ответ #18 : 01.05.2014, 11:41:56 »

Сила Joomla в переопределениях. Закрываю.
Записан
Страниц: [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