◄ Помощь ► Magento 2

Здравствуйте! Нужна помощь
Хотим клонировать стандартную тему luma для magento 2.2.2
app/design/frontend/seacloud/seacloud_theme создали структуру, всё делали по докам magento
-etc
-i18n
-web
-composer.json
{
"name": "magento/theme-frontend-seacloud",
"description": "N/A",
"require": {
"php": "~5.5.0|~5.6.0|~7.0.0",
"magento/theme-frontend-luma": "100.0.*",
"magento/framework": "100.0.*"
},
"type": "magento2-theme",
"version": "100.0.1",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"autoload": {
"files": [
"registration.php"
]
}
}

-registration.php
<?php
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::THEME,
'frontend/seacloud/seacloud_theme',
__DIR__
);



-theme.xml

<theme xmlns:xsi="Для просмотра ссылки Войди или Зарегистрируйся" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd">
<title>seacloud_theme</title>
<parent>Magento/luma</parent>
<media>
<preview_image>media/preview.jpg</preview_image>
</media>
</theme>

и также /var/www/seacloudcouture.com/public_html/app/etc/modules
-etc
--adminhtml
---di.xml
--module.xml
-composer.json
-registration.php

---di.xml

<config xmlns:xsi="Для просмотра ссылки Войди или Зарегистрируйся" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">

<type name="Magento\Theme\Model\View\Design">
<arguments>
<argument name="themes" xsi:type="array">
<item name="adminhtml" xsi:type="string">adminhtml/modules_Magento_Backend</item>>
</argument>
</arguments>
</type>
</config>

-- module.xml

<module name="modules_Magento_Backend" setup_version="2.2.2">
<sequence>
<module name="Magento_Theme"/>
<module name="Magento_Community"/>
</sequence>
</module>

composer.json

{
"name": "magento/modules-Magento-Backend",
"description": "A Magento 2 module",
"type": "magento2-module",
"version": "1.0.0",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"require": {
"php": "~5.5.0|~5.6.0|~7.0.0"
},
"autoload": {
"files": [ "registration.php" ],
"psr-4": {
"Magento\\modules_Magento_Backend\\": ""
}
}
}

