Я сделал компонент центра загрузки в Joomla с помощью https://www.component-creator.com и все работало нормально до сих пор. Компонент, кажется, не хочет показывать больше элементов, чем 21 из базы данных, что странно, поскольку у меня есть 24 элемента в базе данных.
Компонент использует две таблицы. Один для тем и один для загрузок, которые затем имеют идентификатор для предмета, к которому он подключен.
так как есть много кода, я поместил его на github:
https://github.com/strookers/com_dlcenter
это код из слоя модели:
public function getEmner()
{
$emner = parent::getItems();
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
->select($db->quoteName(array('id', 'ordering', 'state', 'checked_out', 'checked_out_time', 'created_by', 'title')))
->from('`#__dlcenter_emne`')
->order('ordering ASC');
$db->setQuery($query);
$emner = $db->loadObjectList();
return $emner;
}
public function getDownloads()
{
$downloads = parent::getItems();
foreach($downloads as $item){
if (isset($item->emneid) && $item->emneid != '') {
if(is_object($item->emneid)){
$item->emneid = JArrayHelper::fromObject($item->emneid);
}
$values = (is_array($item->emneid)) ? $item->emneid : explode(',',$item->emneid);
$textValue = array();
foreach ($values as $value){
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
->select($db->quoteName('title'))
->from('`#__dlcenter_emne`')
->where($db->quoteName('id') . ' = ' . $db->quote($db->escape($value)));
$db->setQuery($query);
$results = $db->loadObject();
if ($results) {
$textValue[] = $results->title;
}
}
$item->emneid = !empty($textValue) ? implode(', ', $textValue) : $item->emneid;
}
}
return $downloads;
}
И это из слоя представления:
<div class="neaccordion nevertical">
<?php foreach ($this->emner as $i => $emne) : ?>
<section id="<?php echo $emne->title; ?>">
<h3><a href="#<?php echo $emne->title; ?>"><?php echo $emne->title; ?></a></h3>
<table class="table table-striped" id = "downloadList" ><tbody>
<?php foreach ($this->downloads as $i => $download) : ?>
<?php
if($download->emneid == $emne->title) :?>
<tr>
<td style="text-align: left; padding: 0px 0px 0px 10px; vertical-align: middle;">
<h4><?php echo $download->titel; ?></h4>
</td>
<td style="text-align: right; padding: 0px 10px 0px 0px; vertical-align: middle;">
<?php
if (!empty($download->download)):
$uploadPath = 'administrator' . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_dlcenter' . DIRECTORY_SEPARATOR . 'images/nordelektro/dlcenter' .DIRECTORY_SEPARATOR . $download->download;
echo '<a href="' . JRoute::_(JUri::base() . $uploadPath, false) . '" class="readmore" target="_blank" title="Hent fil" style="color: #fff;">Download</a>';
else:
echo $download->download;
endif; ?>
</td>
</tr>
<?php endif; ?>
<?php endforeach;?>
</tbody></table>
</section>
<?php endforeach;?>
</div>
Вот некоторые изображения БД:
Я понятия не имею, в чем проблема, поскольку она работает нормально до 22 пункта. Кажется, он выводит каждый элемент в базе данных, кроме тех, что после 21 элемента.
если нужна дополнительная информация, просто спросите.
Сверху кажется, что у вас проблема с разбиением на страницы или фильтрацией компонентов. Я предполагаю, что вы не видите нумерацию страниц после того, как вы превысили около 20 пунктов. (ваша база данных показывает, что один элемент находится в аварийном состоянии, ваши глобальные настройки, вероятно, установлены на 20 элементов, так как это все, что вы видите)
Это может быть проблема с вашим компонентом или проблема с вашими глобальными настройками Joomla.
Если это не ваши глобальные настройки Joomla, уточните у создателей компонентов, что они обычно достаточно чутко реагируют на проблемы в своем продукте.
Других решений пока нет …