Комментарии

Файлы компоновки категорий
( 6 Голосов )

Для воспроизведения списка категорий используются два файла компоновки. В качестве точки входа служит файл views/category/tmpl/default.php. Ниже приведен исходный код из этого файла компоновки.


<?php
/**
* package Joomla.Site
* @ subpackage com_joomprosubs
* @copyright Copyright (C) 2013. All rights preserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/

// прямой доступ отсутствует defined('_JEXEC') or die; JHtml::addlncludePath(JPATH_COMPONENT./helpers'); ?> <div> <?php if ($this->params->def('show_page_heading', 1)) : ?> <h1> <?php echo $this->escape($this->params->get('page_heading')); ?> </h1> <?php endif; ?> <?php if($this->params->get('show_category_title', 1)) : ?> <h2> <?php echo JHtml::_('content.prepare', $this->category->title); ?> </h2> <?php endif; ?> <?php if ($this->params->get('show_description', 1) || ^$this->params->def('show_description_image', 1)) : ?> <div> <?php if ($this->params->get('show_description_image') && $this->category->getParams()->get('image')) : ?> <img src="/<?php echo $this->category->getParams()->get('image'); <?php endif; ?> <?php if ($this->params->get('show_description') && ^$this->category->description) : ?> <?php echo JHtml::_('content.prepare', $this->category->description); ?> <?php endif; ?> <div></div> </div> <?php endif; ?> <?php echo $this->loadTemplate('items'); ?> </div>

И этот код похож на исходный код из соответствующего файла, предназначенного для компоновки списка категорий веб-ссылок или других элементов. Сначала в нем отображается описание категории и ее изображение, а затем вызывается метод loadTemplate () для загрузки файла исходной компоновки defaulti terns. php. Ниже приведена первая часть содержимого этого файла.


<?php
/*
* @subpackage   com_joomprosubs
* @copyright Copyright (С) 2013. All frights reserved.
* license GNU General Public License version 2 or later; see LICENSE.txt
*/

// прямой доступ отсутствует defined('_JEXEC') or die;
// Код для поддержки ссылок на редактирование подписок. // создать краткую форму для описания параметров JHtml::addlncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.tooltip'); JHtml::core();
// получить объект пользователя $user = JFactory:rgetUser();
// проверить, разрешено ли пользователю вводить или редактировать подписки $canEdit = $user->authorise('core.edit', 'com_joomprosubs.category.' . $this->category->id); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $listFilter = $this->state->get('list.filter'); ?> <?php if (empty($this->items)) : ?> <p> <?php echo JText::_('COM_JOOMPROSUBS_NO_JOOMPROSUBS'); ?></p> <?php else : ?> <form action="<?php echo htmlspecialchars(JFactory::getURI()->toString()) ; ?>" method="post" name="adminForm" id="adminForm"> <fieldset> <legendx?php echo JText::_('JGLOBAL_FILTER_LABEL'); ?></legend> <div> <label for="filter-search"> <?php echo JText::_('COM_JOOMPROSUBS_FILTER_LABEL').' '; ?></label> <input  type="text"  name="filter-search"  id="filter-search" value="<?php echo  $this->escape($this->state->get('list.filter')); class="inputbox"  onchange="document.adminForm.submit();" title="<?php echo  JText::_('COM_CONTENT_FILTER_SEARCH_DESC');   ?>" /> </div> <div> <?php  echo  JText::_('JGLOBAL_DISPLAY_NUM'); ?> <?php echo  $this->pagination->getLimitBox(); ?> </div> </fieldset>

Сначала выполняются все служебные операции, необходимые для загрузки вспомогательных файлов, а также двух видов поведения по сценариям JavaScript: всплывающих подсказок и основного поведения. Затем проверяется, разрешено ли пользователю редактировать данную категорию. Если разрешено, то категория появится в виде ссылки на подписку. В противном случае она будет показана в обычном текстовом виде.

Далее получается поле сортировки в заданном порядке и направлении, а затем текст фильтра, если таковой имеется. Напомним, что пользователь может сортировать список, щелкая кнопкой мыши на заголовках столбцов. После этого проверяется наличие каких-нибудь элементов подписки для обработки. Если таковые отсутствуют, выводится сообщение, уведомляющее об отсутствии подписок в данной категории. В противном случае компоновка элементов подписки продолжается.

Затем создается элемент разметки формы. В качестве действия указывается переход по URL обратно на ту же самую страницу. Форма требуется для сортировки по столбцу и фильтрации по введенным пользователям критериям. Для этого воспроизводится поле ввода текста фильтра и раскрывающийся список ограничений на отображение.

Далее следует приведенный ниже фрагмент кода.

<table>
<thead>
<tr>
<th><?php echo JHtml::_('grid.sort', 'COM_JOOMPROSUBS_GRID_TITLE', 'a.title', $listDirn, $listOrder); ?> </th>
<th> <?php echo JHtml::_('grid.sort', 'COM_JOOMPROSUBS_GRID_GROUP', 'g.title', $listDirn, $listOrder); ?> </th>
<th><?php echo JHtml::_('grid.sort *, 'COM_JOOMPROSUBS_GRID_DURATION', 'a.duration', $listDirn, $listOrder); ?> </th>
</tr>
</thead>

В этом фрагменте кода воспроизводятся заголовки сортируемых столбцов. Следующий фрагмент кода приведен ниже.

<tbody>
<?php foreach ($this->items as $i => $item) : ?> <tr>
<td>
<?php if ($canEdit) : ?>
<a href="/<?php echo JRoute::_( 4$>' index .php?option=com_j oomprosubs&task=subscription.edit ->&sub_id='. $item->id.'&catid='.$item->catid); ?>"> <?php echo  $item->title;   ?></a> <?php else: ?>
<?php echo  $item->title;?> <?php endif;   ?> <?php if ($this->params->get('show_description')) : ?>
<?php echo  nl2br($item->description);?> <?php endif; ?> </td> <td>
<?php echo  $item->group_title; ?> </td> <td>
<?php echo  $item->duration; ?> </td> </tr> <?php endforeach; ?> </tbody> </table>


В этом фрагменте кода организуется циклическое обращение к элементам массива и воспроизведение каждой строки таблицы, в том числе заголовка, описания, если соответствующий параметр установлен на отображение описания, а также названия подписки и срока ее действия.

И последний фрагмент кода из рассматриваемого здесь файла компоновки приведен ниже.

<div>
<р> <?php echo $this->pagination->getPagesCounter(); ?> </p>
<?php echo $this->pagination->getPagesLinks(); ?>
</div>
<div>
<input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" />
<input type="hidden" name="filter_order_dir" value="<?php echo $listDirn; ?>" />
</div>
</form>
<?php endif; ?>


В этом фрагменте кода воспроизводятся элементы управления разбиением на страницы, закрывается форма и завершается кодовый блок условного оператора if-else.


Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости
Добавить комментарий


Защитный код