registration.php
<?php
/**
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Magento_modules_Magento_Backend',
__DIR__
);

frontend работает обыкновенно с этими изменениями а вот админка не открывается совсем, убираем все registration.php - всё работает
подскажите пожалуйста как решить проблему
заранее благодарны!
 
Чтобы портянки были читабельны,
1. Заворачивай код в код, и с отступами, вот так:

Код:
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::THEME,
    'frontend/Magento/luma',
    __DIR__
);

2. Указывай полный путь к файлу относительно корня установки,
/app/design/... и т.п.

---

То, что начиная отсюда
и также /var/www/seacloudcouture.com/public_html/app/etc/modules

неправильно

Если это модуль, то должен быть тут
/app/code/...

Для просмотра ссылки Войди или Зарегистрируйся

p.s. В помощь - рыба

Для просмотра ссылки Войди или Зарегистрируйся

Нужно только поменять неймспейсы под папку/название модуля
 
Последнее редактирование:
Здравствуйте! Нужна помощь
Хотим клонировать стандартную тему luma для magento 2.2.2
app/design/frontend/seacloud/seacloud_theme создали структуру, всё делали по докам magento
-etc
-i18n
-web
-composer.json
{
"name": "magento/theme-frontend-seacloud",
"description": "N/A",
"require": {
"php": "~5.5.0|~5.6.0|~7.0.0",
"magento/theme-frontend-luma": "100.0.*",
"magento/framework": "100.0.*"
},
"type": "magento2-theme",
"version": "100.0.1",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"autoload": {
"files": [
"registration.php"
]
}
}

-registration.php
<?php
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::THEME,
'frontend/seacloud/seacloud_theme',
__DIR__
);



-theme.xml

<theme xmlns:xsi="Для просмотра ссылки Войди или Зарегистрируйся" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd">
<title>seacloud_theme</title>
<parent>Magento/luma</parent>
<media>
<preview_image>media/preview.jpg</preview_image>
</media>
</theme>

и также /var/www/seacloudcouture.com/public_html/app/etc/modules
-etc
--adminhtml
---di.xml
--module.xml
-composer.json
-registration.php

---di.xml

<config xmlns:xsi="Для просмотра ссылки Войди или Зарегистрируйся" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">

<type name="Magento\Theme\Model\View\Design">
<arguments>
<argument name="themes" xsi:type="array">
<item name="adminhtml" xsi:type="string">adminhtml/modules_Magento_Backend</item>>
</argument>
</arguments>
</type>
</config>

-- module.xml

<module name="modules_Magento_Backend" setup_version="2.2.2">
<sequence>
<module name="Magento_Theme"/>
<module name="Magento_Community"/>
</sequence>
</module>

composer.json

{
"name": "magento/modules-Magento-Backend",
"description": "A Magento 2 module",
"type": "magento2-module",
"version": "1.0.0",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"require": {
"php": "~5.5.0|~5.6.0|~7.0.0"
},
"autoload": {
"files": [ "registration.php" ],
"psr-4": {
"Magento\\modules_Magento_Backend\\": ""
}
}
}

registration.php
<?php
/**
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Magento_modules_Magento_Backend',
__DIR__
);

frontend работает обыкновенно с этими изменениями а вот админка не открывается совсем, убираем все registration.php - всё работает
подскажите пожалуйста как решить проблему
заранее благодарны!
Закидываешь это дело в архив по структуре, потом копируешь
с vendor\magento\theme-frontend-luma все папки
(только без корневых файлов:
composer.json
registration.php
theme.xml
- они будут уже в архиве)
 

Вложения

  • test_luma.zip
    2,2 KB · Просмотры: 6
Каждый пользователь Magento стакивается с этим вопросом. Мой опыт: Самостоятельно изучить где-что лежит и как менять можно, но проблемно: изменишь и забудешь. При обновлении/переустановке может всё слететь. Лучше обойтись модулем One Step Checkout. Для M2 они имеют невменяемую цену, причём функционал может быть весьма посредственным. Из известных могу порекомендовать FireCheckOut и Amasty. Но, на мой взгляд, самый удачный будет в сравнении с "мэтрами" по цене/функционалу:Для просмотра ссылки Войди или Зарегистрируйся
А есть ли из One Step Checkout такие, где можно полностью кастомизировать поля? Посмотрел сам один из платных, что есть на форуме, Для просмотра ссылки Войди или Зарегистрируйся, там воде можно manage fields, но по сути очень ограниченно: вижу что можно убрать что то или сдвинуть до 50%, но не вижу, как добавить если поля нет в доступных, как его переименовать даже не вижу.

И еще вопрос, несколько в другом. Касается темы porto, разрабы обновили тему радикально, с версии 3 тема идет под bootstrap 4. Я неспешно несколько месяцев кастомизировал порто под свой дизайн - все было конечно под bootstrap 3. После обновления все искривилось до невозможности, вижу, что легче все свое с нуля сделать, чем подгонять. Но это куча времени...
Что посоветуете? Откатиться на последнюю версию, что еще на bootstrap 3 была, или все таки смириться и переверстывать?

Пройтись по контрольному списку ...
Для просмотра ссылки Войди или Зарегистрируйся
Это хорошо все, сетку изменить не долго, проблема в дочерних элементах сетки. И у них в демо контенте, и я подгонял все под родительские флоты, так что теперь, когда родительские элементы на флексах, все разлетается куда хочет в одном месте, а в другом наоборот собирается в одну колонку. Я своих только стилей около 1000 строк кода добавил, и еще сколько из демо контента, и оно все там у них тоже не в одном файле а разбросано.... в том и суть, что работа была довольно кропотливой, а теперь ищи все, что заблочено, и прописывай флексы...
потому я и говорю, что займет времени не меньше, чем с нуля все переписать, а вот времени то и жаль...
ладно, спасибо, буду смотреть...
 
Последнее редактирование модератором:
Что посоветуете?

Пройтись по контрольному списку ...
Для просмотра ссылки Войди или Зарегистрируйся

Самое интересное, что флексбокс грид уже по сути устарел.
Для просмотра ссылки Войди или Зарегистрируйся

Грид, который grid наверно где-то через год появится в foundation, и еще через 2-3 года в бутстрапе
foundation сейчас поддерживает параллельно три грида - флоат, флексбокс, и xy, который по сути тот же флексбокс но с другими классами.
Т.е. сверстал на грид во флоат, можешь его оставить и параллельно использовать флексбокс-грид.
И что еще круче, все это также работает поверх 3 бутстрапа на Yii2 )
 
Последнее редактирование модератором:
Всем привет
при верстке м2 у меня не отображаются файлы источников less - просто style-m.css или style-l.css как настроить маппинг в хроме?

Скорей всего не генерится сам маппинг при компилляции.
Допустим, компиллятор сохраняет css в папку

/app/design/frontend/<Vendor>/<Theme>/web/css/<mycssframework>/app.css

Компиллятор в зависимости от настроек или впихивает сорсмэп одной строчкой в css-файл,
или добавляет в конец css такую ссылку
/*# sourceMappingURL=app.css.map */
и сохраняет отдельный файл мэппинга в той же папке

