当前位置: 首页>>代码示例>>PHP>>正文


PHP CIBlockParameters::GetSectionSortFields方法代码示例

本文整理汇总了PHP中CIBlockParameters::GetSectionSortFields方法的典型用法代码示例。如果您正苦于以下问题:PHP CIBlockParameters::GetSectionSortFields方法的具体用法?PHP CIBlockParameters::GetSectionSortFields怎么用?PHP CIBlockParameters::GetSectionSortFields使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CIBlockParameters的用法示例。


在下文中一共展示了CIBlockParameters::GetSectionSortFields方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: GetMessage

			array()
		),
		"SECTION_USER_FIELDS" =>array(
			"PARENT" => "DATA_SOURCE",
			"NAME" => GetMessage("CP_BCST_SECTION_USER_FIELDS"),
			"TYPE" => "LIST",
			"MULTIPLE" => "Y",
			"ADDITIONAL_VALUES" => "Y",
			"VALUES" => $arProperty_UF,
		),
		"SECTION_SORT_FIELD" => array(
			"PARENT" => "DATA_SOURCE",
			"NAME" => GetMessage("IBLOCK_SECTION_SORT_FIELD"),
			"TYPE" => "LIST",
			"VALUES" => CIBlockParameters::GetSectionSortFields(
				array('SORT', 'TIMESTAMP_X', 'NAME', 'ID', 'DEPTH_LEVEL'),
				array('KEY_LOWERCASE' => 'Y')
			),
			"ADDITIONAL_VALUES" => "Y",
			"DEFAULT" => "sort",
		),
		"SECTION_SORT_ORDER" => array(
			"PARENT" => "DATA_SOURCE",
			"NAME" => GetMessage("IBLOCK_SECTION_SORT_ORDER"),
			"TYPE" => "LIST",
			"VALUES" => $arAscDesc,
			"ADDITIONAL_VALUES" => "Y",
			"DEFAULT" => "asc",
		),
		"ELEMENT_SORT_FIELD" => array(
			"PARENT" => "DATA_SOURCE",
			"NAME" => GetMessage("IBLOCK_ELEMENT_SORT_FIELD"),
开发者ID:ASDAFF,项目名称:bitrix-5,代码行数:32,代码来源:.parameters.php

示例2: array

$arPrice = array();
if ($boolCatalog) {
    $arSort = array_merge($arSort, CCatalogIBlockParameters::GetCatalogSortFields());
    $rsPrice = CCatalogGroup::GetList($v1 = "sort", $v2 = "asc");
    while ($arr = $rsPrice->Fetch()) {
        $arPrice[$arr["NAME"]] = "[" . $arr["NAME"] . "] " . $arr["NAME_LANG"];
    }
} else {
    $arPrice = $arProperty_N;
}
$arAscDesc = array("asc" => GetMessage("IBLOCK_SORT_ASC"), "desc" => GetMessage("IBLOCK_SORT_DESC"));
$arProperty_UF = array();
$arUserFields = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("IBLOCK_" . $arCurrentValues["IBLOCK_ID"] . "_SECTION");
foreach ($arUserFields as $FIELD_NAME => $arUserField) {
    $arProperty_UF[$FIELD_NAME] = $arUserField["LIST_COLUMN_LABEL"] ? $arUserField["LIST_COLUMN_LABEL"] : $FIELD_NAME;
}
$arComponentParameters = array("GROUPS" => array("PRICES" => array("NAME" => GetMessage("IBLOCK_PRICES"))), "PARAMETERS" => array("IBLOCK_TYPE" => array("PARENT" => "BASE", "NAME" => GetMessage("IBLOCK_TYPE"), "TYPE" => "LIST", "VALUES" => $arIBlockType, "REFRESH" => "Y"), "IBLOCK_ID" => array("PARENT" => "BASE", "NAME" => GetMessage("IBLOCK_IBLOCK"), "TYPE" => "LIST", "ADDITIONAL_VALUES" => "Y", "VALUES" => $arIBlock, "REFRESH" => "Y"), "SECTION_FIELDS" => CIBlockParameters::GetSectionFieldCode(GetMessage("CP_BCST_SECTION_FIELDS"), "DATA_SOURCE", array()), "SECTION_USER_FIELDS" => array("PARENT" => "DATA_SOURCE", "NAME" => GetMessage("CP_BCST_SECTION_USER_FIELDS"), "TYPE" => "LIST", "MULTIPLE" => "Y", "ADDITIONAL_VALUES" => "Y", "VALUES" => $arProperty_UF), "SECTION_SORT_FIELD" => array("PARENT" => "DATA_SOURCE", "NAME" => GetMessage("IBLOCK_SECTION_SORT_FIELD"), "TYPE" => "LIST", "VALUES" => CIBlockParameters::GetSectionSortFields(array('SORT', 'TIMESTAMP_X', 'NAME', 'ID', 'DEPTH_LEVEL'), array('KEY_LOWERCASE' => 'Y')), "ADDITIONAL_VALUES" => "Y", "DEFAULT" => "sort"), "SECTION_SORT_ORDER" => array("PARENT" => "DATA_SOURCE", "NAME" => GetMessage("IBLOCK_SECTION_SORT_ORDER"), "TYPE" => "LIST", "VALUES" => $arAscDesc, "ADDITIONAL_VALUES" => "Y", "DEFAULT" => "asc"), "ELEMENT_SORT_FIELD" => array("PARENT" => "DATA_SOURCE", "NAME" => GetMessage("IBLOCK_ELEMENT_SORT_FIELD"), "TYPE" => "LIST", "VALUES" => $arSort, "ADDITIONAL_VALUES" => "Y", "DEFAULT" => "sort"), "ELEMENT_SORT_ORDER" => array("PARENT" => "DATA_SOURCE", "NAME" => GetMessage("IBLOCK_ELEMENT_SORT_ORDER"), "TYPE" => "LIST", "VALUES" => $arAscDesc, "DEFAULT" => "asc", "ADDITIONAL_VALUES" => "Y"), "ELEMENT_SORT_FIELD2" => array("PARENT" => "DATA_SOURCE", "NAME" => GetMessage("IBLOCK_ELEMENT_SORT_FIELD2"), "TYPE" => "LIST", "VALUES" => $arSort, "ADDITIONAL_VALUES" => "Y", "DEFAULT" => "id"), "ELEMENT_SORT_ORDER2" => array("PARENT" => "DATA_SOURCE", "NAME" => GetMessage("IBLOCK_ELEMENT_SORT_ORDER2"), "TYPE" => "LIST", "VALUES" => $arAscDesc, "DEFAULT" => "desc", "ADDITIONAL_VALUES" => "Y"), "FILTER_NAME" => array("PARENT" => "DATA_SOURCE", "NAME" => GetMessage("IBLOCK_FILTER_NAME_IN"), "TYPE" => "STRING", "DEFAULT" => "arrFilter"), "SECTION_URL" => CIBlockParameters::GetPathTemplateParam("SECTION", "SECTION_URL", GetMessage("IBLOCK_SECTION_URL"), "", "URL_TEMPLATES"), "DETAIL_URL" => CIBlockParameters::GetPathTemplateParam("DETAIL", "DETAIL_URL", GetMessage("IBLOCK_DETAIL_URL"), "", "URL_TEMPLATES"), "BASKET_URL" => array("PARENT" => "URL_TEMPLATES", "NAME" => GetMessage("IBLOCK_BASKET_URL"), "TYPE" => "STRING", "DEFAULT" => "/personal/basket.php"), "ACTION_VARIABLE" => array("PARENT" => "URL_TEMPLATES", "NAME" => GetMessage("IBLOCK_ACTION_VARIABLE"), "TYPE" => "STRING", "DEFAULT" => "action"), "PRODUCT_ID_VARIABLE" => array("PARENT" => "URL_TEMPLATES", "NAME" => GetMessage("IBLOCK_PRODUCT_ID_VARIABLE"), "TYPE" => "STRING", "DEFAULT" => "id"), "PRODUCT_QUANTITY_VARIABLE" => array("PARENT" => "URL_TEMPLATES", "NAME" => GetMessage("CP_BCST_PRODUCT_QUANTITY_VARIABLE"), "TYPE" => "STRING", "DEFAULT" => "quantity"), "PRODUCT_PROPS_VARIABLE" => array("PARENT" => "URL_TEMPLATES", "NAME" => GetMessage("CP_BCST_PRODUCT_PROPS_VARIABLE"), "TYPE" => "STRING", "DEFAULT" => "prop"), "SECTION_ID_VARIABLE" => array("PARENT" => "URL_TEMPLATES", "NAME" => GetMessage("IBLOCK_SECTION_ID_VARIABLE"), "TYPE" => "STRING", "DEFAULT" => "SECTION_ID"), "DISPLAY_COMPARE" => array("PARENT" => "ADDITIONAL_SETTINGS", "NAME" => GetMessage("T_IBLOCK_DESC_DISPLAY_COMPARE"), "TYPE" => "CHECKBOX", "DEFAULT" => "N"), "USE_MAIN_ELEMENT_SECTION" => array("PARENT" => "ADDITIONAL_SETTINGS", "NAME" => GetMessage("CP_BCST_USE_MAIN_ELEMENT_SECTION"), "TYPE" => "CHECKBOX", "DEFAULT" => "N"), "SECTION_COUNT" => array("PARENT" => "VISUAL", "NAME" => GetMessage("IBLOCK_SECTION_COUNT"), "TYPE" => "STRING", "DEFAULT" => "20"), "ELEMENT_COUNT" => array("PARENT" => "VISUAL", "NAME" => GetMessage("IBLOCK_ELEMENT_COUNT"), "TYPE" => "STRING", "DEFAULT" => "9"), "LINE_ELEMENT_COUNT" => array("PARENT" => "VISUAL", "NAME" => GetMessage("IBLOCK_LINE_ELEMENT_COUNT"), "TYPE" => "STRING", "DEFAULT" => "3"), "PROPERTY_CODE" => array("PARENT" => "VISUAL", "NAME" => GetMessage("IBLOCK_PROPERTY"), "TYPE" => "LIST", "MULTIPLE" => "Y", "VALUES" => $arProperty_LNS, "ADDITIONAL_VALUES" => "Y"), "PRICE_CODE" => array("PARENT" => "PRICES", "NAME" => GetMessage("IBLOCK_PRICE_CODE"), "TYPE" => "LIST", "MULTIPLE" => "Y", "VALUES" => $arPrice), "USE_PRICE_COUNT" => array("PARENT" => "PRICES", "NAME" => GetMessage("IBLOCK_USE_PRICE_COUNT"), "TYPE" => "CHECKBOX", "DEFAULT" => "N"), "SHOW_PRICE_COUNT" => array("PARENT" => "PRICES", "NAME" => GetMessage("IBLOCK_SHOW_PRICE_COUNT"), "TYPE" => "STRING", "DEFAULT" => "1"), "PRICE_VAT_INCLUDE" => array("PARENT" => "PRICES", "NAME" => GetMessage("IBLOCK_VAT_INCLUDE"), "TYPE" => "CHECKBOX", "DEFAULT" => "Y"), "PRODUCT_PROPERTIES" => array("PARENT" => "PRICES", "NAME" => GetMessage("CP_BCST_PRODUCT_PROPERTIES"), "TYPE" => "LIST", "MULTIPLE" => "Y", "VALUES" => $arProperty_X), "USE_PRODUCT_QUANTITY" => array("PARENT" => "PRICES", "NAME" => GetMessage("CP_BCST_USE_PRODUCT_QUANTITY"), "TYPE" => "CHECKBOX", "DEFAULT" => "N", "REFRESH" => 'Y'), "CACHE_TIME" => array("DEFAULT" => 36000000), "CACHE_FILTER" => array("PARENT" => "CACHE_SETTINGS", "NAME" => GetMessage("IBLOCK_CACHE_FILTER"), "TYPE" => "CHECKBOX", "DEFAULT" => "N"), "CACHE_GROUPS" => array("PARENT" => "CACHE_SETTINGS", "NAME" => GetMessage("CP_BCST_CACHE_GROUPS"), "TYPE" => "CHECKBOX", "DEFAULT" => "Y")));
if ($boolCatalog) {
    $arComponentParameters["PARAMETERS"]['HIDE_NOT_AVAILABLE'] = array('PARENT' => 'DATA_SOURCE', 'NAME' => GetMessage('CP_BCST_HIDE_NOT_AVAILABLE'), 'TYPE' => 'CHECKBOX', 'DEFAULT' => 'N');
    if (CModule::IncludeModule('currency')) {
        $arComponentParameters["PARAMETERS"]['CONVERT_CURRENCY'] = array('PARENT' => 'PRICES', 'NAME' => GetMessage('CP_BCST_CONVERT_CURRENCY'), 'TYPE' => 'CHECKBOX', 'DEFAULT' => 'N', 'REFRESH' => 'Y');
        if (isset($arCurrentValues['CONVERT_CURRENCY']) && 'Y' == $arCurrentValues['CONVERT_CURRENCY']) {
            $arCurrencyList = array();
            $rsCurrencies = CCurrency::GetList($by = 'SORT', $order = 'ASC');
            while ($arCurrency = $rsCurrencies->Fetch()) {
                $arCurrencyList[$arCurrency['CURRENCY']] = $arCurrency['CURRENCY'];
            }
            $arComponentParameters['PARAMETERS']['CURRENCY_ID'] = array('PARENT' => 'PRICES', 'NAME' => GetMessage('CP_BCST_CURRENCY_ID'), 'TYPE' => 'LIST', 'VALUES' => $arCurrencyList, 'DEFAULT' => CCurrency::GetBaseCurrency(), "ADDITIONAL_VALUES" => "Y");
        }
    }
}
开发者ID:Satariall,项目名称:izurit,代码行数:31,代码来源:.parameters.php

示例3: while

    $rs = CUserTypeEntity::GetList([], $filter);
    while ($field = $rs->Fetch()) {
        $sectionProperties[$field['FIELD_NAME']] = $field['FIELD_NAME'];
    }
    //select element properties
    $filter = ['ACTIVE' => 'Y', 'IBLOCK_ID' => $currentIblockId];
    $rsProp = CIBlockProperty::GetList([], $filter);
    while ($item = $rsProp->Fetch()) {
        $elementProperties[$item['CODE']] = '[' . $item['CODE'] . '] ' . $item['NAME'];
    }
}
$arComponentParameters = array('GROUPS' => array('ELEMENTS_SORTING' => array('NAME' => 'Сортировка элементов', 'SORT' => 150), 'SECTION_SORTING' => array('NAME' => 'Сортировка разделов', 'SORT' => 160)), 'PARAMETERS' => array('IBLOCK_TYPE' => array('PARENT' => 'BASE', 'NAME' => 'Тип инфоблоков', 'TYPE' => 'LIST', 'VALUES' => $iblockTypes, 'REFRESH' => 'Y'), 'IBLOCK_CODE' => array('PARENT' => 'BASE', 'NAME' => 'Код инфоблока', 'TYPE' => 'LIST', 'VALUES' => $iblocks, 'REFRESH' => 'Y'), 'ELEMENTS_COUNT' => array('PARENT' => 'BASE', 'NAME' => 'Количество записей в списке', 'TYPE' => 'STRING', 'DEFAULT' => '20'), 'SELECT_SECTIONS' => array('PARENT' => 'BASE', 'NAME' => 'Запрашивать разделы инфоблока', 'TYPE' => 'CHECKBOX', 'DEFAULT' => 'N', 'REFRESH' => 'Y'), 'ELEMENT_SORT_BY1' => array('PARENT' => 'ELEMENTS_SORTING', 'NAME' => 'Поле для 1-ой сортировки', 'TYPE' => 'LIST', 'DEFAULT' => 'ACTIVE_FROM', 'VALUES' => CIBlockParameters::GetElementSortFields(), 'ADDITIONAL_VALUES' => 'Y'), 'ELEMENT_SORT_ORDER1' => array('PARENT' => 'ELEMENTS_SORTING', 'NAME' => 'Направление 1-ой сортировки', 'TYPE' => 'LIST', 'DEFAULT' => 'DESC', 'VALUES' => $arSorts, 'ADDITIONAL_VALUES' => 'Y'), 'ELEMENT_SORT_BY2' => array('PARENT' => 'ELEMENTS_SORTING', 'NAME' => 'Поле для 2-ой сортировки', 'TYPE' => 'LIST', 'DEFAULT' => 'SORT', 'VALUES' => CIBlockParameters::GetElementSortFields(), 'ADDITIONAL_VALUES' => 'Y'), 'ELEMENT_SORT_ORDER2' => array('PARENT' => 'ELEMENTS_SORTING', 'NAME' => 'Направление 2-ой сортировки', 'TYPE' => 'LIST', 'DEFAULT' => 'ASC', 'VALUES' => $arSorts, 'ADDITIONAL_VALUES' => 'Y'), 'ELEMENT_SORT_BY3' => array('PARENT' => 'ELEMENTS_SORTING', 'NAME' => 'Поле для 3-ей сортировки', 'TYPE' => 'LIST', 'DEFAULT' => 'SORT', 'VALUES' => CIBlockParameters::GetElementSortFields(), 'ADDITIONAL_VALUES' => 'Y'), 'ELEMENT_SORT_ORDER3' => array('PARENT' => 'ELEMENTS_SORTING', 'NAME' => 'Направление 3-ей сортировки', 'TYPE' => 'LIST', 'DEFAULT' => 'ASC', 'VALUES' => $arSorts, 'ADDITIONAL_VALUES' => 'Y'), 'ELEMENT_FIELDS' => array('PARENT' => 'DATA_SOURCE', 'NAME' => 'Поля элементов', 'TYPE' => 'LIST', 'MULTIPLE' => 'Y', 'SIZE' => 8, 'VALUES' => ['NAME' => 'Название', 'CODE' => 'Символьный код', 'DETAIL_PAGE_URL' => 'Ссылка на детальную страницу', 'ACTIVE_FROM' => 'Начало активности', 'ACTIVE_TO' => 'Окончание активности', 'PREVIEW_TEXT' => 'Описание для анонса', 'PREVIEW_PICTURE' => 'Картинка для анонса', 'DETAIL_TEXT' => 'Детальное описание', 'DETAIL_PICTURE' => 'Детальная картинка', 'IBLOCK_SECTION_ID' => 'ID раздела', 'TAGS' => 'Теги', 'SORT' => 'Индекс сортировки'], 'ADDITIONAL_VALUES' => 'Y'), 'ELEMENT_PROPERTIES' => array('PARENT' => 'DATA_SOURCE', 'NAME' => 'Свойства элементов', 'TYPE' => 'LIST', 'MULTIPLE' => 'Y', 'SIZE' => 8, 'VALUES' => $elementProperties, 'ADDITIONAL_VALUES' => 'Y'), 'FILTER_NAME' => array('PARENT' => 'ADDITIONAL_SETTINGS', 'NAME' => 'Название PHP-переменной фильтра элементов инфоблока', 'TYPE' => 'STRING', 'DEFAULT' => ''), 'SHOW_PANEL_BUTTONS' => array('PARENT' => 'ADDITIONAL_SETTINGS', 'NAME' => 'Выводить кнопки управления контентом в режиме редактирования в публичной части', 'TYPE' => 'CHECKBOX', 'DEFAULT' => 'Y'), 'CUSTOM_DATE_FORMAT' => array('PARENT' => 'ADDITIONAL_SETTINGS', 'NAME' => 'Особый формат даты', 'TYPE' => 'CHECKBOX', 'DEFAULT' => 'N', 'REFRESH' => 'Y'), 'CACHE_TIME' => array('DEFAULT' => 36000000), 'CACHE_GROUPS' => array('PARENT' => 'CACHE_SETTINGS', 'NAME' => 'Учитывать права доступа', 'TYPE' => 'CHECKBOX', 'DEFAULT' => 'Y')));
$arComponentParameters['PARAMETERS']['SELECT_BY_SECTION'] = array('PARENT' => 'BASE', 'NAME' => 'Выбирать элементы по разделу', 'TYPE' => 'LIST', 'VALUES' => ['NO' => 'нет', 'CODE' => 'по коду раздела', 'ID' => 'по id раздела'], 'DEFAULT' => 'NO', 'REFRESH' => 'Y');
if ($arCurrentValues['SELECT_BY_SECTION'] == 'ID') {
    $arComponentParameters['PARAMETERS']['SECTION_ID'] = array('PARENT' => 'BASE', 'NAME' => 'ID раздела', 'TYPE' => 'STRING', 'DEFAULT' => '');
} else {
    if ($arCurrentValues['SELECT_BY_SECTION'] == 'CODE') {
        $arComponentParameters['PARAMETERS']['SECTION_CODE'] = array('PARENT' => 'BASE', 'NAME' => 'Код раздела', 'TYPE' => 'STRING', 'DEFAULT' => '');
    }
}
if (in_array($arCurrentValues['SELECT_BY_SECTION'], ['ID', 'CODE'])) {
    $arComponentParameters['PARAMETERS']['INCLUDE_SUBSECTIONS'] = array('PARENT' => 'BASE', 'NAME' => 'Выбирать элементы из всех подразделов выбранного раздела', 'TYPE' => 'CHECKBOX', 'DEFAULT' => 'Y');
    $arComponentParameters['PARAMETERS']['SELECT_SECTIONS_TREE'] = array('PARENT' => 'BASE', 'NAME' => 'Выбирать всё дерево разделов выбранного раздела', 'TYPE' => 'CHECKBOX', 'DEFAULT' => 'N');
    CIBlockParameters::Add404Settings($arComponentParameters, $arCurrentValues);
}
if ($arCurrentValues['SELECT_SECTIONS'] == 'Y') {
    $arComponentParameters['PARAMETERS'] = array_merge($arComponentParameters['PARAMETERS'], array('SECTION_SORT_BY1' => array('PARENT' => 'SECTION_SORTING', 'NAME' => 'Поле для 1-ой сортировки', 'TYPE' => 'LIST', 'DEFAULT' => 'SORT', 'VALUES' => CIBlockParameters::GetSectionSortFields(), 'ADDITIONAL_VALUES' => 'Y'), 'SECTION_SORT_ORDER1' => array('PARENT' => 'SECTION_SORTING', 'NAME' => 'Направление 1-ой сортировки', 'TYPE' => 'LIST', 'DEFAULT' => 'DESC', 'VALUES' => $arSorts, 'ADDITIONAL_VALUES' => 'Y'), 'SECTION_SORT_BY2' => array('PARENT' => 'SECTION_SORTING', 'NAME' => 'Поле для 2-ой сортировки', 'TYPE' => 'LIST', 'DEFAULT' => 'ID', 'VALUES' => CIBlockParameters::GetSectionSortFields(), 'ADDITIONAL_VALUES' => 'Y'), 'SECTION_SORT_ORDER2' => array('PARENT' => 'SECTION_SORTING', 'NAME' => 'Направление 2-ой сортировки', 'TYPE' => 'LIST', 'DEFAULT' => 'ASC', 'VALUES' => $arSorts, 'ADDITIONAL_VALUES' => 'Y'), 'SECTION_FIELDS' => array('PARENT' => 'DATA_SOURCE', 'NAME' => 'Поля разделов', 'TYPE' => 'LIST', 'MULTIPLE' => 'Y', 'SIZE' => 3, 'VALUES' => ['NAME' => 'Название', 'CODE' => 'Символьный код', 'IBLOCK_SECTION_ID' => 'ID родительского раздела', 'DESCRIPTION' => 'Описание', 'PICTURE' => 'Изображение'], 'ADDITIONAL_VALUES' => 'Y'), 'SECTION_PROPERTIES' => array('PARENT' => 'DATA_SOURCE', 'NAME' => 'Свойства разделов', 'TYPE' => 'LIST', 'MULTIPLE' => 'Y', 'VALUES' => $sectionProperties, 'ADDITIONAL_VALUES' => 'Y')));
}
if ($arCurrentValues['CUSTOM_DATE_FORMAT'] == 'Y') {
    $arComponentParameters['PARAMETERS'] = array_merge($arComponentParameters['PARAMETERS'], array('ACTIVE_DATE_FORMAT' => CIBlockParameters::GetDateFormat('Формат показа даты', 'ADDITIONAL_SETTINGS')));
}
开发者ID:notagency,项目名称:notagency.base,代码行数:31,代码来源:.parameters.php


注:本文中的CIBlockParameters::GetSectionSortFields方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。