【问题标题】:Joomla 3.4 override com_content/default_articles.php with blog_itemJoomla 3.4 用 blog_item 覆盖 com_content/default_articles.php
【发布时间】:2015-10-13 10:49:02
【问题描述】:

我现在正在处理类别覆盖 (com_content/category/) 并尝试在其类别下直接显示每个类别的项目

像这样:

maincat (com_content/category/default_articles.php)

-cat 1 (com_content/category/default_children)

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

--undercat1 2

所以我需要将 blog_item.php 中的代码插入到 default_articles 或 default_children 中

这个

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

需要进入 default_articles 但我得到一个属性错误,还尝试使用不同的变量名 - 相同的错误。 错误:

注意:未定义属性:D:\xampp\htdocs\joomla\templates\protostar\html\com_content\category\default_children.php 第 66 行中的 stdClass::$event

注意:尝试在第 66 行获取 D:\xampp\htdocs\joomla\templates\protostar\html\com_content\category\default_children.php 中非对象的属性

注意:未定义的属性:D:\xampp\htdocs\joomla\templates\protostar\html\com_content\category\default_children.php 中的第 66 行中的 stdClass::$introtext

default_children.php 中的第 66 行:

&lt;?php echo $this-&gt;item-&gt;event-&gt;beforeDisplayContent; ?&gt; &lt;?php echo $this-&gt;item-&gt;introtext; ?&gt;

(此行最初来自 com_content/category/blog_item.php,我希望它在 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; ?>

'

我对 PHP 还不是很了解——也许你们中的一些人可以给我一个解决方案的提示?

谢谢你

【问题讨论】:

  • 您能否将消息的确切文本和确切的代码放入您的问题中?它不可能是那里,因为您缺少打开的 php 标记。
  • 尝试添加var_dump($this-&gt;item),看看属性名称是什么。
  • "object(stdClass)#290 (1) { ["params"]=> NULL }" 来自 var_dump($this->item)
  • 这就是问题所在。它是一个数组,没有任何东西叫introtext。在核心布局中如何引用该项目?看看是不是在$this里面。

标签: php joomla overriding


【解决方案1】:

我不确定您到底要做什么,但我认为您对 default_children 模板正在做什么感到困惑。它不显示文章,而是显示有关定义博客的类别的任何子类别的信息。因此,在您发布的代码中,您看不到对$item 的任何引用,您会看到对$child 的引用。类别没有introtext,它们有description,因此您会看到$child-&gt;description

您要覆盖的文件是default_articles。如果您在那里查看,您会看到对$article-&gt;created_by_alias 的引用,这表明您可能想要$article-&gt;introtext

【讨论】:

  • com_content/category/default_children 是类别的子项。 com_content/category/blog_item.php 是该子类别中的项目。所以我想将它们显示在我拥有的那个儿童类别中。因此用户不必单击该子类别即可访问博客项目,但可以直接查看该类别并查看该博客项目。在此博客项目上,他可以单击以获取全文。基本上我想在 default_children 中使用 blog_item 中的代码。我希望你能理解并帮助我:(
  • 如果您想按类别分离项目,那么您需要从布局的开头开始,并组织如何管理项目的循环。您可能想查看类别视图的布局排序选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-22
  • 1970-01-01
  • 1970-01-01
  • 2015-11-07
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多