简体   繁体   中英

Joomla 3.4 override com_content/default_articles.php with blog_item

i'm working on the category overrides (com_content/category/) right now and trying to display the items of each category directly under its category

like this:

maincat (com_content/category/default_articles.php)

-cat 1 (com_content/category/default_children)

-- undercat1 1 (com_content/category/blog_item.php)

-- undercat1 2

so i need to insert code from blog_item.php into default_articles or default_children

this

<div class="test"> 
  <?php echo $this->item->event->beforeDisplayContent; ?>
   <?php echo $this->item->introtext; ?>  
</div>

needs to go into default_articles but i get a property error, also tried to use different variable names - same error. Error:

Notice: Undefined property: stdClass::$event in D:\\xampp\\htdocs\\joomla\\templates\\protostar\\html\\com_content\\category\\default_children.php on line 66

Notice: Trying to get property of non-object in D:\\xampp\\htdocs\\joomla\\templates\\protostar\\html\\com_content\\category\\default_children.php on line 66

Notice: Undefined property: stdClass::$introtext in D:\\xampp\\htdocs\\joomla\\templates\\protostar\\html\\com_content\\category\\default_children.php on line 66

Line 66 from default_children.php:

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

(this line is originally from com_content/category/blog_item.php, i want it to be in default_children.php)

default_children.php

 <?php
 /**
 * @package     Joomla.Site
 * @subpackage  com_content
  *
  * @copyright   Copyright (C) 2005 - 2015 Open Source Matters, Inc. All      rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
   */

  defined('_JEXEC') or die;

   JHtml::_('bootstrap.tooltip');

   $lang    = JFactory::getLanguage();
    $class = ' class="first"';
        ?>

   <?php if (count($this->children[$this->category->id]) > 0) : ?>
  <?php foreach ($this->children[$this->category->id] as $id => $child) : ?>
      <?php
    if ($this->params->get('show_empty_categories') ||       $child->getNumItems(true) || count($child->getChildren())) :
        if (!isset($this->children[$this->category->id][$id + 1])) :
            $class = ' class="last"';
          endif;
    ?>

    <div<?php echo $class; ?>>
        <?php $class = ''; ?>
        <?php if ($lang->isRTL()) : ?>
        <h3 class="page-header item-title">
            <?php if ( $this->params->get('show_cat_num_articles', 1)) : ?>
                <span class="badge badge-info tip hasTooltip" title="<?php    echo JHtml::tooltipText('COM_CONTENT_NUM_ITEMS'); ?>">
                    <?php echo $child->getNumItems(true); ?>
                </span>
            <?php endif; ?>
            <a href="<?php echo JRoute::_(ContentHelperRoute::getCategoryRoute($child->id));?>">
            <?php echo $this->escape($child->title); ?></a>

            <?php if (count($child->getChildren()) > 0 && $this->maxLevel > 1) : ?>
                <a href="#category-<?php echo $child->id;?>" data-toggle="collapse" data-toggle="button" class="btn btn-mini pull-right"><span class="icon-plus"></span></a>
            <?php endif;?>
        </h3>
        <?php else : ?>
        <h3 class="page-header item-title"><a href="<?php echo JRoute::_(ContentHelperRoute::getCategoryRoute($child->id));?>">
            <?php echo $this->escape($child->title); ?></a>
            <?php if ( $this->params->get('show_cat_num_articles', 1)) : ?>
                <span class="badge badge-info tip hasTooltip" title="<?php echo JHtml::tooltipText('COM_CONTENT_NUM_ITEMS'); ?>">
                    <?php echo $child->getNumItems(true); ?>
                </span>
            <?php endif; ?>

            <?php if (count($child->getChildren()) > 0 && $this->maxLevel > 1) : ?>
                <a href="#category-<?php echo $child->id;?>" data-toggle="collapse" data-toggle="button" class="btn btn-mini pull-right"><span class="icon-plus"></span></a>
            <?php endif;?>
        <?php endif;?>
        </h3>
        <?php if ($this->params->get('show_subcat_desc') == 1) :?>
            <?php if ($child->description) : ?>
                <div class="category-desc">
                    <?php echo JHtml::_('content.prepare', $child->description, '', 'com_content.category'); ?>
                </div>
            <?php endif; ?>
        <?php endif; ?>

          <div class="test">   <?php echo var_dump($this->item) ?>   </div>
        <?php echo $this->item->event->beforeDisplayContent; ?> <?php echo $this->item->introtext; ?>


        <?php if (count($child->getChildren()) > 0 && $this->maxLevel > 1) :?>
        <div class="collapse fade" id="category-<?php echo $child->id;?>">
            <?php
            $this->children[$child->id] = $child->getChildren();
            $this->category = $child;
            $this->maxLevel--;
            echo $this->loadTemplate('children');
            $this->category = $child->getParent();
            $this->maxLevel++;
            ?>
        </div>
        <?php endif; ?>

    </div>
    <?php endif; ?>
<?php endforeach; ?>

´

I'm not yet that good with PHP - probably some of you could give me a hint towards a solution?

thank you

I'm not sure exactly what you are trying to do but I think you are confused about that the default_children template is doing. It is not displaying articles, it is displaying information on any child categories of the category that is defining the blog. Hence in the code you posted you don't see any reference to $item you see references to $child . Categories do not have introtext they have description and thus you see $child->description .

The file you want to override is default_articles . If you look in there you will see references to $article->created_by_alias so that tells you probably you want $article->introtext .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM