Чтобы передать ID товара в компоненте 1С Битрикс, необходимо убедиться, что этот ID действительно доступен в контексте, где вы вызываете свой компонент. Обычно ID товара доступен в переменной `$arResult`, однако если вы не видите в ней нужных данных, то есть несколько способов это исправить.
Давайте разберем ваш код и предложим несколько возможных решений:
1. **Проверка доступности ID товара**:
Убедитесь, что переменная `$arResult` правильно инициализирована и содержит нужные данные. Обычно, ID товара доступен в `$arResult["ID"]`, но может быть также и в других местах, зависит от структуры вашего шаблона.
Вы можете отладить ваш код, выводя содержимое переменной `$arResult`, чтобы понять, где находится нужный ID:
```php
echo '<pre>';
print_r($arResult);
echo '</pre>';
```
2. **Проверка ID перед вызовом компонента**:
Если ID товара определен, убедитесь, что вы передаете его правильно в массив параметров. Вы правильно его передаете, но если `$page_id` оказывается пустым, возможно, стоит добавить дополнительную проверку:
```php
$page_id = isset($arResult["ID"]) ? $arResult["ID"] : null;
```
3. **Получение ID по URL**:
Если по каким-то причинам ID товара не доступен, вы можете попробовать извлечь его из текущего URL. Обычно, в URL ЧПУ можно использовать назначенные правила для получения ID из строки запроса. Например, возможно, вы используете такие настройки для вашего компонента каталога:
```php
global $APPLICATION;
$requestedPage = $APPLICATION->GetCurPage();
$elementID = array(); // массив для хранения ID
// Ваши правила для извлечения ID из URL
if (preg_match('/\/catalog\/([^\/]+)\//', $requestedPage, $elementID)) {
$page_id = $elementID[1];
}
```
Это пример, и вам необходимо подставить свой регулярный выражение или логику, которая соответствует вашему URL.
4. **Использование `$APPLICATION->AddHeadString()`**:
Если у вас есть другие компоненты, которые могут использовать ID, можно сохранять его в JS-переменной, чтобы иметь к ней доступ:
```php
$APPLICATION->AddHeadString('<script>var currentProductId = '.$page_id.';</script>', true);
```
После этого ваш ID будет доступен в JavaScript, и вы сможете использовать его где угодно.
5. **Вызов компонента внутри структуры списка**:
Если ваш компонент вызывается внутри цикла (например, в списке элементов каталога), убедитесь, что вы передаете правильный ID текущего товара. Проверьте контекст вызова и структуру кода, чтобы ID товара был всегда доступен.
Следуя данным рекомендациям, вы сможете передать ID товара в ваш компонент корректно. Если вопросы останутся, пожалуйста, предоставьте больше контекста или кода — это поможет лучше понять ситуацию.