Антон Соловьев написал: CModule::IncludeModule("sales");
Такого модуля нет, по крайней мере штатно. Есть модуль sale.
Цитата
Антон Соловьев написал: $el->Update($r['ID'], array("CATALOG_QUANTITY" => 1));
Такой вариант не работает, т.к. CATALOG_QUANTITY задается другим способом, через CCatalogProduct::Add (Update).
Но также почти непонятна задача и непонятно почему в названии фунции содержится "WhereNoPrice". Вы же фильтруете не там где нет цены, а там где цена менее 10000?
Ошибки при переносе Битрикса с php5 на php 7, Fatal error: Uncaught Error: Call to a member function GetPageProperty() on null in, Undefined variable: APPLICATION in C:\xampp\htdocs\dummy-host.example.com\index.php on line 1 Fatal error: Uncaught Error: Call to a member function GetPageProperty() o
Андрей Николаев написал: эм.. его нельзя получить, так как include.php это файл, а ID модуля - несуществующее физическое значение.По факту ID модуля это название вышестоящей папки)
Да, как раз так его и можно получить:
Код
$ModuleID = pathinfo(__DIR__,PATHINFO_BASENAME);
Но мне кажется более надежным явно задавать ID модуля в этом файле вручную, один раз в начале файла.
Евгений Жуков написал: Там же сказано, что есть переменная $templateData, которая заполняется в template.php, после чего автоматом кешируется и доступна в component_epilog.php
Да, можно и так, наверное (спасибо большое за наводку!). Наверное - потому что я пользуюсь тем кодом, которым пользовался давно и который пока не подводил. Думаю, стандартный и, тем более, документированный вариант (templateData) здесь намного лучше, т.к. это штатное решение и от него не откажутся разработчки. Но, позволю себе кинуть камень в огород Битрикса, наверное в отдел документации: если написано
Цитата
обратите внимание, таким образом можно передать данные из template.php в файл component_epilog.php, причем эти данные закешируются и будут доступны в component_epilog.php на каждом хите/
то почему бы не привести хотя бы самый маленький крошечный пример? Чтобы не гадать, а знать наверняка как это работает. Почему нет уточнения, работает ли он в result_modifier?
Ну, вы можете выключить кеширование, или пойти вторым конем, но ход будет почти такой же. Многие просто в файле element.php шаблона комплексного компонента bitrix:catalog.element оборачивают в буферизацию, и заменяют.
А, ну да, забыл, еще же nginx можно использовать. Пункт 3 для извращенцев потому, что у вас на сайте вряд ли 1 страница, и даже вряд ли 10 страниц. И все это вручную делать - это неразумно в наше время.
Цитата
Федор Иванов написал: тогда можно даже избежать изменения адреса картинки.
Все вышеописанные мной способы - без изменения адреса картинки.
Я в последнее время пришел к такому способу решения: 1) все как обычно, НО: 2) в template.php там, где должен быть блок, ставлю что-то типа #BLOCK_1#, или <div id="block_1"></div>, или что угодно (важно чтобы указанный идентификатор не заменился кем-то или чем-то в будущем), 3) в component_epilog.php подключаю компонент через буферизацию:
Код
ob_start();
тут можно подключить компонент (без режима AJAX, кстати!) или сделать что-то иное, что не закешируется.
$GLOBALS['_HTML_BLOCK_1'] = ob_get_clean()
т.о. я поместил контент в переменную. 4) тут же ниже добавляю обработчик OnEndBufferContent, где указанный в пункте блок заменяю на $GLOBALS['_HTML_BLOCK_1'] с помощью обычного str_replace(). 5) т.к. в component_epilog.php часто нужно использовать данные, которые из-за кеширования туда не доходят, то можно воспользоваться этим решением:
И таким образом можно передать любые данные из result_modifier.php в component_epilog.php независимо от кеширования. А в component_epilog это будет $arResult['_MY_VAR'].
Мне нравится это решение, т.к. оно все в одном шаблоне, случайно тут никто не навредит (кроме пункта 2), и оно ни от чего не зависит.
Можете использовать напрямую exec() и jpegoptim и optipng, если они есть на сервере. Если нет - то установить. Если установить нет возможности - тогда через внешние онлайн-сервисы, но это не очень, имхо. В целом установить это ПО и юзать exec() для этого - задача несложная, хотя нюансы как всегда есть, но и профит тоже.