AlexonClassic
@AlexonClassic
Я только учусь

Как в Joomla 3, в файл intro_image.php добавить название категории и дату?

Всем привет!

У меня есть файл:
templates/my_template/html/layouts/joomla/content/intro_image.php

в него мне нужно вставить код, который бы отображал название категории в которую входит материал чей intro image отображается на сайте + добавить дату публикации этого материала... Т. е., мне нужно перенести название категории и дату публикации материала из blog_item ИМЕННО в файл
templates/my_template/html/layouts/joomla/content/intro_image.php

Как это сделать - не пойму...

Пробовал по-разному:
$this->category->text
$this->category->title

и еще кучу разного кода типа:
$title = $this->escape($displayData['item']->category_title);

Ничего не получается...

Запросы в БД писать не хочется чтобы не нагружать лишний раз сервак. Хотелось бы как-то поизголяться с файлами Joomla т. к. все дело в том, что сама категория (ее название и ссылка), формируется в файле
templates/my_template/html/layouts/joomla/content/info_block/category.php

а дата публикации в
templates/my_template/html/layouts/joomla/content/info_block/publish_date.php

Но, для того чтобы к ним добраться с того же blog_item там длюннющая строка с проверкой:
if ($useDefList && ($info == 0 || $info == 2)) :
echo JLayoutHelper::render('joomla.content.info_block.block', array('item' => $this->item, 'params' => $params, 'position' => 'above'));
endif;

которая "заставляет" пройтись еще по нескольким (вышеуказанным) файлам... Просто скопировать код из этих файлов и вставить в intro_image.php - не получается...

Вставить код из blog_item.php:
echo JLayoutHelper::render('joomla.content.info_block.block', array('item' => $this->item, 'params' => $params, 'position' => 'above'));

в intro_image.php - не есть возможным, т. к. выскакивают эксепшены...

Кто-то может подсказать как это сделать?

Заранее благодарю за ответы!
  • Вопрос задан
  • 223 просмотра
Решения вопроса 1
AlexonClassic
@AlexonClassic Автор вопроса
Я только учусь
Оказалось что все же можно обойтись без запроса к БД...

Достаточно было в
templates/my_template/html/layouts/joomla/content/info_block

создать 2-а файла:
  1. category_title.php, в котором прописать это:
    <?php defined('JPATH_BASE') or die;
    	echo $this->escape($displayData['item']->category_title);
    ?>
  2. publish_date_no_html.php, в котором прописать это:
    <?php defined('JPATH_BASE') or die;
    	echo JHtml::_('date', $displayData['item']->publish_up, JText::_('DATE_FORMAT_LC2'));
    ?>
а в blog_item.php добавить:
$cat_name = JLayoutHelper::render('joomla.content.info_block.category_title', array('item' => $this->item));
	$art_publish_date = JLayoutHelper::render('joomla.content.info_block.publish_date_no_html', array('item' => $this->item));
	JRequest::setVar('cat_name', $cat_name, 'post'); //задаем глобальную переменную
	JRequest::setVar('art_publish_date', $art_publish_date, 'post'); //задаем глобальную переменную

и уже в intro_image.php, добавить это:
$cat_name = JRequest::getVar('cat_name', '', 'post'); //считываем глобальную переменную
	$art_publish_date = JRequest::getVar('art_publish_date', '', 'post'); //считываем глобальную переменную

и уже в нужном месте, через echo вывести название категории и дату публикации материала...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы