Архив рубрики: Web

В данном разделе рассматриваются все нюансы web разработка, которые могут помочь вам в работе с написанием кода и модулей! Читаем и учимся!

Как изменить идентификатор и префикс приращения заказа в Magento

Иногда возникает необходимость изменить нумерацию заказов Magento. Возможно, необходимо избежать конфликта с отдельной установкой Magento или другой платформой электронной коммерции. Или, может быть, вы просто хотите увеличить свой номер заказа, чтобы он выглядел так, как будто вы обработали сотни тысяч заказов. В любом случае, здесь есть несколько команд SQL, которые вы можете запустить, чтобы проверить состояние номеров заказов вашего магазина, и команды, которые также могут изменить нумерацию. Кроме того, я включил команды SQL для изменения идентификаторов инвойсов, отгрузок и кредитных нот. Найти текущие идентификаторы приращения для всех магазинов SELECT core_store_group.name AS group_name, core_website.name AS website_name, core_store.name AS store_name, core_store.store_id, increment_prefix, increment_last_id, entity_type_code FROM eav_entity_store INNER JOIN eav_entity_type ON eav_entity_type.entity_type_id = eav_entity_store.entity_type_id INNER JOIN core_store ON core_store.store_id = eav_entity_store.store_id INNER JOIN core_store_group ON core_store_group.group_id = core_store.group_id INNER JOIN core_website ON core_website.website_id = core_store.website_id WHERE eav_entity_store.store_id != 0 ORDER BY eav_entity_store.store_id; Это покажет ваш текущий идентификатор приращения и префикс для всех типов… Читать далее »

Как запретить вывод определённой записи или рубрики на главной странице сайта и т.д

