我可以在Joomla的“列出所有联系人类别”页面上显示类别中的联系人列表吗?

时间:2014-07-23 15:43:09

标签: php joomla foreach contacts

简而言之,在Joomla中有两种显示联系人的选项:

  1. 显示所有Joomla联系分类。
  2. 在单个类别中显示所有Joomla联系人。
  3. 我想使用第一个选项,但合并每个类别下方的列表,显示该类别中的联系人列表以及指向其个人资料的链接。

    我想到的最简单的方法是编辑文件com_contact / categories / default_items.php的模板覆盖

    我找到了一个我希望列表出现的点,然后从类别视图中复制并粘贴代码(生成联系人列表)。

    <ul>
        <?php // Add list of contacts for each category
        foreach ($this->items as $i => $item) : ?>
        <li>
            <a href="<?php echo JRoute::_(ContactHelperRoute::getContactRoute($item->slug, $item->catid)); ?>">
                <?php echo $item->name; ?>
            </a>
        </li>
        <?php endforeach; ?>
    </ul>
    

    但我假设我不能只复制和粘贴,因为需要在$ this-&gt;项目中添加额外的节点。

    目前,没有生成任何列表,只有<ul>循环外的foreach ..但有趣的是,<li><a>正在生成..但链接到我正在使用的当前页面(可能是因为$item->slug仍然被视为类别)。

    那么有人能指出我如何引用某个类别中的联系人的正确方向吗?我所追求的只是名称和slug / URL。

    更新: 我在同一个文件(default_items.php)中看到了这个,虽然我意识到它指的是子类别......这是一个开始在类别中实际联系的地方吗?

    <?php if (count($item->getChildren()) > 0) :?>
        <div class="collapse fade" id="category-<?php echo $item->id;?>">
            <?php
            $this->items[$item->id] = $item->getChildren();
            $this->parent = $item;
            $this->maxLevelcat--;
            echo $this->loadTemplate('items');
            $this->parent = $item->getParent();
            $this->maxLevelcat++;
            ?>
        </div>
    <?php endif; ?>
    

    BUMP - 有没有人有这方面的经验?或者在查看类别时能够呼叫个人联系人?它们是如何联系在一起的?

1 个答案:

答案 0 :(得分:0)

标记为Category view之后,文件default_children.php中的<li...添加代码:

    <?php

    // Get Category Model data
    $categoryModel = JModelLegacy::getInstance('Category', 'ContactModel', array('ignore_request' => true));

    $categoryModel->setState('category.id', $child->id);
    $categoryModel->setState('list.ordering', 'a.name');
    $categoryModel->setState('list.direction', 'asc');
    $categoryModel->setState('filter.published', 1);

    $contacts = $categoryModel->getItems();

    ?>

对于Custom Fields,请在previus代码后添加:

    JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php');
    foreach($contacts as $contactItem) {
        $currentContFields[] = FieldsHelper::getFields('com_contact.contact', $contactItem, true);
}