При запуске static-content:deploy в pub копируется содержимое web, т.е. и *.css и *.css.map
А дальше браузер при включенной настроке или находит файл сорсмэпа или берет его прямо из css.

Поэтому см. в первую очередь, генерится ли сорсмэп вообще.

Мадженто, судя по докам компилирует грантом
Для просмотра ссылки Войди или Зарегистрируйся

Никогда не пользовался грантом, но судя по дефолтному конфигу, сорсмэпа там нет

Код:
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

'use strict';

/**
* Define Themes
*
* area: area, one of (frontend|adminhtml|doc),
* name: theme name in format Vendor/theme-name,
* locale: locale,
* files: [
* 'css/styles-m',
* 'css/styles-l'
* ],
* dsl: dynamic stylesheet language (less|sass)
*
*/
module.exports = {
    blank: {
        area: 'frontend',
        name: 'Magento/blank',
        locale: 'en_US',
        files: [
            'css/styles-m',
            'css/styles-l',
            'css/email',
            'css/email-inline'
        ],
        dsl: 'less'
    },
    luma: {
        area: 'frontend',
        name: 'Magento/luma',
        locale: 'en_US',
        files: [
            'css/styles-m',
            'css/styles-l'
        ],
        dsl: 'less'
    },
    backend: {
        area: 'adminhtml',
        name: 'Magento/backend',
        locale: 'en_US',
        files: [
            'css/styles-old',
            'css/styles'
        ],
        dsl: 'less'
    }
};


Поэтому или разбирайся, как подключить сорсмэп в гранте

или устанавливай галп c сорсмэпом, браузерсинком и прочими пирогами.
ИМХО - лучший вариант

в галпе это выглядит примерно так

Код:
gulp.task('sass', function() {
return gulp.src('/path-to-scss')
   .pipe($.sourcemaps.init())

      //output

  .pipe($.sourcemaps.write('./'))
  .pipe(gulp.dest('/path-to-css'));
});

p.s.
в /grunt/config/less.js упоминается sourceMap: true
Разобрался с грантом - все отлично теперь, особенно понравилась команда grunt watch - генерит верстку на ходу.

Всё так как по ссылке. Она (таблица ) была и вот её не стало. Причём ведём две параллельные дефолтные темы/базы. В одной всё нормуль, в этой куда-то всё пропало. Но это после обновления с 2.2.2 на 2.2.3. В одной базе таблица есть во второй нет.
выгрузи таблицу с 2.2.2 и загрузи ее в 2.2.3

пробовал. не грузиться
что пишет хоть? как выгружал и как загружал?

что пишет хоть? как выгружал и как загружал?
ну или руками создай по той же структуре
 
Последнее редактирование модератором:
Всем привет
при верстке м2 у меня не отображаются файлы источников less - просто style-m.css или style-l.css как настроить маппинг в хроме?

Скорей всего не генерится сам маппинг при компилляции.
Допустим, компиллятор сохраняет css в папку

/app/design/frontend/<Vendor>/<Theme>/web/css/<mycssframework>/app.css

Компиллятор в зависимости от настроек или впихивает сорсмэп одной строчкой в css-файл,
или добавляет в конец css такую ссылку
/*# sourceMappingURL=app.css.map */
и сохраняет отдельный файл мэппинга в той же папке

При запуске static-content:deploy в pub копируется содержимое web, т.е. и *.css и *.css.map
А дальше браузер при включенной настроке или находит файл сорсмэпа или берет его прямо из css.

Поэтому см. в первую очередь, генерится ли сорсмэп вообще.

Мадженто, судя по докам компилирует грантом
Для просмотра ссылки Войди или Зарегистрируйся

Никогда не пользовался грантом, но судя по дефолтному конфигу, сорсмэпа там нет

Код:
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

'use strict';

/**
* Define Themes
*
* area: area, one of (frontend|adminhtml|doc),
* name: theme name in format Vendor/theme-name,
* locale: locale,
* files: [
* 'css/styles-m',
* 'css/styles-l'
* ],
* dsl: dynamic stylesheet language (less|sass)
*
*/
module.exports = {
    blank: {
        area: 'frontend',
        name: 'Magento/blank',
        locale: 'en_US',
        files: [
            'css/styles-m',
            'css/styles-l',
            'css/email',
            'css/email-inline'
        ],
        dsl: 'less'
    },
    luma: {
        area: 'frontend',
        name: 'Magento/luma',
        locale: 'en_US',
        files: [
            'css/styles-m',
            'css/styles-l'
        ],
        dsl: 'less'
    },
    backend: {
        area: 'adminhtml',
        name: 'Magento/backend',
        locale: 'en_US',
        files: [
            'css/styles-old',
            'css/styles'
        ],
        dsl: 'less'
    }
};


Поэтому или разбирайся, как подключить сорсмэп в гранте

или устанавливай галп c сорсмэпом, браузерсинком и прочими пирогами.
ИМХО - лучший вариант

в галпе это выглядит примерно так

Код:
gulp.task('sass', function() {
return gulp.src('/path-to-scss')
   .pipe($.sourcemaps.init())

      //output

  .pipe($.sourcemaps.write('./'))
  .pipe(gulp.dest('/path-to-css'));
});

p.s.
в /grunt/config/less.js упоминается sourceMap: true

Проверь, есть ли в базе таблица design_config_grid_flat
В ней по умолчанию дефолтные темы

Для просмотра ссылки Войди или Зарегистрируйся

Не, знаю, поможет или нет, но попробуй выключить в настройках флет тейблс. А потом включить опять.
Может она сгенерится заново ?

особенно понравилась команда grunt watch

Попробуй browsersync
Не только генерит, но автоматом обновляет в браузере без перезагрузки страницы

Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование модератором:
Коллеги, нужна помощь - через move елемента catalog.navigation.state - не срабаытвает
upload_2018-3-10_2-10-49.png

А чуть подробней - сам лейаут с мувом ?

p.s.

1. проверь название папки модуля в теме Magento_LayeredNavigation
2. проверь название лейаута:
\Magento_LayeredNavigation\layout\catalog_category_view_type_layered.xml

3. Иструкция move должна быть на уровне body

<body>
<move element="catalog.navigation.state" destination="page.top" after="-" />
</body>

Назначение даю навскидку
Сегодня попробую, спасибо. Layer дефолтных

А чуть подробней - сам лейаут с мувом ?

p.s.

1. проверь название папки модуля в теме Magento_LayeredNavigation
2. проверь название лейаута:
\Magento_LayeredNavigation\layout\catalog_category_view_type_layered.xml

3. Иструкция move должна быть на уровне body

<body>
<move element="catalog.navigation.state" destination="page.top" after="-" />
</body>

Назначение даю навскидку
Спасибо за наводку - но не пашет (тоже самое)

В таких случаях:

1. Сделай сквозной поиск в папке установки по названию элемента, который перемещается и названию элемента, внутрь которого нужно переместить.
Т.е. найди все лейауты, которые меняют эти элементы.
Последовательность применения лейаутов сторонними модулями зависит от sequence
Для просмотра ссылки Войди или Зарегистрируйся

2. Если все же нужно посмотреть итоговый лейаут, где все лейауты слиты в одно,
или вешаешь плагин around на afterGenerateBlock() из класса Magento\Framework\View\Layout\Builder
или обработчик события layout_generate_blocks_after, которое случается в generateLayoutBlocks() в том же классе

Примерно как здесь
Для просмотра ссылки Войди или Зарегистрируйся

Итоговый xml достаешь с помощью
layout->getXmlString();
а дальше запись в логгер, вызов ошибки с выводом дампа или просмотр прямо в дебаггере.

3. Не все элементы можно свободно переместить с помощью move. Элементы, вложенные в блоки используются в блоках.
В данном случае у меня элемент переместился, но это тут же
вызвало ошибку родительского блока Magento\LayeredNavigation\Block\Navigation

Он обращается к элементу catalog.navigation.state (который as state)

Код:
    /**
     * Get url for 'Clear All' link
     *
     * @return string
     */
    public function getClearUrl()
    {
        return $this->getChildBlock('state')->getClearUrl();
    }

т.е. в этом случае нужно экстендить блоки, которые обращаются к дочернему перемещаемому блоку
и вместо
$this->getChildBlock('state')
$this->getChildHtml('state')

нужно обращаться

$layout->getBlock($name);
$layout->renderElement($name, $useCache);
см. для примера содержимое getChildBlock() и getChildHtml() в Magento\Framework\View\Element\AbstractBlock

также см. в темплейты, которые выводят блок
в /layer/view.phtml

блок state вшит:
Код:
<div class="block-content filter-content">
            <?= $block->getChildHtml('state') ?>
......

Поэтому нужно экстендить view.phtml, и комментить эту строчку

Если для вывода этого блока в новом элементе (куда он перемещается), есть отдельный темплейт
там можно вывести его примерно так:

Код:
echo $this->getLayout()
          ->createBlock('Magento\LayeredNavigation\Block\Navigation\State')
          ->setTemplate('Magento_LayeredNavigation::layer/state.phtml')
          ->toHtml();

В этом случае можно не перемещать блок в лейауте с помощью move

В общем и целом, move хорошо подходит для перемещения из контейнера в контейнер.
Чайлд блок внутри другого блока часто связан как-то с парентом
То что нужно, спасибо огромное
 
Последнее редактирование модератором:
А чуть подробней - сам лейаут с мувом ?

p.s.

1. проверь название папки модуля в теме Magento_LayeredNavigation
2. проверь название лейаута:
\Magento_LayeredNavigation\layout\catalog_category_view_type_layered.xml

3. Иструкция move должна быть на уровне body

<body>
<move element="catalog.navigation.state" destination="page.top" after="-" />
</body>

Назначение даю навскидку

В таких случаях:

1. Сделай сквозной поиск в папке установки по названию элемента, который перемещается и названию элемента, внутрь которого нужно переместить.
Т.е. найди все лейауты, которые меняют эти элементы.
Последовательность применения лейаутов сторонними модулями зависит от sequence
Для просмотра ссылки Войди или Зарегистрируйся

