Load Listview data with my default query

Hello Everyone

I want my ListView to always display records sorted by date_created (or date_entered) by default β€” similar to server-side data processing, so that every time the ListView loads, the latest records appear on top automatically.

To set default sorting by date_entered in ListView, follow these steps:

  1. Create the following file if it doesn’t already exist:
custom/modules/<module_name>/views/view.list.php
  1. Add the following code inside that file:

Make sure to place the sorting logic before parent::display();

<?php

if (!defined('sugarEntry') || !sugarEntry) {
    die('Not A Valid Entry Point');
}

class <module_name>ViewList extends ViewList
{
    public function display()
    {
        // Check user preferences for existing sort settings
        $userPreferenceOrder = $GLOBALS['current_user']->getPreference('listviewOrder', '<MODULE_NAME_UPPERCASE>');
        
        // Apply default sort if not already set by user
        if (empty($userPreferenceOrder['orderBy'])) {
            $_REQUEST['orderBy'] = 'date_entered';
            $_REQUEST['sortOrder'] = 'DESC';
        }

        parent::display();
    }
}

β†’ Replace <module_name> and <MODULE_NAME_UPPERCASE> with your actual module name.
β†’ Example: For AOK_KnowledgeBase2, use aok_knowledgebase2 and 'AOK_KNOWLEDGEBASE' respectively.

1 Like