О том, как запретить отображение (вывод) определённой статьи (записи) на главной странице или страничках архивов — рубрик, тегов, страниц поиска… в этой статье и разберёмся. Решая нынешнюю задачу, рассмотрим несколько вариаций кодов: Таким образом добьёмся наилучшего результата настройки структуры сайта, чтобы посетителю было удобнее ориентироваться, а нам, как админам, покойно на душе)) как исключить конкретную запись по id на главной страничке сайта …вот и ловкий код для легендарного файла функций либо же плагина, который решит вопрос исключения определённых записей с главной страницы, либо любых архивов любо настроить: /** исключим конкретные записи с главной **/ function exclude_post($query) { if ($query->is_home) {$query->set(‘post__not_in’, array(4) );} // id записи (поста) — возможно указывать несколько id через запятую return $query; } add_filter(‘pre_get_posts’,’exclude_post’); /** исключим конкретные записи с главной **/ Теория кода: Создаём такой запрос (относительно отдельных записей post) к базе данных exclude_post($query); далее указываем страницу для обработки запросом: у нас это is_home. Далее создаём (скажем так — правило обработки… Читать далее »

Как сбросить в MySQL счетчик AUTO_INCREMENT

При удаление всех данных из таблиц, иногда возникает необходимость сбросить счетчик AUTO_INCREMENT т.к. если этого не сделать то значения для новых данных будут присваиваться начиная с того, на котором стоял AUTO_INCREMENT до удаления данных из таблицы. Сброс счетчика AUTO_INCREMENT при помощи запроса к таблице MySQL ALTER TABLE name_table AUTO_INCREMENT=0; где name_table — имя вашей таблицы. После выполнения данного запроса при добавлениее новых значения полей будут присваиваться с единицы, если вы хотите чтобы значения начинались с другово числа, то измените значение параметра AUTO_INCREMENT. Пример: ALTER TABLE name_table AUTO_INCREMENT=100; Источник:https://admin-gu.ru/

Отправка почты с помощью helper magento 2

Первым делом создаем шаблон отправки письма, для этого объявляем наш шаблон app/code/Custom/Module/etc/email_templates.xml <?xml version=»1.0″?> <config xmlns:xsi=»https://www.w3.org/2001/XMLSchema-instance» xsi:noNamespaceSchemaLocation=»urn:Magento:module:Magento_Email:etc/email_templates.xsd»> <template id=»feedback_email_template» label=»New feedback email» file=»email_feedback.html» type=»html» module=»Custom_Module» area=»frontend»/> </config> Создадим наш шаблон по данному пути: app/code/Custom/Module/etc/email_templates.xml <!—@subject Обратная связь с сайта @—> <div> Обратная связь от: {{var name}} <br> Номер заказа: {{var number_order}} <br> E-mail: {{var email}} <br> Телефон: {{var phone}} <br> Сообщение: {{var message}} </div> Создаем helper из которого будет отправляться само письмо: app/code/Custom/Module/Helper/Email.php <?php namespace Custom\Module\Helper; use Magento\Framework\App\Helper\Context; use Magento\Framework\Translate\Inline\StateInterface; use Magento\Framework\Escaper; use Magento\Framework\Mail\Template\TransportBuilder; class Email extends \Magento\Framework\App\Helper\AbstractHelper { /** * @var StateInterface */ protected $inlineTranslation; /** * @var Escaper */ protected $escaper; /** * @var TransportBuilder */ protected $transportBuilder; /** * @var \Psr\Log\LoggerInterface */ protected $logger; /** * @var */ protected $_scopeConfig; public function __construct( Context $context, StateInterface $inlineTranslation, Escaper $escaper, TransportBuilder $transportBuilder, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig ) { parent::__construct($context); $this->inlineTranslation = $inlineTranslation; $this->escaper = $escaper; $this->transportBuilder = $transportBuilder; $this->logger =… Читать далее »

Программное создание настраиваемого продукта Magento

Как вы знаете, настраиваемый продукт magento -это продукт с простыми продуктами, которые отличаются назначенным им самим параметром (атрибутом). Мы можем использовать этот вывод для расширения нашего кода для создания простых продуктов для работы с конфигурируемыми. Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); $simpleProduct = Mage::getModel(‘catalog/product’); try { $simpleProduct ->setWebsiteIds(array(1)) //website ID the product is assigned to, as an array ->setAttributeSetId(20) //ID of a attribute set named ‘default’ ->setTypeId(‘simple’) //product type ->setCreatedAt(Mage::getModel(‘core/date’)->date(‘Y-m-d H:i:s’)) //product creation time ->setSku(‘simple-green’) //SKU ->setName(‘test simple product green color’) //product name ->setWeight(4.0000) ->setStatus(1) //product status (1 — enabled, 2 — disabled) ->setTaxClassId(4) //tax class (0 — none, 1 — default, 2 — taxable, 4 — shipping) ->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH) //catalog and search visibility ->setManufacturer(28) //manufacturer id ->setColor(24) ->setNewsFromDate(’06/26/2014′) //product set as new from ->setNewsToDate(’06/30/2014′) //product set as new to ->setCountryOfManufacture(‘AF’) //country of manufacture (2-letter country code) ->setPrice(11.22) //price in form 11.22 ->setCost(22.33) //price in form 11.22 ->setSpecialPrice(00.44) //special price in form 11.22 ->setSpecialFromDate(’06/1/2014′) //special price… Читать далее »

Защита скриптов от SQL-инъекций и других вариантов взлома

SQL инъекция — это один из самых доступных способов взлома сайта. Суть таких инъекций – внедрение в данные (передаваемые через GET, POST запросы или значения Cookie) произвольного SQL кода. Если сайт уязвим и выполняет такие инъекции, то по сути есть возможность творить с БД (чаще всего это MySQL) что угодно. Как вычислить уязвимость, позволяющую внедрять SQL инъекции? Довольно легко. Например, есть тестовый сайт test.ru. На сайте выводится список новостей, с возможностью детального просмотра. Адрес страницы с детальным описанием новости выглядит так: test.ru/?detail=1. Т.е через GET запрос переменная detail передаёт значение 1 (которое является идентификатором записи в таблице новостей). Изменяем GET запрос на ?detail=1′ или ?detail=1″. Далее пробуем передавать эти запросы серверу, т.е заходим на test.ru/?detail=1′ или на test.ru/?detail=1″. Если при заходе на данные страницы появляется ошибка, значит сайт уязвим на SQL инъекции. Возможные SQL инъекции (SQL внедрения) 1) Наиболее простые — сворачивание условия WHERE к истиностному результату при любых значениях параметров. 2) Присоединение к запросу результатов другого запроса…. Читать далее »

Magento 2 Создание метод доставки

Учебное пособие по созданию методов доставки Magento 2 содержит множество шагов с фрагментами кода, позволяющими с легкостью установить дополнительные способы доставки в магазинах Magento 2. Почему команда Mageplaza предоставляет это руководство сегодня, когда есть некоторые способы доставки? Конечно, Magento 2 — это богатая платформа электронной коммерции, которая также поддерживает несколько способов доставки в процессе оформления заказа. Однако их недостаточно, чтобы вам было удобно. Для того, чтобы быть соразмерным с вашим развитием в будущем, настройка методов доставки очень важна. Поэтому Magento 2 Create Shipping Method создан для того, чтобы все было проще. С простым объяснением, можно следовать шаг за шагом и завершить создание новых методов доставки. Все сгенерированные способы доставки хранятся в админ панели Magento. Перейдите в Магазины> Настройки> Конфигурация> Продажа> Способы доставки, чтобы найти и включить его в витрине магазина. Но подождите, откройте файл /Model/Carries/Generatedshippingmethod.php, в котором вы можете установить конкретную стоимость доставки для каждого метода доставки. А именно, чтобы… Читать далее »

Magento2: создание атрибута multi select категории с пользовательским источником

Для атрибута множественного выбора, вы можете добавить: Исходная модель: [VendorName] \ [ModuleName] \ Model \ Category \ Attribute \ Source \ Custom.php Внутренняя модель [VendorName] \ [ModuleName] \ Model \ Category \ Attribute \ Backend \ Custom.php input_renderer для html-области администратора [VendorName] \ [ModuleName] \ Block \ Adminhtml \ Category \ Helper \ Custom \ Options.php Install file[app/code/[VendorName]/[ModuleName]/Setup/InstallData.php] : <?php namespace [VendorName]\[ModuleName]\Setup; use Magento\Eav\Setup\EavSetup; use Magento\Eav\Setup\EavSetupFactory; use Magento\Framework\Setup\InstallDataInterface; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\ModuleDataSetupInterface; class InstallData implements InstallDataInterface { private $eavSetupFactory; /** * Init * * @param EavSetupFactory $eavSetupFactory */ public function __construct(EavSetupFactory $eavSetupFactory) { $this->eavSetupFactory = $eavSetupFactory; } /** * {@inheritdoc} * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context) { /** @var EavSetup $eavSetup */ $eavSetup = $this->eavSetupFactory->create([‘setup’ => $setup]); /** * Add attributes to the eav/attribute */ $eavSetup->addAttribute( \Magento\Catalog\Model\Category::ENTITY, ‘multi_custom_attribute’, [ ‘type’ => ‘text’, ‘label’ => ‘Custom Attribute Description’, ‘input’ => ‘multiselect’, ‘required’ => false, ‘source’ => ‘[VendorName]\[ModuleName]\Model\Category\Attribute\Source\Custom’, ‘backend’… Читать далее »

Добавить атрибут изображения в категорию в Magento 2

Добавить атрибут изображения в категорию в Magento 2 Здесь рассмотрим, как добавить пользовательский атрибут изображения в категорию. Шаг 1 Создайте файл InstallData.php в папке vendor \ Module \ Setup <?php namespace Vendor\Module\Setup; use Magento\Eav\Setup\EavSetup; use Magento\Eav\Setup\EavSetupFactory; use Magento\Framework\Setup\InstallDataInterface; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\ModuleDataSetupInterface; use Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface; /** * @codeCoverageIgnore */ class InstallData implements InstallDataInterface { /** * EAV setup factory. * * @var EavSetupFactory */ private $_eavSetupFactory; protected $categorySetupFactory; /** * Init. * * @param EavSetupFactory $eavSetupFactory */ public function __construct(EavSetupFactory $eavSetupFactory, \Magento\Catalog\Setup\CategorySetupFactory $categorySetupFactory) { $this->_eavSetupFactory = $eavSetupFactory; $this->categorySetupFactory = $categorySetupFactory; } /** * {@inheritdoc} * * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function install( ModuleDataSetupInterface $setup, ModuleContextInterface $context ) { /** @var EavSetup $eavSetup */ $eavSetup = $this->_eavSetupFactory->create([‘setup’ => $setup]); $setup = $this->categorySetupFactory->create([‘setup’ => $setup]); $setup->addAttribute( \Magento\Catalog\Model\Category::ENTITY, ‘custom_image’, [ ‘type’ => ‘varchar’, ‘label’ => ‘Custom Image’, ‘input’ => ‘image’, ‘backend’ => ‘Magento\Catalog\Model\Category\Attribute\Backend\Image’, ‘required’ => false, ‘sort_order’ => 9, ‘global’ => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE, ‘group’ => ‘General… Читать далее »

Как программно добавить атрибут категории в Magento 2

Как программно добавить атрибут категории в Magento 2 Создать файл InstallData.php Мы начнем с класса InstallData, который находится в app / code / Mageplaza / HelloWorld / Setup / InstallData.php. Содержание для этого файла: <?php namespace Mageplaza\HelloWorld\Setup; use Magento\Eav\Setup\EavSetupFactory; use Magento\Framework\Setup\InstallDataInterface; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\ModuleDataSetupInterface; class InstallData implements InstallDataInterface { private $eavSetupFactory; public function __construct(EavSetupFactory $eavSetupFactory) { $this->eavSetupFactory = $eavSetupFactory; } } Определите метод install () <?php public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context) { } Создайте атрибут категории программно <?php namespace Mageplaza\HelloWorld\Setup; use Magento\Framework\Setup\InstallDataInterface; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\ModuleDataSetupInterface; use Magento\Eav\Setup\EavSetupFactory; class InstallData implements InstallDataInterface { private $eavSetupFactory; public function __construct(EavSetupFactory $eavSetupFactory) { $this->eavSetupFactory = $eavSetupFactory; } public function install( ModuleDataSetupInterface $setup, ModuleContextInterface $context ) { $eavSetup = $this->eavSetupFactory->create([‘setup’ => $setup]); $eavSetup->addAttribute( \Magento\Catalog\Model\Category::ENTITY, ‘mp_new_attribute’, [ ‘type’ => ‘varchar’, ‘label’ => ‘Mageplaza Attribute’, ‘input’ => ‘text’, ‘sort_order’ => 100, ‘source’ => », ‘global’ => 1, ‘visible’ => true, ‘required’ => false, ‘user_defined’… Читать далее »