Всем привет. Господа, помогите. Мозг совсем отказался решать задачу.
В шаблоне компонента есть условие по которому выводится тот или иной тип цены. Цена на сайте переключается глобально, через смену параметра в куках. Проблема в том, что вывод кешируется и соответственно условие срабатывает только один раз. Отключение кеша для компонента конечно помогает, но это не выход.
Пните в нужную сторону. В result_modifier был - не помогает.
Разработка сайтов на 1С-Битрикс
ajax подгрузка каталога через catalog.section, проблема с умным фильтром
Тоже стлокнулись с этой задачей. Написали такую ф-цию, может кому понадобится. Прошу прощения за некропостинг Функция вполне универсальна. Поддерживает указание типа меню, работает с ext файлами меню. При необходимости может сделать Redirect на первый пункт меню.
Код
/**
* Проверяет есть ли меню, при необходимости может выполнить redirect на первый пункт меню.
* @param string $strSectionMenuType название типа меню.
* @param bool $useExtFiles учитывать файлы menu_ext.php.
* @param bool $redirectToFirst выполнять redirect на первый пункт меню, если открыт корень раздела.
* @return bool Возвращает false или количество элементов меню в разделе.
*/
function isSectionMenu( $strSectionMenuType = 'left', $useExtFiles = true, $redirectToFirst = false ){
global $APPLICATION;
$strSectionDir = ( isset( $_SERVER['REAL_FILE_PATH'] ) ) ? dirname( $_SERVER['REAL_FILE_PATH'] ) : dirname( $_SERVER['SCRIPT_NAME'] );
$arPath = explode( '/', $strSectionDir );
$arPath = array_diff( $arPath, array('') );
$rootPath = realpath( $_SERVER['DOCUMENT_ROOT'] );
$currentPath = '/';
$lastPath = '';
$arLastMenu = array();
foreach ($arPath as $key => $crumb) {
$currentPath .= $crumb . '/';
$menuFile = $rootPath . $currentPath . '.' . $strSectionMenuType . '.' . 'menu.php';
$extMenuFile = $rootPath . $currentPath . '.' . $strSectionMenuType . '.' . 'menu_ext.php';
if( file_exists( $menuFile ) ){
$lastPath = $currentPath;
if( $extMenuFile && file_exists( $extMenuFile ) ){
require( $extMenuFile );
};
require( $menuFile );
if( $aMenuLinksExt ){
$aMenuLinks = array_merge($aMenuLinksExt, $aMenuLinks);
};
$arLastMenu = $aMenuLinks;
};
};
$arURL = explode('?', $_SERVER['REQUEST_URI']);
if( $redirectToFirst && $lastPath == $arURL[0] && (int) count($arLastMenu) ){
$link = $arLastMenu[0][1];
if( strlen( trim( $link ) ) ){
LocalRedirect( $link );
};
};
return (int) count($arLastMenu);
};
Используется примерно так: <?if ( isSectionMenu('left', true, true) ): ?> ...Ваш код, если меню есть... <?else:?> ...Ваш код, если меню нет... <?endif;?>
Скринов не видно, но вангую, что Вы выставили компонент на страницу без обёртки, применив к содержимому например float. После включения режима правки, битрикс помещает содержимое шаблона компонента в div, у которого естественно нет включенного свойства float или заданных Вами размеров.
Решение: Вставьте компонент в свою обёртку, а уже для неё задавайте свойства позиционирования/размеры и т.д.
Здравствуйте, уважаемые коллеги. Подскажите пожалуйста, как Вы работаете с новым ядром D7? Понятно, что есть много примеров в интернете, но там описано не всё, а внятной документации по API от Битрикса мы походу не дождёмся. Вынужден пока, что работать со старым ядром по причине отсутствия внятной документации, но хотелось бы всё таки освоить D7.
В частности интересуют вопросы: 1)Где посмотреть список методов и их описание? 2)Список принимаемых параметров? 3)Если в качестве параметра передаётся массив, то допустимые ключи и типы данных? 4)Отладка?
Разработка сайтов на 1С-Битрикс
Привязка к Яндекс.Картам, поиск элементов в n радиусе, запрос, Необходимо к каждому элементу, у которого есть местоположение, вывести список ближайших в опредленном радиусе
Как минимум нужно было кешировать запрос через класс CPHPCache(). Но это пол беды. Основная проблема в том, что при большом количестве товаров, данное решение всё равно очень грузит сервер. Если у кого то есть более изящное решение, поделитесь. Просто товаров около 20 тысяч, хранятся по разным складам. Нужно выбирать товары для конкретного склада. Используя данное решение, получаем огромную портянку IDшников товаров. При запуске проекта в продакшн и запуске трафика на такой проект, 8-ми ядерный процесс процессор просто забивается наглухо... Как решить проблему, пока что ума не приложу.
Максим Каськов написал: Мои пять копеек. (Как я сделал на главной для catalog.section ссылки с применением SECTION_CODE_PATH и с минимальным количеством запросов к БД )
в result_modifier.php
//замена поля DETAIL_PAGE_URL из настроек инфоблока, т.к. в catalog.section не работает SECTION_CODE_PATH $arID = array(); foreach ($arResult['ITEMS'] as $arItem){ $arID[] = $arItem['ID']; }
Алексей Трофимов написал: Странно, в теоретической части я кажется ни разу не встречал, что простой компонент может использовать шаблон комплексного компонента, зарытого в такие глубины... Полдня сегодня потратил, чтобы докопаться до этого.
Если Вам проект достался от кого то, то возможно и не такое.
Разработка сайтов на 1С-Битрикс
Проблема сохранения пользовательского свойства типа список
Алексей Трофимов написал: На странице сайта подключаю стандартный компонент bitrix.news, в шаблон сайта кладу копию шаблона компонента и модифицирую его, но изменений не происходит (даже при сбросе кэша). Делаю модификации в родных шаблонах компонента - изменений нет. Подозреваю, что грузится какой-то иной шаблон, но какой - понять не могу. Можно ли какими-то средствами узнать, какой шаблон загружается?
Вы в настройках компонента поменяли шаблон на свой? В настройках компонента и видно какой шаблон у вас используется.
Разработка сайтов на 1С-Битрикс
Проблема сохранения пользовательского свойства типа список
Здравствуйте. Пытаюсь добавить пользовательское свойство типа "Список" к элементам инфоблока. Используя Шилова Андрея. Его пример рабочий, но проблема в том, что он не удобен если нужно выбрать десятки городов. Пошёл по пути изменения элемента интерфейса на список с возможностью множественного выбора. В итоге столкнулся с проблемой сохранения.
В метод ConvertToDB падает значения списка циклом. Вместо того, что бы прийти на пример массивом. Соответственно очень хотелось бы узнать как правильно сохранить такое свойство. Каждый раз обращаться к БД получая список существющих значений для добавления нового значения в цикле, не очень то красиво.
Может в конце сохранения срабатывает какое то событие из массива возвращаемого GetUserTypeDescription? Тогда можно было бы собрать все значения в массив и сохранить один раз.
Гаджи написал: Добрый день. Создал группу "Редакторы" и выдал права контент-менеджера пользователю. Дело в том что на сайте есть форма обратной связи, в которой посетители могут прикреплять файлы. И это письмо приходит на почту. Я как админ могу смотреть прикрепленные файлы (т.е. скачивать их). А контент-менеджер не может у него пишет Файл не найден. Подскажите пожалуйста, какие еще права нужно дать ему?
Попробуйте выдать права на чтение группе "Редакторы" на папку /upload/.
Разработка сайтов на 1С-Битрикс
Ошибки размера файлов при распаковке резервной копии
webgrig написал: Только, что попробовал поднять сайт локально из этого же бекапа, все нормально распаковалось, и сайт поднялся без проблем, а на хостинге почему то не хочет, все время выдает эти долбаные ошибки. Судя по всему какие-то настройки сервера не подходят, но вот узнать бы какие.
Люди подскажите, что делать, хотя бы в каком направлении копать?
Попробуйте для начала проверить параметры хостинга