Ответы пользователя по тегу 1С-Битрикс
  • Как мне узнать, где какой почтовый шаблон используетсяв коде в Битриксе? Можно как-нибудь быстро найти участок кода на сайте по шаблону?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Может я что-то не правильно понял. Но почтовые шаблоны обычно используют компоненты и ты просто указываешь в настройках компонента какой шаблон использовать. А сам код почтового шаблона прописывается в админке, в настройках, в разделе Почтовые шаблоны.
    Ответ написан
  • Битрикс, вывести товары со скидкой?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Всё очень просто:

    <?$res = AllProductDiscount::getFull();?>
    
    <?
    foreach($res['IDS'] as $ID) {
        	$sale_id[] = $ID;
    }
    ?>
    
    <?
    $GLOBALS['searchFilter'] = array("ID"=>$sale_id);
    ?>


    А в коде вызова компонента ищем строку "FILTER_NAME" => "searchFilter",

    "searchFilter" это ключ элемента из массива $GLOBALS
    Ответ написан
    Комментировать
  • Как узнать ИД свойства в умном фильтре Битрикса?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Хм, ну если вы просто чисто визуально хотите увидеть ID каждого свойства. То их можно посмотреть перейдя в настройки инфоблока, на вкладку свойства( там где вы добавляли эти свойства вручную, ну или если они с 1С загрузились), а затем нажать на кнопку с троеточием рядом с названием свойства, тем самым переходя в его настройку. Там вы увидите ID нужного вам свойства.
    Ответ написан
    Комментировать
  • Как вывести разделы каталога в верхнее меню битрикс?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Ну смотри я вот так реализовываю всегда.

    1) Создаю два типа меню. Например: "Верхнее меню" и "Каталог" ( что бы создать новые типы меню, это надо пройти в настройки и там в настроках структуры дописать новые типы меню.
    2) Беру обычный компонент типа bitrix:menu вот его template.php

    <? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die(); ?>
    <?$countMenu = 0;?>
    <? if(!empty($arResult)): ?>
        <div class="top_menu">
    		<ul class="menu" data-role="x-menu">
    			<?
    				$previousLevel = 0;
    				foreach($arResult as $arItem):
    			?>
    				<? if($previousLevel && $arItem["DEPTH_LEVEL"] < $previousLevel):?>
    					<?=str_repeat("</ul></li>", ($previousLevel - $arItem["DEPTH_LEVEL"]));?>
    				<? endif; ?>
    				<? if($arItem["IS_PARENT"]): ?>
    					<? if($arItem["DEPTH_LEVEL"] == 1): ?>
    						<li class="first_lvl_parent parent_li<? if($arItem["SELECTED"]): ?> first_lvl_selected<? endif; ?>" <?if($countMenu == 0):?>onmouseout="OutoverElement();"
       onmouseover="HoverElement();"<?endif?>><span class="parent_span"><a href="<?=$arItem["LINK"]?>" class="<? if($arItem["SELECTED"]): ?>root-item-selected<? else: ?>root-item<? endif; ?>"<?if($countMenu == 0):?>style="padding-left:0;"<?endif?> ><?if($countMenu == 0):?>
    									
    									<?$countMenu = 1;?>
    								<?endif;?><div class="catmenu"><?=$arItem["TEXT"]?></div></a></span>
    							<ul class="first_lvl" style="height:470px">
    					<? else: ?>
    						<li class="parent_li<? if($arItem["SELECTED"]): ?> item-selected<? endif; ?>">
    							<span class="parent_span">
    								<a href="<?=$arItem["LINK"]?>" class="parent">
    									<?=$arItem["TEXT"]?>
    								</a>
    								<i class="l_top"></i><i class="l_bt"></i>
    							</span>
    							<ul class="parent_lvl" >
    								<li class="zap_top"></li>
    								<li class="zap_bt"></li>
    					<? endif; ?>
    				<? else: ?>
    					<? if($arItem["PERMISSION"] > "D"): ?>
    						<? if($arItem["DEPTH_LEVEL"] == 1): ?>
    							<li class="not_parent<? if($arItem["SELECTED"]): ?> first_lvl_selected<? endif; ?>"><span><a href="<?=$arItem["LINK"]?>" class="<? if($arItem["SELECTED"]): ?>root-item-selected<? else: ?>root-item<? endif; ?>"><?=$arItem["TEXT"]?></a></span></li>
    						<? else: ?>
    							<li<? if($arItem["SELECTED"]): ?> class="item-selected"<? endif; ?>><span><a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a></span></li>
    						<? endif; ?>
    					<? endif; ?>
    				<? endif; ?>
    				<? $previousLevel = $arItem["DEPTH_LEVEL"]; ?>
    			<? endforeach; ?>
    			<? if($previousLevel > 1): ?>
    				<?=str_repeat("</ul></li>", ($previousLevel-1) );?>
    			<? endif; ?>
    		</ul>
    	</div>
    <? endif; ?>


    3) Ставлю в настройках компонента "Тип меню для первого уровня: Верхнее меню" - где у меня всего один пункт "Каталог товаров" со ссылкой на основную страницу каталога.
    4) Ставлю в настройках компонента "Тип меню для остальных уровней: Каталог" (уровень вложенности по желанию.
    5) Далее перехожу в корневую папку каталога. У меня это адрес_сайта/catalog/ и добавляю в ней новое меню типа "Каталог". Сохраняем его.
    6) Открываю это меню для редактирования в режиме php и вставляю вместо всего что там есть, следующий код:

    <? 
      if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); 
      global $APPLICATION; 
      $aMenuLinksExt = $APPLICATION->IncludeComponent(
    	"bitrix:menu.sections", 
    	"", 
    	array(
    		"IS_SEF" => "Y",
    		"SEF_BASE_URL" => "/katalog/",
    		"SECTION_PAGE_URL" => "#SECTION_CODE_PATH#/",
    		"DETAIL_PAGE_URL" => "#SECTION_CODE_PATH#/#ELEMENT_CODE#.html",
    		"IBLOCK_TYPE" => "catalog", 
    		"IBLOCK_ID" => "18",
    		"DEPTH_LEVEL" => "2",
    		"CACHE_TYPE" => "A",
    		"CACHE_TIME" => "36000000"
    	),
    	false
    ); 
      $aMenuLinks = array_merge($aMenuLinksExt, $aMenuLinks); 
    ?>


    Должно работать.

    Важно! В 6 пункте, обязательно укажите правильные
    "IBLOCK_TYPE" => "catalog",
    "IBLOCK_ID" => "18",

    они у вас имеют свои значения, какие именно? Смотрите у себя в админке.
    Ответ написан
    9 комментариев
  • Как сделать подкатегории товаров в Битрикс?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Ну так надо зайти в подкатегорию. Выбрать слева где список подкатегорий "Элементы" и вот уже там нажимать "Создать товар"
    Ответ написан
  • Как сделать якорное меню в битриксе?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    так же как и обычное меню делай. Только например вместо /katalog/ пиши #block1. У тебя в href созданного меню добавится якорь #block1. А нужному блоку задай id = "block1".
    Ответ написан
  • Не применяется шаблон для пользовательского свойства?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Ответ в комментариях
    Ответ написан
    Комментировать
  • Не правильно отображаются кнопки на сайте 1C bitrix?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Скорее всего на мобильной версии установлены другие настройки для компонента. Посмотрите, возможно вызов компонента для мобильной версии идет в другом месте, в отличии от обычной версии сайта. Если так, тогда проверти настройки компонента. Скорее всего вместо "Добавить в корзину", в настройках компонента для мобильной версии, какую кнопку отображать, установлено "подребнее".
    Ответ написан
    Комментировать
  • Битрикс. Как узнать есть ли подарок у товара в списке товара?

    @ZZiliST Автор вопроса
    Изучаю JS, CSS, HTML, PHP
    Разобрался надо было вставить

    use Bitrix\Sale\Compatible\DiscountCompatibility;
    use Bitrix\Sale\Basket;
    use Bitrix\Sale\Discount\Gift;
    use Bitrix\Sale\Fuser;
    
    class DiscountsHelper
    {
        /**
         * Возвращает массив id всех доступных подарков для товара
         *
         * @param int $productId - идентификатор товара
         * @return array - массив с id подарков для товара
         */
        public static function getGiftIds($productId)
        {
            $giftProductIds = [];
    
            if (!$productId) {
                return $giftProductIds;
            }
    
            DiscountCompatibility::stopUsageCompatible();
    
            $giftManager = Gift\Manager::getInstance();
    
            $potentialBuy = [
                'ID'                     => $productId,
                'MODULE'                 => 'catalog',
                'PRODUCT_PROVIDER_CLASS' => 'CCatalogProductProvider',
                'QUANTITY'               => 1,
            ];
    
            $basket = Basket::loadItemsForFUser(Fuser::getId(), SITE_ID);
            
            $basketPseudo = $basket->copy();
    
            foreach ($basketPseudo as $basketItem) {
                $basketItem->delete();
            }
    
            $collections = $giftManager->getCollectionsByProduct($basketPseudo, $potentialBuy);
    
            foreach ($collections as $collection) {
                /** @var \Bitrix\Sale\Discount\Gift\Gift $gift */
                foreach ($collection as $gift) {
                    $giftProductIds[] = $gift->getProductId();
                }
            }
    
            DiscountCompatibility::revertUsageCompatible();
    
            return $giftProductIds;
        }
    }
    Ответ написан
    Комментировать
  • Как убрать параметр из фильтра Битрикс?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Заходишь в настройки комплексного компонента Каталог, уверен ты используешь именно его. Дальше ищешь вкладку "Настройки фильтра" и выбираешь какой тип цены должен отображаться в умном фильтре.

    А дробная часть цены не будет показана в фильтре, если в настройках валюты запрещен показ десятичных знаков.
    Ответ написан
  • Как добавить новые позиции в информационный блок?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Теперь вам надо в настройках компонента выбрать эти свойства. А потом вывести, дописав вывод в шаблоне компонента ( template.php )

    если это детальная страница компонента то:

    echo $arResult["PROPERTIES"]["TEL_1"]["VALUE"]
    echo $arResult["PROPERTIES"]["SHEMAP"]["VALUE"]


    если это список то

    echo $arItem["PROPERTIES"]["TEL_1"]["VALUE"]
    echo $arItem["PROPERTIES"]["SHEMAP"]["VALUE"]
    Ответ написан
    Комментировать
  • Как сделать две цены на товар?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Что бы сделать две цены на один товар, нужно использовать "Торговые предложения". Если же вы хотите использовать разные типы цен ( не путать с ценой ), то вы должны в настройках компонента выбрать эти типы цен для отображения и в административном разделе сайта, в настройках "Тип Цены" (где вы её создавали) выбрать для каких пользователей, какой тип будет отображаться.

    Тип цены

    Торговые предложения

    1) Копируете шаблон компонента
    2) Открываете template.php
    3) Если проект рабочий, и пользователи уже пользуются ресурсом, выводите под админом $arResult или $arItem ( в зависимости какой у вас компонент ). Делается это так

    <?global $USER;
    		if ($USER->IsAdmin()){?>
                          <pre><?print_r($arResult)?></pre>
                 <?}?>


    Ищите в этом массиве ваши типы цены.

    Далее выводите

    <?echo $arResult["PRICE"]["PRICE_1"]["VALUE"]?> 
         <?echo $arResult["PRICE"]["PRICE_2"]["VALUE"]?>  // у вас пути до значения и названия типа цен могут отличаться


    Важно! Если вы используете комплексный компонент каталог. То при создании копии шаблона компонента путь до нужных teamplate.php будет примерно такой:

    /public_html/bitrix/templates/Название шаблона сайта/components/bitrix/catalog/название шаблона компонента/bitrix/catalog.element/.default - для карточки товара

    /public_html/bitrix/templates/Название шаблона сайта/components/bitrix/catalog/название шаблона компонента/bitrix/catalog.section/.default - для списка товаров
    Ответ написан
    8 комментариев
  • Как вывести шаблон META TITLE в тег title?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Посмотрите в настройках компонента, скорее всего у вас в одном стоит галочка "Устанавливать заголовок страницы", а в другом нет.
    Ответ написан
    Комментировать
  • Как перенести свойства инфоблока в другой инфоблок?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Ответ написан
    Комментировать
  • Как вывести количество элементов в каждой категории?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    А что мешает сделать так?
    foreach(array_unique($serialValues) as $valueS){
    echo $valueS;
    echo " - ";
    echo count($valueS);
    echo "<br>"
    }
    Ответ написан
    Комментировать
  • Как установить количество персональных рекомендаций в компоненте catalog.bigdata.products?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Если не можешь добраться до настроек компонента, то зайди в файл, где размещён вызов компонента. У меня например он вызывается в файлах /bitrix/templates/название шаблона сайта/components/bitrix/catalog/название шаблона компонента/section_vertical.php или section_horizontal.php в зависимости от того, какой тип фильтра был выбран (горизонтальный или вертикальный. Там при вызове компонента идёт примерно такая структура :

    $APPLICATION->IncludeComponent("bitrix:catalog.bigdata.products", "", array(
    					
    				),
    				$component,
    				array("HIDE_ICONS" => "Y")
    			);


    так вот там ищи "LINE_ELEMENT_COUNT" Например запись такого вида "LINE_ELEMENT_COUNT" => 5, выдаст тебе 5 элементов на страницу.
    Ответ написан
    Комментировать
  • Как в хлебных крошках битрикса получить параметры компонента?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    А что мешает JSсом менять название класса в зависимости от ID текущего элемента, или раздела?
    Ответ написан