joomla类别列表覆盖以向每个列表项添加id

时间:2012-10-10 15:12:55

标签: joomla html-lists override

我正在尝试为Joomla的类别列表输出中的每个列表项添加自定义样式,它给出了以下html

<div class="blog">
  <div class="cat-children">    
    <ul>
      <li class="first">
        <span class="item-title"><a href="/hyt-hand-held-license-free">HYT</a>
        </span>
      </li>
      <li></li>
    </ul>
  </div>
</div>

我认为我需要做的是添加以下内容:

<li id="myID<?php echo $this->item->catid; ?> ">

麻烦的是我无法找到要覆盖的文件。我查看了/templates/mytemplate/html/com_content/category/以及/components/com_content/views/category/tmpl但是这些文件中似乎没有一个与cat-chidren相关的无序列表。

所以我的第一个问题是我应该编辑哪个文件?我的第二个是this->item->[correct'Method'?]的最佳语法(方法正确的术语或变量,我对此有点不稳定!)使用,以便每个列表项都有id="myID[nameofarticle/subcatagory]" < / p>

3 个答案:

答案 0 :(得分:1)

你会在/components/com_content/views/category/tmpl/default.php中看到cat-children

ul是另一个加载的子模板,loadTemplate('children'); ?&GT; ,即

/components/com_content/views/category/tmpl/default_children.php

如果你想修改li类,你可以在第26行(你的覆盖而不是核心文件)中粘贴类似这样的内容 - 但只需在核心文件上测试就可以了。

<?php $class = ' class="cmyId' . $this->escape($child->title) . '"';?>

这会使每个李显示为

所以这个

<li<?php echo $class; ?>>
    <?php $class = ''; ?>

变成这个

<?php $class =  ' class="cmyId' . $this->escape($child->title) . '"';?>
    <li<?php echo $class; ?>>
    <?php //$class = ''; ?>

已在2.5安装上测试过。

答案 1 :(得分:0)

你应该覆盖存储在components / com_content / views /中的几个文件 根据您要编辑的列表,您应该查看文件夹: - 文章 - 类别 - 类别 - 特色 在每个文件夹中,您将看到一个名为“tmpl”的子文件夹,其中有一个“default.php”文件。这就是你要找的东西。

如果要覆盖文件,请记住最佳做法是将替代文件放在模板的文件夹中,构建与原始文件相似的路径(例如,对于文章文件夹:templates / YOURTEMPLATEFOLDER / html / com_content / article / default.php - 不需要tmpl文件夹,也没有视图文件夹。)

另一种选择,在我看来,更简单的方法是为每个类别设置不同的模板,然后为每个类别分配您喜欢的列表样式。

或者,更简单的是,您可以简单地编辑模板文件夹中的index.php文件,以便根据$ catId回显特定的css样式表。

答案 2 :(得分:0)

当您的HTML代码显示您正在使用类别博客视图时,该类别中的每个文章实例都由blog_children.php文件呈现,因为它显示/components/com_content/views/category/tmpl/blog.php

<?php echo $this->loadTemplate('children'); ?>

所以/components/com_content/views/category/tmpl/blog_children.php是你需要在模板html目录中编辑或覆盖的文件。

然后,您可以使用$ child-&gt; id为每篇文章应用自定义样式添加ID或类。