Сложности при адаптации шаблона Joomla с версии 1.5 под 2.5

12
S
На сайте с 27.01.2010
Offline
45
2068

Добрый день уважаемые форумчане может кто сталкивался с такой проблемой при адаптации шаблонов в joomla с версии 1.5 под 2.5 подскажете плиз...

Как вывести в blog_item.php анонсы материалов, а именно каким классом

Перепробовал массу примеров не могу найти как именно вывести анонс а не весь материал

Если выводить так

<?php echo $this->item->introtext; ?>

то выводится весь материал полностью, а нужен только анонс.Кто может сталкивался подскажите плиз...

---------- Добавлено 16.03.2013 в 18:36 ----------

Это пример старого шаблона версии 1.5

<?php

/**

* @package Joomla.Site

* @subpackage Templates.beez5

* @copyright Copyright (C) 2005 - 2009 Open Source Matters, Inc. All rights reserved.

* @license GNU General Public License version 2 or later; see LICENSE.txt

*/

// no direct access

defined('_JEXEC') or die;

$db= new JConfig();

mysql_pconnect($db->host,$db->user,$db->password);

mysql_select_db($db->db);

mysql_query("SET NAMES 'utf8'");

$prf= $db->dbprefix;

$query= "SELECT * FROM ".$prf."categories WHERE alias='".$list[0]->category_alias."'";

$res= mysql_query($query);

$category= mysql_fetch_assoc($res);

$item= $list[0];

$dbo =& JFactory::getDBO();

$query = "SELECT * FROM #__users where id=".$item->created_by;

$dbo->setQuery( $query );

$row = $dbo->loadRow();

$author= $row[2];

$param = json_decode($category['params'],true);

$image_path = $param['image'];

?>

<div class="article-item">

<?

$date= explode(" ",$this->item->created);

$date= explode("-",$date[0]);

$date= $date[2].".".$date[1].".".$date[0];

echo $date; ?>

<span style="border: none;text-decoration: none;"></span>

<h2> <a href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid)); ?>">

<?php echo $this->escape($this->item->title); ?></a>

</h2>

<span>

<?php if ($this->item->params->get('link_section')) : ?>

<?php echo '<a href="'.JRoute::_(ContentHelperRoute::getSectionRoute($this->item->sectionid)).'">'; ?>

<?php endif; ?>

<?php echo $this->escape($this->item->section); ?>

<?php if ($this->item->params->get('link_section')) : ?>

<?php echo '</a>'; ?>

<?php endif; ?>

<?php if ($this->item->params->get('show_category')) : ?>

<?php echo ' - '; ?>

<?php endif; ?>

<p class="tright">

<?php if($this->item->readmore != "0"){ //print_r($this->item); ?>

<a href="<?php echo $this->item->readmore_link; ?>" class="readon<?php echo $this->escape($this->item->params->get('pageclass_sfx')); ?>"><span>читать</span></a>

<?php }else{ ?>

<a href="index.php?option=com_content&view=article&id=<?php echo $this->item->id; ?>:<?php echo $this->item->alias; ?>&catid=<?php echo $this->item->catid; ?>" class="readon<?php echo $this->escape($this->item->params->get('pageclass_sfx')); ?>"><span>читать</span></a>

<?php } ?>

</p>

<?php // to do not that elegant would be nice to group the params ?>

</div>

<div class="item-separator"></div>

А это то что я уже набросал под версию 2.5

<?php defined('_JEXEC') or die;

JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');

?>

<?php $imgpattern = '/src=[\'"]?([^\'" >]+)[\'" >]/';

preg_match_all($imgpattern,$this->item->introtext,$article_image);?>

<div class="img_box">

<?php echo "<img ".$article_image[0][0]." width='200px'/>";?>

<?php $article_short_desc = preg_replace($imgpattern,"", $item->introtext);?>

</div>

<div class="article-item">

<?

$date= explode(" ",$this->item->created);

$date= explode("-",$date[0]);

$date= $date[2].".".$date[1].".".$date[0];

echo $date; ?>

<p class="tright">

<h2> <a href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid)); ?>">

<?php echo $this->escape($this->item->title); ?></a>

</h2>

<p class="tright">

<?php if($this->item->readmore != "0"){ //print_r($this->item); ?>

<a href="<?php echo $this->item->readmore_link; ?>" class="readon<?php echo $this->escape($this->item->params->get('pageclass_sfx')); ?>"><span>читать</span></a>

<?php }else{ ?>

<a href="index.php?option=com_content&view=article&id=<?php echo $this->item->id; ?>:<?php echo $this->item->alias; ?>&catid=<?php echo $this->item->catid; ?>" class="readon<?php echo $this->escape($this->item->params->get('pageclass_sfx')); ?>"><span>читать</span></a>

<?php } ?>

