Проблема с Magento 2.2.4 - кавычки в названии продукта разрывают страницы продукта


Я только что установил Magento 2.2.4, чтобы попробовать, и до сих пор заметил несколько проблем в первые полчаса. Мне было интересно, является ли это просто моей пользовательской установкой или происходит для кого-то еще.

Атрибут изображения продукта alt , похоже, загружается асинхронно и добавляется под изображением продукта. Страница продукта, похоже, прекращает обработку javascript как раз перед этим, однако, ломает страницу. Похоже, это не сработает, если цитата метка существует в названии продукта (например, линейка 12 дюймов (30 см)), вызывающая следующую ошибку:

Uncaught SyntaxError: Unexpected token ( in JSON at position 129
at JSON.parse (<anonymous>)
at getData (main.js:58)
at Array.map (<anonymous>)
at HTMLDocument.apply (main.js:74)
at fire (jquery.js:3232)
at Object.add [as done] (jquery.js:3291)
at jQuery.fn.init.jQuery.fn.ready (jquery.js:3542)
at jQuery.fn.init (jquery.js:2967)
at new jQuery.fn.init (jquery-migrate.js:225)
at jQuery (jquery.js:75)

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

Похоже, что цитаты в названиях продуктов не экранируются для панировочных сухарей, так как регистрация объекта непосредственно перед ошибкой показана ниже:

{
"breadcrumbs": {
    "categoryUrlSuffix": ".html",
    "useCategoryPathInUrl": 0,
    "product": "12" Ruler (30cm)"
}
}
Author: harri, 2018-05-03

1 answers

На данный момент у меня есть переопределенный файл для хлебных крошек в моей собственной теме.

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
/** @var \Magento\Theme\Block\Html\Breadcrumbs $block */
/** @var \Magento\Catalog\ViewModel\Product\Breadcrumbs $viewModel */
$viewModel = $block->getData('viewModel');
?>
<div class="breadcrumbs" data-mage-init='{
    "breadcrumbs": {
        "categoryUrlSuffix": "<?= $block->escapeHtml($viewModel->getCategoryUrlSuffix()); ?>",
        "useCategoryPathInUrl": <?= (int)$viewModel->isCategoryUsedInProductUrl(); ?>,
        "product": "<?= htmlspecialchars($block->escapeHtml($viewModel->getProductName())); ?>"
    }
}'>
</div>

Замените строку 14, добавив функцию htmlspecialchars для форматирования предложений в названии продукта в json-файле breadcrumbs как &quot:

Оригинал:

"product": "<?= $block->escapeHtml($viewModel->getProductName()); ?>"

Поставщик/magento/модуль-каталог/просмотр/интерфейс/шаблоны/продукт/панировочные сухари.phtml

Заменен на:

"product": "<?= htmlspecialchars($block->escapeHtml($viewModel->getProductName())); ?>"

App/design/frontend/ThemeVendor/ThemeName/Magento_Catalog/templates/product/breadcrumbs.phtml

Вероятно, есть более элегантный способ исправить это, однако на данный момент это будет сделано.

 6
Author: harri, 2018-05-03 09:57:39