2. Если все же нужно посмотреть итоговый лейаут, где все лейауты слиты в одно,
или вешаешь плагин around на afterGenerateBlock() из класса Magento\Framework\View\Layout\Builder
или обработчик события layout_generate_blocks_after, которое случается в generateLayoutBlocks() в том же классе

Примерно как здесь
Для просмотра ссылки Войди или Зарегистрируйся

Итоговый xml достаешь с помощью
layout->getXmlString();
а дальше запись в логгер, вызов ошибки с выводом дампа или просмотр прямо в дебаггере.

3. Не все элементы можно свободно переместить с помощью move. Элементы, вложенные в блоки используются в блоках.
В данном случае у меня элемент переместился, но это тут же
вызвало ошибку родительского блока Magento\LayeredNavigation\Block\Navigation

Он обращается к элементу catalog.navigation.state (который as state)

Код:
    /**
     * Get url for 'Clear All' link
     *
     * @return string
     */
    public function getClearUrl()
    {
        return $this->getChildBlock('state')->getClearUrl();
    }

т.е. в этом случае нужно экстендить блоки, которые обращаются к дочернему перемещаемому блоку
и вместо
$this->getChildBlock('state')
$this->getChildHtml('state')

нужно обращаться

$layout->getBlock($name);
$layout->renderElement($name, $useCache);
см. для примера содержимое getChildBlock() и getChildHtml() в Magento\Framework\View\Element\AbstractBlock

также см. в темплейты, которые выводят блок
в /layer/view.phtml

блок state вшит:
Код:
<div class="block-content filter-content">
            <?= $block->getChildHtml('state') ?>
......

Поэтому нужно экстендить view.phtml, и комментить эту строчку

Если для вывода этого блока в новом элементе (куда он перемещается), есть отдельный темплейт
там можно вывести его примерно так:

Код:
echo $this->getLayout()
          ->createBlock('Magento\LayeredNavigation\Block\Navigation\State')
          ->setTemplate('Magento_LayeredNavigation::layer/state.phtml')
          ->toHtml();

В этом случае можно не перемещать блок в лейауте с помощью move

В общем и целом, move хорошо подходит для перемещения из контейнера в контейнер.
Чайлд блок внутри другого блока часто связан как-то с парентом
 
Последнее редактирование модератором:
Коллеги, нужна помощь - как вывести в списке товаров атрибуты товара, которые разрешены в листинге и(или) доступны для выбора фильтра (фильтруемые)

что подразумевается под списком товаров ?
т.е. листинг товаров в категории + скрин как пример с атрибутами
upload_2018-3-11_17-5-40.png

Лейаут catalog_category_view.xml , скорей всего

Код:
<block class="Magento\Catalog\Block\Product\ListProduct" name="category.products.list" as="product_list" template="Magento_Catalog::product/list.phtml">
...
</block>

Чтобы точно вычислить блок:
Store > Configuration > Advanced > Developer > Debug > Enabled Template Path Hints for Storefront > Yes
Store > Configuration > Advanced > Developer > Debug > Add Block Names to Hints > Yes

Далее ищешь по названию блока лейаут/блок/темплейт ..
Спасибо добрый человек. немножко переиграл - сделал через отдельный модуль. Вот что вышло)
upload_2018-3-11_22-30-9.png

Спасибо добрый человек. немножко переиграл - сделал через отдельный модуль. Вот что вышло)
upload_2018-3-11_22-30-9.png
Переупаковал в отдельный модуль, мож кому пригодится

Раз такая песня - задам еще вопрос
upload_2018-3-12_21-40-35.png
 

Вложения

  • Catalog_List_Attributes.zip
    8,9 KB · Просмотры: 11
Последнее редактирование модератором:
Назад
Сверху