</p>

<?php // to do not that elegant would be nice to group the params ?>

</div>

<div class="item-separator"></div>

Осталось только сделать вывод анонсов материала

S
На сайте с 03.07.2009
Offline
41
#1

Что бы в $this->item->introtext; выводился только анонс, нужно в менеджере материалов, делить текст на анонс и "подробнее" смотри кнопку "Подробнее" в нижнем правом углу.

Если текст не делить, то он весь сохраняется в поле introtext.

Кодинг на PHP. Разработка расширений под Joomla.
S
На сайте с 27.01.2010
Offline
45
#2

Спасибо за ответ, но на старом движке он тоже не делился кнопкой подробнее- но в категориях материалов выводился только интротекст вот пример старого движка еще до апгрейда он еще стоит пока не снесен apogey-proekt.ru/novosti/

---------- Добавлено 16.03.2013 в 19:06 ----------

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

Уже второй день воюю не как не могу найти ответ на вопрос...

S
На сайте с 03.07.2009
Offline
41
#3
shkiper:
Спасибо за ответ, но на старом движке он тоже не делился кнопкой подробнее- но в категориях материалов выводился только интротекст

Не может этого быть. зайдите в материалы и посмотрите.

S
На сайте с 27.01.2010
Offline
45
#4

Да к сожалению это так...

Статьи не разделенные кнопкой подробнее...

Прост если вы заметели старый blog_item.php написан под стиль mod_news_pro_gk4

S
На сайте с 03.07.2009
Offline
41
#5

Посмотрел, это изврат в шаблоне вызывать методы класса базы данных, а потом обрезать выводимый текст. Всё это должно выполняться в модели.

Ну а по сути проблемы вам необходимо использовать функцию для обрезки $this->item->introtext;

function maxsite_str_word($text, $counttext = 10, $sep = ' ') {

$words = split($sep, $text);
if ( count($words) > $counttext )
$text = join($sep, array_slice($words, 0, $counttext));
return $text;
}

Как использовать разберетесь?

S
На сайте с 27.01.2010
Offline
45
#6

По гуглив вашим примером нашел вот такой пример кода

<?php echo substr($this->item->introtext, 0, 250).'...'; ?>

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

когда я их выводил так

<?php $imgpattern = '/src=[\'"]?([^\'" >]+)[\'" >]/';

preg_match_all($imgpattern,$this->item->introtext,$article_image);?>
<?php echo "<img ".$article_image[0][0]." width='100px'/>";?>
<?php $article_short_desc = preg_replace($imgpattern,"", $item->introtext);?>

$content = preg_replace("/<img[^>]+\>/i", " ", $this->item->introtext);

То я контролировал их размеры

---------- Добавлено 18.03.2013 в 11:58 ----------

Решил вывод изображений с помощью CSS

Спасибо за помощЬ

---------- Добавлено 18.03.2013 в 12:00 ----------

Тему просьба не закрывать, вдруг кому згодится...

S
На сайте с 03.07.2009
Offline
41
#7

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

К слову обрезка строки с помощью substr не позволяет осуществить контроль за целостностью слов.

Более того он не всегда корректно работает с utf8, если в строке будут как латиница так и кириллица, то в конце обрезанной строки появятся крокозябры.

S
На сайте с 27.01.2010
Offline
45
#8

Ну с помощью css тоже не ахти получается...кривовато

S
На сайте с 03.07.2009
Offline
41
#9

Firebug в помощь.

S
На сайте с 27.01.2010
Offline
45
#10
sdaprel:
вы сначала выборку ссылок на картинки делайте, потом чистите intro от тегов, и уже только после этого обрезайте лишний текст. Формат текста и картинок осуществляется стилями.
К слову обрезка строки с помощью substr не позволяет осуществить контроль за целостностью слов.
Более того он не всегда корректно работает с utf8, если в строке будут как латиница так и кириллица, то в конце обрезанной строки появятся крокозябры.

А подробнее не скажите как именно...

Как правельно код построить в blog_item.php

---------- Добавлено 18.03.2013 в 15:27 ----------

Вот щас как я сделал но теперь кракозябры появляются upgrade.web-studio.biz.ua/jupgrade/novosti/

---------- Добавлено 18.03.2013 в 15:29 ----------

А если вставляю в item_blog.php этот код

function maxsite_str_word($text, $counttext = 10, $sep = ' ') { 

$words = split($sep, $text);
if ( count($words) > $counttext )
$text = join($sep, array_slice($words, 0, $counttext));
return $text;
}
, то не че не выводится

Подскажите плиз как же правельно всетаки сделать...

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий