Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 5 Ответов
  • 3036 Просмотров
*

klubnichkaaa

  • Захожу иногда
  • 302
  • 16 / 2
Сортировка полей в Joomla 1.6
« : 13.06.2011, 20:50:49 »
Приветствую всех! Хотел бы узнать как в 1.6 сделать сортировку полей! А именно у меня есть компонент и всё что мне нужно это сделать сортировку и сделать сохранение ordering. Вся проблема именно в этом, стандартные компоненты я просмотрел попробовал сделать наподобие, но из за большого кода мне не понятно. Хотел бы увидеть краткий код по данной проблеме. Что вы писали в моделе, виде и шаблоне! Буду очень признателен! +
Делай с другими то же, что они собираются сделать с тобой: бей первым.
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Сортировка полей в Joomla 1.6
« Ответ #1 : 14.06.2011, 12:34:17 »
что значит краткий код? :)
вот тут можно глянуть, но предупреждаю, там не все нюансы с сортировкой описаны.
*

klubnichkaaa

  • Захожу иногда
  • 302
  • 16 / 2
Re: Сортировка полей в Joomla 1.6
« Ответ #2 : 14.06.2011, 13:33:40 »
Спасибо за ссылку! Я видел это мануал! Но увы пока не пашет!

В своём тестовом компоненте я пишу код модели mycomponents.php

Цитировать
<?php

defined('_JEXEC') or die('Restricted access');

// import the Joomla modellist library
jimport('joomla.application.component.modellist');

/**
 * HelloWorlds Model
 */
class MycomponentModelMycomponents extends JModelList
{

   protected function getListQuery()
   {

      // Create a new query object.
      $db = JFactory::getDBO();
      $query = $db->getQuery(true);

      // Select some fields
      $query->select('*');

      // From the hello table
      $query->from('#__mycomponent');
      
$orderCol   = $this->state->get('list.ordering');
$orderDirn   = $this->state->get('list.direction');
$query->order($db->getEscaped($orderCol.' '.$orderDirn));

      return $query;
   }
   
       protected function populateState($ordering = null, $direction = null)
{
   parent::populateState('name', 'asc');
}

}

Затем в виде дописываю.
Цитировать
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
 
// import Joomla view library
jimport('joomla.application.component.view');
 
/**
 * HelloWorlds View
 */
class MycomponentViewMycomponents extends JView
{

   /**
    * HelloWorlds view display method
    * @return void
    */
   function display($tpl = null)
   {
   
      // Get data from the model
      $items = $this->get('Items');
      $pagination = $this->get('Pagination');
       $state = $this->get('State');
      // Check for errors.
      if (count($errors = $this->get('Errors')))
      {
         JError::raiseError(500, implode('<br />', $errors));
         return false;
      }
      // Assign data to the view
      $this->items = $items;
      $this->pagination = $pagination;
      $this->state = $state;
      // Set the toolbar
      $this->addToolBar();
 
      // Display the template
      parent::display($tpl);
 
      // Set the document
      $this->setDocument();
   }
 
   /**
    * Setting the toolbar
    */
   protected function addToolBar()
   {
      JToolBarHelper::title(JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLDS'), 'mycomponent');
      JToolBarHelper::deleteListX('', 'mycomponents.delete');
      JToolBarHelper::editListX('mycomponent.edit');
      JToolBarHelper::addNewX('mycomponent.add');
      JToolBarHelper::custom('mycomponents.publish', 'publish.png', 'publish_f2.png','JTOOLBAR_PUBLISH');
      JToolBarHelper::custom('mycomponents.unpublish', 'unpublish.png', 'unpublish_f2.png', 'JTOOLBAR_UNPUBLISH');
   }
   /**
    * Method to set up the document properties
    *
    * @return void
    */
 
 
   
   protected function setDocument()
   {
      $document = JFactory::getDocument();
      $document->setTitle(JText::_('COM_HELLOWORLD_ADMINISTRATION'));
   }
}

А после в default_body.php
Цитировать
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted Access');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('script','system/multiselect.js', false, true);

$user      = JFactory::getUser();
$userId      = $user->get('id');
$listOrder   = $this->state->get('list.ordering');
$listDirn   = $this->state->get('list.direction');
$canOrder   = $user->authorise('core.edit.state', 'com_mycomponents.category');
$saveOrder   = $listOrder == 'a.ordering';
?>
<?php foreach($this->items as $i => $item):
         $ordering   = ($listOrder == 'a.ordering');
         $item->cat_link   = JRoute::_('index.php?option=com_mycomponents&extension=com_mycomponents&task=edit&type=other&cid[]='. $item->catid);
         $canCreate   = $user->authorise('core.create',      'com_mycomponents.category.'.$item->catid);
         $canEdit   = $user->authorise('core.edit',         'com_mycomponents.category.'.$item->catid);
         $canCheckin   = $user->authorise('core.manage',      'com_checkin') || $item->checked_out==$user->get('id') || $item->checked_out==0;
         $canChange   = $user->authorise('core.edit.state',   'com_mycomponents.category.'.$item->catid) && $canCheckin;
?>
   <tr class="row<?php echo $i % 4; ?>">
      <td>
         <?php echo $item->id; ?>
      </td>
      <td>
         <?php echo JHtml::_('grid.id', $i, $item->id); ?>
      </td>
      <td>
         <a href="<?php echo JRoute::_('index.php?option=com_mycomponent&view=mycomponent&layout=edit&id='.(int) $item->id); ?>"><?php echo $item->name; ?></a>
         </td>
         <td>
         <?php echo JHtml::_('jgrid.published', $item->published, $i, 'mycomponents.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?>
      </td>
      <td class="order">
               <?php if ($canChange) : ?>
                  <?php if ($saveOrder) : ?>
                     <?php if ($listDirn == 'asc') : ?>
                        <span><?php echo $this->pagination->orderUpIcon($i, (@$this->items[$i-1]->catid == $item->catid), 'banners.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span>
                        <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, (@$this->items[$i+1]->catid == $item->catid), 'banners.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span>
                     <?php elseif ($listDirn == 'desc') : ?>
                        <span><?php echo $this->pagination->orderUpIcon($i, (@$this->items[$i-1]->catid == $item->catid), 'banners.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?></span>
                        <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, (@$this->items[$i+1]->catid == $item->catid), 'banners.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span>
                     <?php endif; ?>
                  <?php endif; ?>
                  <?php $disabled = $saveOrder ?  '' : 'disabled="disabled"'; ?>
                  <input type="text" name="order[]" size="5" value="<?php echo $item->ordering;?>" <?php echo $disabled;?> class="text-area-order" />
               <?php else : ?>
                  <?php echo $item->ordering; ?>
               <?php endif; ?>
      </td>
   </tr>
<?php endforeach; ?>

И уже в шапке дописываю код default_head.php

Цитировать
<?php echo JHtml::_('grid.sort',  'name', 'name', $listDirn, $listOrder); ?>

поля
Цитировать
      <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" />
      <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" />

Тоже присутствуют! Но сортировка не работает, никаких ошибок нет. Мне кажется тут что то с видом или моделью.
Может подскажешь что тут не так, я вот пробую щас посмотреть в стандартных компонентах, но пока безуспешно.
Делай с другими то же, что они собираются сделать с тобой: бей первым.
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Сортировка полей в Joomla 1.6
« Ответ #3 : 14.06.2011, 13:46:30 »
во первых в модели поля должны фильтроваться
Код
class MycomponentModelMycomponents extends JModelList
{
public function __construct($config = array())
{
if (empty($config['filter_fields'])) {
$config['filter_fields'] = array(
'name' // ... сюда нужно добавить все поля по которым есть сортировка
);
}

parent::__construct($config);
}
....

может там еще что-то не так, сложно так сказать.
*

klubnichkaaa

  • Захожу иногда
  • 302
  • 16 / 2
Re: Сортировка полей в Joomla 1.6
« Ответ #4 : 14.06.2011, 14:06:41 »
Прекрасно понимаю что сложно, не свой код непонятно что и как! но даже добавив этот код в модель не помогло, естественно я посмотрел как в родных компонентах попробовал, но так же никакой реакции. И ещё рисунок когда сортируешь не появляется рядом с названием. А в контроллере и в папке tables нужно что нибудь!?
Делай с другими то же, что они собираются сделать с тобой: бей первым.
*

Yazi

  • Осваиваюсь на форуме
  • 46
  • 0 / 0
Re: Сортировка полей в Joomla 1.6
« Ответ #5 : 21.07.2011, 12:08:24 »
При использовании данного мануала и пытаясь сделать самостоятельно.
Выдается ошибка:
Call to a member function get() on a non-object in /home1/.../administrator/components/com_catalog/views/catalogs/tmpl/default_head.php on line 9
Это соответсвует строчке:
$listOrder   = $this->state->get('list.ordering');
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Документация по созданию модуля для Joomla 2.5 и Joomla 3.x

Автор b2z

Ответов: 1
Просмотров: 2330
Последний ответ 29.07.2015, 09:40:30
от b2z
JPluginHelper::importPlugin('content') в Joomla 1.7

Автор Dutch

Ответов: 2
Просмотров: 4783
Последний ответ 30.03.2015, 14:22:51
от twins717
Документация по созданию компонента для Joomla 2.5

Автор Sulpher

Ответов: 74
Просмотров: 57356
Последний ответ 17.11.2014, 13:43:07
от limon142
Документация по созданию плагина для Joomla 2.5 и Joomla 3.x

Автор b2z

Ответов: 8
Просмотров: 14419
Последний ответ 27.08.2014, 09:52:02
от skinny
Как составить запрос по правилам Joomla ?

Автор mainet

Ответов: 7
Просмотров: 1769
Последний ответ 03.02.2014, 22:56:05
от Aleks.Denezh