• Как удалить несколько файлов при одновременном удалении поста и информации в базе данных?

    @voland700 Автор вопроса
    Опишу решение данной задачи. Мною задача по одновременному удалению файлов галерей при удалении поста, решена так:
    //Pechnik -  модель/таблица содержит данные поста
    //Images - модель/таблица содержит информацию о  изображениях галереи 
     
    // - метод ресурсного контролера для удаления поста
        public function destroy($id)
        {
            $images = Images::where('pechnik_id', $id); //получаю колекцию файлов галереи превязанных к ID поста p из таблицы Images
            $pathImages = $images->get('img'); //получаю данные наименование и путь файлов галереи превязанных к ID поста
            if (!$pathImages->isEmpty()){ 
                foreach ($pathImages as $img){ 
                    $path = $img->img; 
                    Storage::disk('public')->delete(str_replace('storage', '', $path)); //в цикле удаляю фалы галереи превязанных к ID поста
                }
            }
            $images->delete(); // удаляю записи в таблице Images:: о файлах галереи
            $pechnik= Pechnik::find($id);   // получаю данные поста по ID из таблицы Pechnik::
            Pechnik::find($id)->delete();  // удаляю запись в таблице Pechnik:: - данные поста
            return redirect()->route('admin.index')->with('success', 'Информаця успешно удалена');
        }
    Ответ написан
    Комментировать
  • Как получить список товаров каталога по ID, с данными о ценах и размерах скидки?

    @voland700 Автор вопроса
    Задача решена. Опишу решение, возможно кому-нибудь пригодится.

    Изначально, необходимо было вывести на главной странице каталога блок с товарами каталога, по свойству PROPERTY_STICKERS – типа список, которым заданы значения Хит, Советуем, Новинки, Акции для вывода товаров с соответствующими стикерами. При этом товары должны выводится с размером скидок, указанием старой цены, ценой конвертированной из Валюты в рубли.

    5ef994cd5227f620637405.jpeg

    Методы битрикс CIBlockElement::GetList и CCatalogDiscount::GetList не идеальны для решения данной задачи. По моему мнению целесообразней использовать компонент catalog.section с фильтром по свойству. Для чего в параметрах компонента задан фильтр:
    "USE_FILTER" => "Y",
         "FILTER_NAME" => "arrFilterAdvice",


    И для получения всех товаров каталога, в которых заданы значения свойству PROPERTY_STICKERS (свойство не пустое) задан фильтр.

    <? $GLOBALS['arrFilterAdvice'] = array('ACTIVE' => 'Y', '!PROPERTY_STICKERS' => false);
    $APPLICATION->IncludeComponent(
    	"bitrix:catalog.section", 
    	"shop_window", 
    	array(
              …
              "USE_FILTER" => "Y",
              "FILTER_NAME" => "arrFilterAdvice", 
              …


    Таким образом получен список товаров которым заданы значения, и уже в файле result_modifier.php сортирую полученные элементы по массивам - Хит, Советуем, Новинки, Акции, добавляю в результатирующий массив $arResult для кеширования.

    if(!$arResult["ADVICE"]){
    	foreach($arResult["ITEMS"] as $Element){
    		foreach($Element["PROPERTIES"]["STICKERS"]["VALUE_XML_ID"] as $type){		
    			if($type == "HIT") $arResult["ADVICE"]["HIT"][$Element["ID"]] = $Element;
    			if($type == "RECOMMEND") $arResult["ADVICE"]["RECOMMEND"][$Element["ID"]] = $Element;
    			if($type == "NEW") $arResult["ADVICE"]["NEW"][$Element["ID"]] = $Element;
    			if($type == "STOCK") $arResult["ADVICE"]["STOCK"][$Element["ID"]] = $Element;
    		}
    	}
    }


    Полученные данные вывожу в шаблоне компонента catalog.section в виде табов.
    Ответ написан
    Комментировать
  • Почему не работает фильтр для выборки элементов инфоблока по ID?

    @voland700 Автор вопроса
    Проблема решена - способы решения находятся в комментариях.
    Суть проблемы в том, что данные содержащиеся в $arResult в файле component.epilog.php недоступны. Для передачи необходимых параметров содержащихся $arResult необходимо их пробросить из кешируемой области компонента в component_epilog.php:
    $cp = $this->__component;
    if (is_object($cp))
    {
      $cp->arResult["ASSOCIATED"] = $arResult["PROPERTIES"]["ASSOCIATED"]["VALUE"];
      $cp->SetResultCacheKeys(array("ASSOCIATED")); //cache keys in $arResult array
    }


    Либо передавать через $arParams параметры настроек компонента:
    $templateData["ASSOCIATED"] = $arResult["PROPERTIES"]["ASSOCIATED"]["VALUE"];
    Ответ написан
    Комментировать
  • Как задать рядам элементов DOM дерева HTML документа одинаковую высоту?

    @voland700 Автор вопроса
    Благодарю за советы ограничится возможностями CSS. В моем случае это не получится, по крайней мере я не представляю как это возможно сделать, так как карточка товара несколько сложнее чем на первом скриншоте.

    На некоторых товарах выводятся блоки с разными типами цен - скидками. Кроме того на Hоver - появляется кнопка купить с выбором количества. Вобщем без JS не обойтись.

    5ede2362ab597185986899.jpeg

    Нашел решение на просторах интернет, учитывая, что, возможно решение пригодится кому-нибудь еще приведу пример кода функции:

    function funcItemsHeight(domItem) {
    	var menuItems = document.querySelectorAll(domItem);
    	var top = menuItems[0].offsetTop;
    	var arrHeight = [];
    	var arrItems = [];
    	for (var i = 0; i < menuItems.length; i++) {
    		menuItems[i].style.height = 'auto';
    	}
    	for (var i = 0; i < menuItems.length; i++) {
    		if (top != menuItems[i].offsetTop) {
    			arrHeight.sort(function (a, b) { return b - a });
    			for (var j = 0; j < arrItems.length; j++) {
    
    				arrItems[j].style.height = arrHeight[0] + 'px';
    			}
    			top = menuItems[i].offsetTop;
    			arrHeight.length = arrItems.length = 0;
    			i = i - 1;
    			continue;
    		}
    		arrHeight[arrHeight.length] = menuItems[i].offsetHeight;
    		arrItems[arrItems.length] = menuItems[i];
    	}
    	arrHeight.sort(function (a, b) { return b - a });
    	for (var j = 0; j < arrItems.length; j++) {
    		arrItems[j].style.height = arrHeight[0] + 'px';
    	}
    }
    window.onresize = funcItemsHeight;
    
    funcItemsHeight('.ВАШ_ЭЛЕМЕНТ');
    Ответ написан
    Комментировать
  • Как настроить правильный вывод цен в каталоге Bitrix, шаблон Аспро.Next?

    @voland700 Автор вопроса
    Проблема решена - помог ответ из комментариев:
    PetrPo,

    В настройках самого решения Аспро.Next - убрать старую цену нет. Есть поле формы "Старая цена для товара" - где указана базовая, - но сделать её не активной не получается.


    ctrl + лкм (зажми ctrl и щелкни левой кнопкой мыши на том куда вопросик на скрине адресован, чтобы снять выделение)
    Ответ написан
    Комментировать
  • Битрикс GetList - как получить самые просматриваемые элементы инфоблока?

    @voland700 Автор вопроса
    Вопрос решен. Возможно решение пригодится кому-нибудь, опишу решение.
    С помощью CIBlockElement::GetList - получаем список элементов инфоблока, сортируем по убыванию по полю SHOW_COUNTER - в котором содержаться данные о количестве просмотров, и ограничиваем лимит 5 элементами.

    if(CModule::IncludeModule('iblock'))
    {
    	$res = CIBlockElement::GetList(
    		array("SHOW_COUNTER"=>"DESC"), // сортировка по количеству просмотров;
    		array("IBLOCK_ID"=>1," ACTIVE"=>"Y"), //Получаем  активные элементы , в данном случае из инфоблока с ID = 1;
    		false, 
    		array("nTopCount"=>5), //ограничиваем количество элементов - только 5.
    		array("NAME","PREVIEW_PICTURE", "DETAIL_PAGE_URL")// Выбираем только указанные поля
    	); 
    	while($ar = $res->GetNext())
    	{
    		$arTheBest[]=$ar;	//массив с данными 5 самых просматриваемых элементов инфоблока				
    	}
    }
    Ответ написан
    Комментировать
  • VUE.JS Ошибка Error in v-on handler: "TypeError: handler.apply is not a function" - в чем причина?

    @voland700 Автор вопроса
    v-on:autorchange должен попадать метод (функция) а не computed свойство
    - было причиной проблемы.
    Ответ написан
    Комментировать
  • Почему не отрабатывает V-for после обновления DATA свойства полученными из базы данных?

    @voland700 Автор вопроса
    Вопрос снят. Ошибка найдена.
    Пытался работать с this data- внутри другой функции, которая имеет свой контекст!
    Ответ написан
    Комментировать
  • Как развернуть резервную копию созданную средствами веб окружения VMBitrix v7.3?

    @voland700 Автор вопроса
    Вопрос закрыт. Возможно данная информация будет полезна для других пользователей опишу процесс восстановления сайта или разворачивания из резервной копии созданной при автоматическом резервном копировании средствами Битрикс веб окружения.

    При автоматическом резервном копировании VMBitrix - фалы с backup-архивом помещаюстя в деректорию сервера /home/bitrix/backup/archive/www_backup_sitemanager_15.04.2019_8akRLwVX.tar.gz

    1. Копируем резервную копию в корневую директорию сайта:
    cp -R /home/bitrix/backup/archive/www_backup_sitemanager_15.04.2019_8akRLwVX.tar.gz /home/bitrix/www/www_backup_sitemanager_15.04.2019_8akRLwVX.tar.gz

    2. Переходим в дирeкторию сайта с архивом
    cd /home/bitrix/www/

    3. Распаковываем архив, воcтонавливаем файловую систему сайта.
    tar xzvvf www_backup_sitemanager_15.04.2019_8akRLwVX.tar.gz ./

    4. Воcтонавливаем MySQL - Базу данных.
    Дамп базы данных при резервном копировании средствами VMbitrix - размещается в директории /home/bitrix/ в виде двух файлов - с окончанием *.sql и *_after_connect.sql.
    Так же данные файлы находятся в самом архиве в директории /home/bitrix/ - от корня архива, при необходимости их можно извлечь от туда.

    Если база данных не нарушена - для восстановления достаточно дать команду на восстановление из файла *_after_connect.sql:
    mysql sitemanager
    < home/bitrix/mysql_dump_sitemanager_15.04.2019_8akRLwVX_after_connect.sql


    При необходимости полного восстановления базы данных необходимо последовательно дать команду на восстановление двух фалов:
    mysql sitemanager < home/bitrix/mysql_dump_sitemanager_15.04.2019_8akRLwVX.sql
    mysql sitemanager < home/bitrix/mysql_dump_sitemanager_15.04.2019_8akRLwVX_after_connect.sql


    5. При необходимости развернуть резервную копию на другом сервере, с установленным Веб окружением потребуется изменить пароль для пользователя базы. Для одного сайта в Битрикс веб окружением создастся база данных - sitemanager, с пользователем bitrix0.
    Пароль для пользователя bitrix0 при установке веб окружения генерируется автоматически, и соответственно не будет совпадать со старым паролем в конфигурационных файлах Битрикс. Посмотреть старый пароль можно в конфигурационных фалах Битрикс:
    /home/bitrix/www/bitrix/.settings.php или /home/bitrix/www/bitrix/php_interface/dbconn.php

    Необходимо поменять пароль для пользователе - bitrix0, привести в соответствие с паролем указанным в конфигурационных фалах:
    mysql -uroot
    SET PASSWORD FOR 'bitrix0'@'localhost' = PASSWORD('ПАРОЛЬ');
    Ответ написан
    Комментировать
  • Как создать сайт на поддомене (субдомене) на сервере с панелью BrainyCP?

    @voland700 Автор вопроса
    Благодарю Всех за ответы!
    Задача решена. Как и советовали, решением было создании в панели управления хостера подзоны: subdomen - с указанием того же IP на котором работает основной домен. Проблема была в том, что в панели управления хостинга при создании поддзоны, хостер присваивал другой IP - адрес для созданной подзоны. Просто заменил IP - адрес на правильный.
    Ответ написан
    Комментировать
  • Кто напомнит ресурс, который помогает строить предложения на английском?

    https://puzzle-english.com
    Много полезных практических материалов для изучения английского, с разным уровнем сложности.
    Есть возможность аудио, песни, фильмы сериалы, после прослушивания - раскладывать фразы -как пазлы из слов. В игровой форме - занимательно и интересно. Но ресурс доступен по подписке.
    Ответ написан
    Комментировать
  • Где найти практику по javascript?

    Занимательные задачи JavaScript и jQuery: https://vk.com/zadachi_javascript_jquery
    Ответ написан
    Комментировать