有人可以告訴我為什么會出現以下錯誤嗎?
決議錯誤:語法錯誤,意外的 '"',在 /app/vendor/magenest/module-instagram-shop/view/frontend/templates/ 中需要 '-' 或識別符號 (T_STRING) 或變數 (T_VARIABLE) 或數字 (T_NUM_STRING)第 161 行的滑塊/滑塊.phtml?
該檔案未修改。PHP 版本:PHP 7.2.30 (cli)(內置:2020 年 4 月 23 日 18:36:52)(NTS)short_open_tag = On。PHPStorm 的代碼檢查器沒有拋出任何問題。
我認為這可能與我的環境設定有關。如果我從檔案中洗掉所有內容(0 長度),則包含此小部件的頁面將正確呈現。該模塊已在后端正確設定。我難住了。非常感謝你!
這條線是
if ($widgetOptions["lazy_load"]) {
完整代碼:
<?php
if ($sliderBlock = $block->getSliderBlock()) {
$widgetOptions = $sliderBlock->getWidgetOptions();
$photos = $sliderBlock->getPhotos();
$slickConfig = $sliderBlock->getData();
$totalItems = $photos->getSize();
$itemsPerSlide = $sliderBlock->getItemsPerSlide();
$prefixElementClass = uniqid();
$storyBlock = $sliderBlock->getStoryBlock(); ?>
<!-- allow show widget if photos is not null -->
<?php if ($photos->getSize() != 0 || $storyBlock != '') { ?>
<div class="photo-slider-wrapper"
id="slider-<?= $block->escapeHtmlAttr($prefixElementClass) ?>"
style="display: none;">
<div class="slider">
<?= $block->getSharedPopupHtml($sliderBlock->getPhotoSource()) ?>
</div>
<div class="block-title">
<h2 class="title"><?= $block->escapeHtml($sliderBlock->getTitle()) ?></h2>
</div>
<?= $storyBlock ?>
<div class="block-content">
<div class="block block-photo-slider slider-list container">
<?php if ($totalItems) { ?>
<div class="photos-wrapper">
<ul class="photos-slick slick-<?= $block->escapeHtmlAttr($prefixElementClass) ?>"
<?php
if ($widgetOptions["rtl"] == "true") {
echo ("dir='rtl'");
}
?>>
<?php
$count = 0;
/** @var \Magenest\InstagramShop\Model\Photo $photo */
foreach ($photos as $photo) {
if (!$sliderBlock->isDefaultTemplate() && $count % $itemsPerSlide == 0) {
echo $block->escapeHtml(
'<li ><ul hljs-variable">$block->getItemsPerSlideClass()
. '-photo">'
);
} ?>
<li class="<?= $block->escapeHtmlAttr($photo->getPhotoId()) ?>
instagram-photo
<?php if ($sliderBlock->isDefaultTemplate()) {
echo 'default';
} ?>"
id="<?= $block->escapeHtmlAttr($photo->getPhotoId()) ?>">
<a href="<?= $block->escapeUrl($photo->getUrl()) ?>"
<?php if (!$sliderBlock->isDefaultTemplate()) {
echo 'hljs-string">"';
} ?>>
<?php if ($widgetOptions["lazy_load"]): ?>
<img data-lazy="<?= $sliderBlock->getPhotoSourceOptimize($photo) ?>"
alt="Magento 2:語法錯誤,意外的 '"',在 phtml 檔案中需要 '-' 或識別符號 (T_STRING) 或變數 (T_VARIABLE) 或數字 (T_NUM_STRING)"/>
<?php else: ?>
<img src="<?= $sliderBlock->getPhotoSourceOptimize($photo) ?>" alt="Magento 2:語法錯誤,意外的 '"',在 phtml 檔案中需要 '-' 或識別符號 (T_STRING) 或變數 (T_VARIABLE) 或數字 (T_NUM_STRING)"/>
<?php endif; ?>
<?php if ($photo->getMediaType() == 'VIDEO') { ?>
<i hljs-string">"
style="
float: right;
margin: 5px;
font-size: 20px;
position: absolute;
right: 0;
top: 0">
</i>
<?php } ?>
<div hljs-string">"></div>
<div hljs-string">">
<span hljs-string">">
<i hljs-string">">
<?= $block->escapeHtml($photo->getLikes()) ?>
</i>
<i hljs-string">">
<?= $block->escapeHtml($photo->getComments()) ?>
</i>
</span>
<p hljs-string">">
<?= $block->getPhotoCaption($photo->getCaption()) ?>
</p>
</div>
</a>
<?= $sliderBlock->getLinkedProductsHtml($photo) ?>
<?= $sliderBlock->getHotspotHtml($photo) ?>
<?php if ($sliderBlock->canShowVideo()) {
echo $sliderBlock->getVideoHtml($photo);
} ?>
</li>
<?php
$count ;
if (!$sliderBlock->isDefaultTemplate()
&& ($count % $itemsPerSlide == 0 || $count == $totalItems)) {
echo ('</ul></li>');
}
} ?>
</ul>
</div>
<?php if ($sliderBlock->displayGalleryButton()): ?>
<div hljs-string">">
<a href="<?= $block->escapeUrl($sliderBlock->getUrl('instagram/gallery/')) ?>"
style="<?= $sliderBlock->getViewFullGalleryCss() ?>"
hljs-string">">
<?= $block->escapeHtml($sliderBlock->getViewFullGalleryTitle()) ?>
</a>
</div>
<?php endif; ?>
<?php } ?>
</div>
</div>
</div>
<?php } ?>
<?php if ($photos->getSize()):
$scriptString = <<<script
require([
'jquery',
'photoModel',
'slick'
], function ($, photoModel) {
let item_number = {$block->escapeHtml($widgetOptions["items_number_desktop"])},
photos = {$sliderBlock->getPhotosData($photos)},
photoSize = {$block->escapeHtml($totalItems)};
$('#slider-{$block->escapeHtml($prefixElementClass)}').on('init', function () {
$(this).attr('style', 'display: block;');
});
$('.photos-slick.slick-{$block->escapeHtml($prefixElementClass)}')
.on('afterChange', function (event, slick, currentSlide) {
//currentSlide is undefined on init -- set it to 0 in this case (currentSlide is 0 based)
let i = (currentSlide ? currentSlide : 0) 1;
// no dots -> no slides
if (slick.\$dots) {
// use dots to get some count information
dotsLength = (slick.\$dots[0].children.length);
if (i == dotsLength) {
$(this).slick('slickGoTo', 0, true);
}
}
if (i <= photoSize) {
let iterator = item_number 20, photo = [];
for (var j = 0; j < iterator; j ) {
if(typeof photos[i item_number] != 'undefined') {
photo.push(photos[i item_number]);
i ;
}
}
photoModel.setPhotos(photo);
}
});
$('.photos-slick.slick-{$block->escapeHtml($prefixElementClass)}').slick({
slidesToShow: {$widgetOptions["items_number_desktop"]},
slidesToScroll: {$widgetOptions["slides_to_scroll"]},
infinite: false,
dots: {$block->escapeHtml($widgetOptions["animation_dots"])},
arrows: {$block->escapeHtml($widgetOptions["animation_arrows"])},
script;
if ($widgetOptions["lazy_load"]) {
$scriptString .= <<<script
lazyLoad: 'ondemand',
script;
}
$scriptString .= <<<script
autoplay: {$block->escapeHtml($widgetOptions["autoplay"])},
autoplaySpeed: {$block->escapeHtml($widgetOptions["autoplaySpeed"])},
rtl: {$block->escapeHtml($widgetOptions["rtl"])},
responsive: [
{
breakpoint: 1023,
settings: {
slidesToShow: {$widgetOptions["items_number_tablet"]},
}
},
{
breakpoint: 640,
settings: {
slidesToShow: {$widgetOptions["items_number_mobile"]},
}
}
]
}).slick('setPosition');
});
require(['mage/url'], function (urlBuilder) {
return urlBuilder.setBaseUrl('{$block->escapeUrl($sliderBlock->getBaseUrl())}');
});
script;
?>
<?= isset($secureRenderer)
? $secureRenderer->renderTag('script', [], $scriptString, false)
: "<script>$scriptString</script>" ?>
<?php
$canShowVideo = $sliderBlock->canShowVideo() ? 'true' : 'false';
$scriptString = <<<script
{
"#slider-{$block->escapeHtml($prefixElementClass)}": {
"instagramPopup": {
"photos" : {$sliderBlock->getPhotosData($photos, true)},
"canShowVideo": {$canShowVideo},
"prefixContainer":".slider",
"prefixElement":"ul.slick-{$block->escapeHtml($prefixElementClass)} li",
"photoType": {$block->escapeHtml($sliderBlock->getPhotoType())},
"prefixElementClass": "#slider-{$block->escapeHtml($prefixElementClass)}",
"baseMediaUrl": "{$block->escapeUrl($block->getBaseMediaUrl())}"
}
}
}
script;
?>
<?= isset($secureRenderer)
? $secureRenderer->renderTag('script', ['type' => 'text/x-magento-init'], $scriptString, false)
: "<script type='text/x-magento-init'>$scriptString</script>" ?>
<?php elseif ($storyBlock != ''):
$scriptString = <<<script
require(['jquery'], function ($) {
$('#slider-{$block->escapeHtml($prefixElementClass)}').css('display', 'block');
})
script;
?>
<?= isset($secureRenderer)
? $secureRenderer->renderTag('script', [], $scriptString, false)
: "<script>$scriptString</script>" ?>
<?php endif; ?>
<?php
} ?>
uj5u.com熱心網友回復:
該代碼可能不是為 7.2 撰寫的,但由于您使用的是 7.2,因此script;在該行的開頭移動就足夠了:
[...]
結束識別符號可以用空格或制表符縮進,在這種情況下,縮進將從檔案字串中的所有行中洗掉。在 PHP 7.3.0 之前,結束識別符號必須從行的第一列開始。
[...]
Heredoc 的檔案頁面
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/381747.html
