Documentation

GetList

Description

CIBlockResult
CIBlockElement::GetList(
 array arOrder = Array("SORT"=>"ASC"),
 array arFilter = Array(),
 mixed arGroupBy = false,
 mixed arNavStartParams = false,
 array arSelectFields = Array()
);

Returns list of elements filtered by arFilter. Static method.


Important! Starting from Information blocks module version 18.6.200 the method has new options to handle products, with updated method keys. Correspondingly, all CATALOG_*** parameters have deprecated.


Attention: Starting from Information blocks module version 20.5.0, the method no longer processes the keys CHECK_BP_TASKS_PERMISSIONS and TASKSTATUS.

Note: Fields listed for sorting will be automatically added to the parameter arSelectFields or arGroupBy with specified grouping.

See Also

  • CDBResult
  • Information block types
  • Parameters

    Parameter DescriptionAvailable from version
    arOrder Array type: Array(by1=>order1[, by2=>order2 [, ..]]), where by - field for sorting. It can have the following values:
    • id - element ID. Can have the following values:
      • asc - by ascension;
      • desc - by descension;
      • array with IDs - in this case the elements will be printed in the order as listed in the array. (From version 18.6.700)

        Important! The same array must be passed to the filter (parameter arFilter).

    • sort - sort index;
    • timestamp_x - modification date;
    • name - name;
    • date_active_from - date an element is active from;
    • active_to or date_active_to - date an element is active till;
    • status - workflow status of an element;
    • code - element mnemonic code;
    • iblock_id - information block ID;
    • modified_by - ID of the last user who modified an element;
    • active - element is active;
    • show_counter - number of the element shows (counted by CounterInc);
    • show_counter_start - time of the first show (counted by CounterInc);
    • shows - average shows (shows / show duration);
    • rand - random order;
    • xml_id or external_id – the external ID;
    • tags – specifies the item tags;
    • created – by the creation time;
    • created_date – by the date the item was created (without time);
    • cnt – by the number of items (if using the grouping only);
    • property_<PROPERTY_CODE> - by value of the property identified by the PROPERTY_CODE symbolic or numeric code (e.g. PROPERTY_123 or PROPERTY_NEWS_SOURCE)
    • propertysort_<PROPERTY_CODE> - by the sort index of a property variant. This key is for the list properties only;
    • catalog_<CATALOG_FIELD>_<PRICE_TYPE> - by the field CATALOG_FIELD (can be PRICE, CURRENCY or PRICE_SCALE - price with currency factored in) of price of the type PRICE_TYPE (e.g. catalog_PRICE_1 or CATALOG_CURRENCY_3). Starting from Commercial catalog module version 16.0.3, the sorting by price will account the currency as well.
    • IBLOCK_SECTION_ID - section ID;
    • *CATALOG_QUANTITY - total product quantity;
    • *CATALOG_WEIGHT - product weight;
    • *CATALOG_AVAILABLE - product availability attribute (Y|N). Product is deemed as unavailable, if its quantity is lower or equals to zero, stock control is enabled and the option 'Make out-of-stock items available for purchase' is disabled.
    • *CATALOG_STORE_AMOUNT_<warehouse_identifier> - sorting by product quantity at the specific warehouse (available starting from Commercial catalog module version 15.5.5).
    • *CATALOG_BUNDLE - sorting by available set/bundle for a product (available starting from Commercial catalog module version 16.0.3).
    • PROPERTY_<PROPERTY_CODE>.<FIELD> - by value of element field indicated as binding attribute.
    • PROPERTY_<PROPERTY_CODE>.<FIELD> - by the value of an element binding field. FIELD can be one of the following:
      • ID
      • TIMESTAMP_X
      • MODIFIED_BY
      • CREATED
      • CREATED_DATE
      • CREATED_BY
      • IBLOCK_ID
      • ACTIVE
      • ACTIVE_TO
      • SORT
      • NAME
      • SHOW_COUNTER
      • SHOW_COUNTER_START
      • CODE
      • TAGS
      • XML_ID
      • STATUS
    • PROPERTY_<PROPERTY_CODE>.PROPERTY_<PROPERTY_CODE2> - by the value of an element binding property. PROPERTY_CODE is a mnemonic or symbolic code of a "link to element" property. PROPERTY_CODE2 is the property code of the bound elements.
    • HAS_PREVIEW_PICTURE and HAS_DETAIL_PICTURE – by the availability or absence of images.
    • order – by the element sort order:
      • asc - ascending;
      • nulls,asc - ascending, put empty values at the beginning;
      • asc,nulls - ascending, put empty values at the end;
      • desc - descending;
      • nulls,desc - descending, put empty values at the beginning;
      • desc,nulls - descending, put empty values at the end;
      This key is optional. The default value is Array("sort"=>"asc")

    Note 1: when you indicate the same symbolic code to different properties, but with different case, it results in an error when sorting by a property (for example, PROPERTY_rating) - listed elements will be duplicated, sorting won't happen.

    Note 2: indicated sorting fields are added to arGroupBy (if specified) and arSelectFields.
    arFilter An array of the format Array("filter field"=>"filter value" [, ...]) where the "filtering field" can be the following:
    • ID - by the identifier;
    • ACTIVE - by the active state (Y|N); passing an empty value ("ACTIVE"=>"") causes the method to return all elements disregarding their state;
    • NAME - by name;
    • CODE - by the mnemonic code;
    • TAGS – by tags;
    • XML_ID or EXTERNAL_ID - by the external ID;
    • PREVIEW_TEXT - by the brief text;
    • PREVIEW_TEXT_TYPE - by the brief text type (html|text);
    • PREVIEW_PICTURE - by the code of a preamble image;
    • DETAIL_TEXT - by the detailed text;
    • DETAIL_TEXT_TYPE - by the detailed text type (html|text);
    • DETAIL_PICTURE - by the code of a large image;
    • CHECK_PERMISSIONS - if "Y", the selection will respect the permissions to access the information blocks. By default, the permissions are not checked.
    • MIN_PERMISSION - minimum allowed access permission. Effective if only CHECK_PERMISSIONS is "Y". Default is "R". For the full list of access permissions, see CIBlock::SetPermission.
    • SEARCHABLE_CONTENT - by the all available searchable content. Includes title, brief and detailed description text;
    • SORT - by the sort weight;
    • TIMESTAMP_X - by modification date;
    • DATE_MODIFY_FROM – by the date/time the required elements was modified. Use this key to fetch elements modified after the time specified here in the website format. A NOT operator is possible: "!DATE_MODIFY_FROM";
    • DATE_MODIFY_TO - by the date/time the required elements was modified. Use this key to fetch elements modified prior the time specified here in the website format. A NOT operator is possible: "!DATE_MODIFY_TO";
    • MODIFIED_USER_ID or MODIFIED_BY- by the code of a user who modified an element;
    • DATE_CREATE - by creation date;
    • CREATED_USER_ID or CREATED_BY - by the code of a user who created an element;
    • DATE_ACTIVE_FROM - by the date an element is active from. The date must be in the website format;
    • DATE_ACTIVE_TO - by the date until which an element is active. The date must be in the website format;
    • ACTIVE_DATE - a non-empty value enables sorting by fields DATE_ACTIVE_FROM and DATE_ACTIVE_TO. If the value is empty (""), no filtering is performed;
    • IBLOCK_ID - by the information block ID;
    • IBLOCK_CODE - by the information block mnemonic code;
    • IBLOCK_SITE_ID or IBLOCK_LID or SITE_ID or LID - by site;
    • IBLOCK_TYPE - by the information block type;
    • IBLOCK_ACTIVE - by the information block active state (Y|N);
    • SECTION_ID - by the parent section. If the SECTION_ID key is false, an empty string "" or zero (0), only the orphan elements without parent sections will be returned. Otherwise, the method returns the elements of the specified section ID. The SECTION_ID key may be an array, in which case the method will return elements of at least one of the specified sections. A NOT operator ("!") is possible, which negates the condition;
    • SECTION_CODE – by the parent group mnemonic code; similar to SECTION_ID;
    • INCLUDE_SUBSECTIONS - if the SECTION_ID is specified, selects elements of all child sections of this section;
    • SUBSECTION - specifies to return only the elements belonging to a specified subsection. The key value may be a two-element array specifying the left and right boundaries in the subsection tree. A NOT operator ("!") is possible, which negates the condition;
    • SECTION_ACTIVE – if "Y", returns only elements of active sections. If "N", returns only elements of inactive sections.
    • SECTION_GLOBAL_ACTIVE – similar to SECTION_ACTIVE but also checks if the parent sections are active;
    • SECTION_SCOPE - задает уточнение для фильтров SECTION_ACTIVE и SECTION_GLOBAL_ACTIVE. Если значение "IBLOCK", то учитываются только привязки к разделам инфоблока. Если значение "PROPERTY", то учитываются только привязки к разделам свойств. "PROPERTY_" - привязки к разделам конкретного свойства.
    • *CATALOG_AVAILABLE - product availability attribute (Y|N). Product is deemed as unavailable, if its quantity is lower or equals to zero, stock control is enabled and the option 'Make out-of-stock items available for purchase' is disabled;
    • *CATALOG_CATALOG_GROUP_ID_N - by price type;
    • *CATALOG_SHOP_QUANTITY_N - filtering by quantity range in price;
    • *CATALOG_QUANTITY - by total product quantity;
    • *CATALOG_WEIGHT - by product weight;
    • *CATALOG_STORE_AMOUNT<warehouse_identifier> - sorting by product quantity at the specific warehouse (available starting from Commercial catalog module version 15.0.2). Filter receives the product quantity available at the warehouse or false.
    • *CATALOG_PRICE_SCALE_<price_type> - filtering by price with account of currency (available starting from Commercial catalog module version 16.0.3).
    • *CATALOG_BUNDLE - filtering sorting by available set/bundle for a product (available starting from Commercial catalog module version 16.0.3).
    • SUBQUERY - array
      $filter = array("SUBQUERY" => array(
           "FIELD" => "field name",
          "FILTER" => array(filter for selecting queries)
      ))
      with two parameters:
      • FIELD - [link=128069]string[/link], field name
      • FILTER - array, filter for filtering queries.
      Inside GetList converts to:
      ID => CIBlockElement::SubQuery($filter['SUBQUERY']['FIELD'], $filter['SUBQUERY']['FILTER'])
      Available starting from iblock module version 21.300.0.
    • SHOW_COUNTER - by number of shows;
    • SHOW_COUNTER_START - by the time of the first show;
    • WF_COMMENTS - by the workflow comment;
    • WF_STATUS_ID or WF_STATUS - by the workflow status;
    • SHOW_HISTORY - if set to "Y", result will include history of elements. By default, only the published elements are selected;
    • SHOW_NEW - if the SHOW_HISTORY is not set or not "Y" and SHOW_NEW is set to "Y", unpublished elements are also selected;
    • WF_PARENT_ELEMENT_ID - by the code of the parent element in the workflow (for revision history);
    • WF_NEW - by the unpublished state of an element (Y/N);
    • WF_LOCK_STATUS - by the lock state in the workflow (red|green|yellow);
    • PROPERTY_<PROPERTY_CODE> - specifies to filter by the property values. PROPERTY_CODE is the property or mnemonic code. This must be a number for list, number, bind to elements or bind to sections properties, or wildcard for other types;
    • PROPERTY_<PROPERTY_CODE>_VALUE – for the list type properties. Specifies to filter by the list values (wildcard); the method will search by a string text rather than an ID;
    • CATALOG_<CATALOG_FIELD>_<PRICE_TYPE> by the CATALOG_FIELD field of PRICE_TYPE price (the price type ID). CATALOG_FIELD may be: PRICE or CURRENCY.
    • PROPERTY_<PROPERTY_CODE>.<FIELD> - specifies to filter by the field values of the bound elements. PROPERTY_CODE – is the binding property ID or mnemonic code. FIELD is a field of a bound element, can be one of the following: ACTIVE, DETAIL_TEXT_TYPE, PREVIEW_TEXT_TYPE, EXTERNAL_ID, NAME, XML_ID, TMP_ID, DETAIL_TEXT, SEARCHABLE_CONTENT, PREVIEW_TEXT, CODE, TAGS, WF_COMMENTS, ID, SHOW_COUNTER, WF_PARENT_ELEMENT_ID, WF_STATUS_ID, SORT, CREATED_BY, PREVIEW_PICTURE, DETAIL_PICTURE, IBLOCK_ID, TIMESTAMP_X, DATE_CREATE, SHOW_COUNTER_START, DATE_ACTIVE_FROM, DATE_ACTIVE_TO, ACTIVE_DATE, DATE_MODIFY_FROM, DATE_MODIFY_TO, MODIFIED_USER_ID, MODIFIED_BY, CREATED_USER_ID, CREATED_BY.
    • PRODUCT_BARCODE - by barcode.
    • PRODUCT_BARCODE_STORE - by binding to barcode's warehouse.
    • PRODUCT_BARCODE_ORDER - by binding to barcode's order.
    The following modifiers are possible before the field name:
    • "!" - not equal;
    • "<" – less than;
    • "<=" - less than or equal;
    • ">" - more than;
    • ">=" - more than or equal;
    • "><" - the value of the key is an array specifying the range of possible values (see the Remarks below).
    The "filter values" are a single value or an array.

    This parameter is optional. No filtering is performed by default.

    Note 1: (for filter setup for "Date/Time" property type): Date/Time property type is stored as string with date with format YYYY-MM-DD HH:MI:SS. Accordingly, sorting by the value of such property will operate correctly, but the value for filtering is generated approximately as follows: $cat_filter[">"."PROPERTY_available"] = date("Y-m-d");

    Note 2: when using "><" filter verification type for integers, ending at zero, you need to use the number field type or separator character "," for decimal values (for example, 20000,00). Otherwise, operates incorrectly.
    arGroupBy If this parameter is not false, the returned items are grouped accordingly and the result array includes a CNT key returning the number of grouped elements; the arSelectFields is ignored. If the arGroupBy is an empty array, the method returns the number of elements in the CNT key.

    The grouping can be performed by the property values instead of the element fields. To do so, specify PROPERTY_<PROPERTY_CODE> as one of the grouping fields, the PROPERTY_CODE being a property or mnemonic code.

    Optional. The returned items are not grouped by default (false).
    arNavStartParams These parameters are used to implement breadcrumbs. This is achieved by passing an array of pairs "parameter=>value" with the following parameters:
    • nTopCount - number of upper elements. Если задать nTopCount и хранить свойства в общей таблице, то этот параметр ограничивает именно количество запросов. Если есть множественные свойства, то это будет отдельный запрос. То есть чтобы сделать запрос к 2 элементам со множественным свойством из 2 и 3 значений, то nTopCount должен быть равен 5. Решение проблемы: переместить свойства в отдельную таблицу. ;
    • nOffset - offset. Key operates only when passing non-empty value to the key nTopCount. Available from the iblock module version 21.700.100;
    • bShowAll - directs to retrieve all elements.
    • iNumPage - number of page;
    • nPageSize - the desired number of elements per page;
    • nElementID – the ID of an element that will be returned along with its neighbors. The number of neighbors is defined by the nPageSize key. Example: if nPageSize is 2, the maximum of 5 elements will be returned. The neighbors returned are defined by the arOrder parameter (see earlier). The following restrictions and rules apply when using the nElementID key:
      • If an element with such ID is missing from the returned data, the result is undefined.
      • The nElementID key cannot be used with the arGroupBy parameter.
      • The arSelect parameter must define an "ID" key.
      • The arOrder parameter is required.
      • The returned elements cannot be sorted by "catalog_*".
      • The returned array includes a RANK key containing the position of an element in the full selection (i.e. the one unrestricted by nElementID).
    This parameter is optional.

    The default value is false which specifies to return a full selection. If arNavStartParams is an empty array, the default limit of 10 elements takes effect.
    arSelectFields Array with returned element fields.
    Attention! The parameter uses fields, but not arrays. This way, an attempt to fetch by IBLOCK_SECTION (Array with group identifiers, including this element) results in disrupted method performance.

    List of element fields can show the values of its properties. You must use the fields IBLOCK_ID and ID, otherwise it will operate incorrectly. Additionally, you need to indicate PROPERTY_<PROPERTY_CODE>, as one of fields, where PROPERTY_CODE - ID or symbolic code (specified in upper case, even if it's specified in lower case in the defined iblock property).

    The result will print element properties as fields PROPERTY_<PROPERTY_CODE>_VALUE - value; PROPERTY_<PROPERTY_CODE>_ID - element code; PROPERTY_<PROPERTY_CODE>_ENUM_ID - value code (for list properties).

    You can show element prices as well with the installed Commercial catalog module. You must indicate *CATALOG_GROUP_<PRICE_CODE>, where PRICE_CODE - price type ID.

    Also, you can retrieve element fields by "Bind to elements" property values. You must indicate  PROPERTY_<PROPERTY_CODE>.<FIELD>, where PROPERTY_CODE - ID or binding property symbolic code, and FIELD - is the field of element specified in the binding. See "Bind element fields for sorting".

    You can also fetch element property values by "Bind to element" property values. You must indicate  PROPERTY_<PROPERTY_CODE>.PROPERTY_<PROPERTY_CODE2>, where PROPERTY_CODE - ID or binding property code, and PROPERTY_CODE2 - element property specified in the binding.

    By default, all the element fields are retrieved. Parameter values are ignored when using the grouping parameter arGroupBy.
    Note 1: If a multiple property is specified in this parameter, the method will return multiple records for elements that contain more than one values of such property. To fix this problem, the information blocks may be set to store properties in individual tables. In this case, the method will return multiple values as an array. Another approach is to retrieve the properties by calling _CIBElement::GetProperties() on each iteration instead of using the arSelectFields.

    Note 2: If this parameter specifies DETAIL_PAGE_URL, SECTION_PAGE_URL or LIST_PAGE_URL, the fields required to resolve the URL templates will be determined automatically unless grouping is in effect.

    Note 3: To retrieve rating data for the selected elements, use the following keys in this parameter: RATING_TOTAL_VALUE, RATING_TOTAL_VOTES, RATING_TOTAL_POSITIVE_VOTES, RATING_TOTAL_NEGATIVE_VOTES, RATING_USER_VOTE_VALUE.
    * - Parameters type CATALOG_*** have deprecated since Iblocks module version 18.6.200.
    ** - In case the parameters arGroupBy passes an empty array - the parameter arNavStartParams data is ignored.

    Useful filters

    • $arFilter = array("PROPERTY_CML2_SCAN_CODE") =>"" : returns all elements;
    • $arFilter = array("PROPERTY_CML2_SCAN_CODE") =>false : returns all elements with empty values;
    • $arFilter = array("PROPERTY_CML2_SCAN_CODE") =>"abc" : returns all elements whose scan code maches "abc" exactly;
    • $arFilter = array("?PROPERTY_CML2_SCAN_CODE") =>"def" : returns all elements whose scan code contains the substring "def".
    • $arFilter = array("!PROPERTY_CML2_SCAN_CODE") =>"" : returns all elements whose CML2_SCAN_CODE property is not empty;
    • $arFilter = array("!PROPERTY_CML2_SCAN_CODE") =>false : returns only the elements with non-empty property values;
    • $arFilter = array("!PROPERTY_CML2_SCAN_CODE") =>"abc" : returns all elements whose CML2_SCAN_CODE property value is not "abc";
    • $arFilter = array("!?PROPERTY_CML2_SCAN_CODE") =>"def" : returns all elements whose CML2_SCAN_CODE property value does not include a "def" substring.

    Using complex logic in filters

    The arFilter parameter may specify nested filters in the form of an array. The nested filter array contains entries whose key is an ordinal number, and the values are the filter conditions (which can be anything including arrays).

    Theoretically, there is no restriction on the level of filter nesting.

    The filter condition may be set to use conjunction or disjunctions logic. That is, "AND" or "OR". "AND" specifies that all of the filter conditions must be true to pass; "OR" – one of the filter conditions must be true. To specify the logic operator, use the LOGIC key.

    Example

    The following code selects little ripe oranges and big unripe ones:

    $arFilter = array(
    "IBLOCK_ID" => $IBLOCK_ID,
    "SECTION_CODE" => "orange",
    "INCLUDE_SUBSECTIONS" => "Y",
    array(
    "LOGIC" => "OR",
    array("<PROPERTY_RADIUS" => 50, "=PROPERTY_CONDITION" => "Y"),
    array(">=PROPERTY_RADIUS" => 50, "!=PROPERTY_CONDITION" => "Y"),
    ),
    );

    Fields of bound elements

    • ID - the element ID;
    • TIMESTAMP_X – the date and time an element was last modified, in the current website format;
    • MODIFIED_BY – the ID of a user who was the last to modify an element;
    • DATE_CREATE – the date and time an element was created;
    • CREATED_BY - the ID of a user who created an element;
    • IBLOCK_ID - the information block ID;
    • ACTIVE - the element active status (Y|N);
    • SORT - the sort order;
    • NAME - the element name;
    • PREVIEW_PICTURE - the thumbnail image ID;
    • PREVIEW_TEXT - the short text;
    • PREVIEW_TEXT_TYPE - type of the short text (html|text);
    • DETAIL_PICTURE - the large image ID;
    • DETAIL_TEXT – the detailed text;
    • DETAIL_TEXT_TYPE - type of the detailed text (html|text);
    • SHOW_COUNTER – the value of the impression counter;
    • SHOW_COUNTER_START – the date and time of the very first impression, in the website format;
    • CODE – the element symbolic code;
    • TAGS – the element tags;
    • XML_ID – the external ID;
    • IBLOCK_SECTION_ID – the ID of the element’s parent section (if present).
    The following fields describe an information block.
    • IBLOCK_TYPE_ID – the information block type ID;
    • IBLOCK_CODE – the information block symbolic code;
    • IBLOCK_NAME – the information block name;
    • IBLOCK_EXTERNAL_ID – the information block external ID;
    • DETAIL_PAGE_URL – the element page URL template as specified in the information block parameters;
    • LIST_PAGE_URL – the elements list page URL template as specified in the information block parameters.

    Examples


    Example 1:

    <?
    $arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM");
    $arFilter = Array("IBLOCK_ID"=>IntVal($yvalue), "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
    $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
    while($ob = $res->GetNextElement())
    {
     $arFields = $ob->GetFields();
     print_r($arFields);
    }
    ?> 

    Example can be updated by adding property display for each item. It's convenient for use, without the need to implement GetProperty. In case of Iblocks 2.0, you need to add IBLOCK_ID to $arSelect.

    <?
    $arSelect = Array("ID", "IBLOCK_ID", "NAME", "DATE_ACTIVE_FROM","PROPERTY_*");//IBLOCK_ID and ID must be specified, see description of arSelectFields above
    $arFilter = Array("IBLOCK_ID"=>IntVal($yvalue), "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
    $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
    while($ob = $res->GetNextElement()){ 
     $arFields = $ob->GetFields();  
    print_r($arFields);
     $arProps = $ob->GetProperties();
    print_r($arProps);
    }
    ?>
    

    Example 2:

    <?
    // selection of active items from $yvalue iblock, 
    // with property value set with SRC character code
    // and activity start date older than 1 January 2003
    // selected items can be grouped by activity date
    $arFilter = Array(
     "IBLOCK_ID"=>IntVal($yvalue), 
     ">DATE_ACTIVE_FROM"=>date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT")), mktime(0,0,0,1,1,2003)), 
     "ACTIVE"=>"Y", 
     "!PROPERTY_SRC"=>false
     );
    $res = CIBlockElement::GetList(Array("SORT"=>"ASC", "PROPERTY_PRIORITY"=>"ASC"), $arFilter, Array("DATE_ACTIVE_FROM"));
    while($ar_fields = $res->GetNext())
    {
     echo $ar_fields["DATE_ACTIVE_FROM"].": ".$ar_fields["CNT"]."<br>";
    }
    ?> 

    Example 3:

    //displaying archive from expired items (news.list) 
    $arFilter = array(
       "IBLOCK_ID" => $arResult["ID"],
       "IBLOCK_LID" => SITE_ID,
       "ACTIVE" => "Y",
       "CHECK_PERMISSIONS" => "Y", //singificantly overloads the system, but verifies access permissions
       " DateFormatToPHP(CLang::GetDateFormat("SHORT")), ); 

    Example 4:

    //selection of iblock items, to have 5 random items in the returned result
    $rs = CIBlockElement::GetList (
       Array("RAND" => "ASC"),
       Array("IBLOCK_ID" => $IBLOCK_ID),
       false,
       Array ("nTopCount" => 5)
    );
    

    Example 5:

    //use subqueries for filtering by several values of multiple property 
    CModule::IncludeModule('iblock');
    
    $rs = CIBlockElement::GetList(
       array(), 
       array(
       "IBLOCK_ID" => 21, 
       array("ID" => CIBlockElement::SubQuery("ID", array("IBLOCK_ID" => 21, "PROPERTY_PKE" => 7405))),
       array("ID" => CIBlockElement::SubQuery("ID", array("IBLOCK_ID" => 21, "PROPERTY_PKE" => 7410))),
       array("ID" => CIBlockElement::SubQuery("ID", array("IBLOCK_ID" => 21, "PROPERTY_PKE" => 7417)))
       ),
       false, 
       false,
       array("ID")
    );
    
    while($ar = $rs->GetNext()) {
        echo '<pre>';
        print_r($ar);
        echo '</pre>';
    }
    

    Example 6:

    //next and previous product with account of sorting and in detail view
     $arrSortAlown = array('price'=> 'catalog_PRICE_1' , 'name'=> 'NAME', 'rating' => 'PROPERTY_RATING' , 'artnumber'=> 'PROPERTY_ARTNUMBER');
    
       $_sort = isset($arrSortAlown[$_GET['sort']]) ? $arrSortAlown[$_GET['sort']] : 'NAME';
       $_order = isset($_GET['order']) && $_GET['order']=='desc' ? 'DESC' : 'ASC';
    
       $sort_url = 'sort=' .( isset($_GET['sort'])? $_GET['sort'] : 'name')
                            .'&order='. (isset($_GET['order'])? $_GET['order'] : 'asc');
       
       
       $res = CIBlockElement::GetList(
          array("$_sort" => $_order),
          Array(
             "IBLOCK_ID"=>$arResult["IBLOCK_ID"], 
             "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y" , 
             "IBLOCK_SECTION_ID" => 
             $arResult["IBLOCK_SECTION_ID"]
          ),
          false, 
          array("nPageSize" => "1","nElementID" => $arResult["ID"]), 
          array_merge(Array("ID", "NAME","DETAIL_PAGE_URL"), array_values($arrSortAlown)) 
       );
       $navElement = array();
       while($ob = $res->GetNext()){
         $navElement[] = $ob;
       }
    
    //printed:
    <noindex>
    <div class="navElement" style="float:right; clear:both;">
       <span class="l">
          <small><a href="<?=$navElement[0]['DETAIL_PAGE_URL']?>?<?=$sort_url?>">Previous product</a></small>
       </span>  
       <span class="r">
          <small><a href="<?=$navElement[2]['DETAIL_PAGE_URL']?>?<?=$sort_url?>">Next product</a></small>
       </span>
    </div>
    </noindex>
    

    Example 7:

    //prints undue and thus inactive event notices without component updates
    // indicate filter name in the component and add filter itself in front of component:
    <?
        $arrFilter=Array(array(
            "LOGIC" => "OR",
            array("DATE_ACTIVE_TO"=>false),
            array(">DATE_ACTIVE_TO"=>ConvertTimeStamp(time(),"FULL"))
            
        ));
      ?>  
    

    Example 8:

    //Iblock v18.6.700 now has option to sort the selected ID order, specified in the array
    
    // sort IDs as follows
    $ids = [115, 120, 117, 109, 128];
    $rs = CIBlockElement::GetList(
       ['ID' => $ids],
       ['IBLOCK_ID' => '5', 'ID' => $ids],
       false, false,
       ['ID', 'IBLOCK_ID', 'NAME']
    );
    while ($ar = $rs->Fetch()) {
       echo $ar['ID'] . ' ';
    }
    
    // printed result:
    // 115 120 117 109 128
    

    Example 9:

    //Iblock v21.700.100 now has an added nOffset key in arNavStartParams
    
    \Bitrix\Main\Loader::includeModule('iblock');
    
    $res = CIBlockElement::GetList(
        ['ID' => 'ASC'],
        ['IBLOCK_ID' => 2],
        false,
        ['nTopCount' => 5, 'nOffset' => 1000],
        ['ID', 'IBLOCK_ID', 'NAME']
    );
    
    while ($row = $res->Fetch())
    {
        echo '<pre>', mydump($row), '</pre>';
    }
    
    // nTopCount - amount
    // nOffset - indicated offset
    

    Example 10. Print elements with non-empty value of list multiple property

    ${$FILTER_NAME}[]=array(
                            "ID" => CIBlockElement::SubQuery("ID", array(
                                    "IBLOCK_ID" => $arParams['IBLOCK_ID'],
                                    "!=PROPERTY_".$arProp["CODE"] => false
                                ))
                        );

    Example 11. Creating search by catalog using the field SEARCHEBLE_CONTENT.

    <?
    CModule::IncludeModule('iblock'); 
    $IBLOCK_ID = intval($_REQUEST['IBLOCK_ID']); 
    $QUERY = trim($_REQUEST['q']); 
    if($QUERY) { 
       $arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM", "DETAIL_PAGE_URL", "PREVIEW_PICTURE";  
       $arFilter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", "SEARCHABLE_CONTENT"=>'%'.$_REQUEST['q'].'%');  
       $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);  
       while($ob = $res->GetNextElement())  
       {  
              $arFields = $ob->GetFields();  
          print_r($arFields);    
       }     
    }
    ?>

    Example 12. For filtering by Date, i. e. from 12.09.2014 to 18.09.2014 inclusively, the filter will look as follows:

    $date_from = '12.09.2014';
    $date_to = '18.09.2014';
    
    $db_el = CIBlockElement::GetList(
       array('ID' => 'DESC'),
       array(
          '>=DATE_CREATE' => $date_from,
          '<=DATE_CREATE' => $date_to . ' 23:59:59'      
       )
    );

    © «Bitrix24», 2001-2024
    Up