Magento 2'de Varsayılan Zengin Parçacıklar İşlevselliğini Gizleme
Yayınlanan: 2016-09-08Bu sayfaya geldiyseniz, Zengin Parçacıkların ne olduğunu ve Magento 2'de nasıl çalıştıklarını bilmelisiniz.
Genel olarak, yapılandırılmış veri işaretlemesi, e-Ticaret platformunun ikinci versiyonunun oldukça havalı bir özelliğidir. Schema.org, satıcıların site arama sonuçlarını yalnızca birkaç tıklamayla fiyat, derecelendirme, inceleme veya diğer biçimlendirme değerleriyle donatmasına olanak tanıyan varsayılan şablon olarak eklendi.
Ancak, varsayılan zengin snippet'ler işlevini devre dışı bırakmak isteyebileceğiniz bazı durumlar vardır. Bunun nedenleri şunlar olabilir:
- fiyat formatı sorunları — şu anda Magento 2 tarafından kullanılan format, aşağıdaki hatayı tetikleyebilecek en son schema.Org gereksinimlerine uymuyor:
- bazı 3 boyutlu taraf yapılandırılmış veri biçimlendirme uzantılarıyla çakışıyor ,
- Google ürünleriyle ilgili sorunlar — bu tür ürünler farklı bir fiyatla (ör. MSRP) gelebilir ve bu da varsayılan Magento 2 zengin snippet'leriyle çakışmaları tetikler.
Maalesef, v.2.1.1'e kadar, varsayılan zengin snippet işlevselliğini Yapılandırma ayarları aracılığıyla devre dışı bırakmak mümkün değildir. Bu nedenle, bazı geçici çözüm çözümüne ihtiyacınız var.
Bu yazıda, Magento 2 için biraz ama çok kullanışlı bir uzantı oluşturarak varsayılan yapılandırılmış veri işaretlemesini nasıl devre dışı bırakacağınızı anlatacağım.
İlk olarak, uzantının ortamını oluşturalım.
Uzantıyı Oluşturma
Buna ' Owner_Custom ' diyelim (yine de istediğiniz herhangi bir ismi seçebilirsiniz).
Ardından, uygulamaya/koda gidin ve orada bir ' Sahip ' klasörü oluşturun. Bu klasörün içinde ' Custom ' adında yeni bir tane oluşturun - bu, uzantımızın kök klasörü olacaktır.
Buradan aşağıdaki dosyaları oluşturuyoruz:
DOSYA: kayıt.php
<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Sahip_Özel', __DIR__ );
DOSYA: etc/module.xml
<?xml version="1.0"?> <config xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Owner_Custom" setup_version="0.0.1"/> </config>
Bir sonraki adımda, uzantıyı Konsol aracılığıyla yükleyin:
php bin/magento kurulumu:yükseltme — oluşturulan tutma
Her şey bitti, şimdi uzantımız Yönetici panelinin altındaki tüm modüller listesinde bulunabilir:
php bin/magento modülü:durum
2. Varsayılan veri işaretlemesini kaldırma
Uzantının ortamı hazır olduğunda, tüm sihrin gerçekleştiği bir düzen dosyası oluşturmaya başlayabiliriz.
DOSYA: görünüm/ön uç/düzen/catalog_product_view.xml
<?xml version="1.0"?> <page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <body> <attribute name="itemtype" remove="true" ifconfig="mageworx_seo/markup/product/rs_enabled"/> <attribute name="itemscope" remove="true" ifconfig="mageworx_seo/markup/product/rs_enabled"/> </body> </sayfa>
ÖNEMLİ
Dosyada her değişiklik yaptığınızda önbelleği güncellemeyi unutmayın.
Kodun bu bölümünde, yapılandırılmış veri işaretlemesini biçimlendirmek için kullanılan parametreleri değiştireceğiz. Bunu uyguladıktan sonra, işaretleme yalnızca teklifimizi içerecektir, örneğin:
Gördüğünüz gibi, bu manipülasyondan sonra Google, ' Teklif ' bölümünde herhangi bir uyarı atmayı bırakıyor.
Biraz daha kod satırı ekleyelim:
<?xml version="1.0"?> <page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <body> <attribute name="itemtype" remove="true"/> <attribute name="itemscope" remove="true"/> <referenceBlock name="product.price.final"> <argümanlar> <argument name="zone" xsi:type="boolean">yanlış</argument> </argümanlar> </referenceBlock> </body> </sayfa>
Bu parçayı ekleyerek, bu bloğu bir 'Teklif' olarak işaretlemekten sorumlu olan parametreyi kaldırdık. Sonuç olarak, Google araçları burada Zengin Snippet'ler için kullanılabilecek herhangi bir veri algılamaz:
Ve yapılacak son bir dokunuş kaldı.
Tüm ürün türleri için varsayılan zengin snippet'leri devre dışı bırakmak için 2 dosya daha eklemeniz gerekir. İndirilebilir ürünler için bu:
DOSYA: görünüm/ön uç/düzen/catalog_product_view_type_downloadable.xml
<?xml version="1.0"?> <page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <body> <referenceContainer name="product.price.final.copy"> <argümanlar> <argument name="zone" xsi:type="boolean">yanlış</argument> </argümanlar> </referenceContainer> </body> </sayfa>
Bu da paket ürünler içindir:
DOSYA: görünüm/ön uç/düzen/catalog_product_view_type_bundle.xml
<?xml version="1.0"?> <page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <body> <referenceBlock name="product.price.render.bundle.customization"> <argümanlar> <argument name="zone" xsi:type="boolean">yanlış</argument> </argümanlar> </referenceBlock> </body> </sayfa>
ÖNEMLİ
Magento mağazanızdaki bazı ürünler zaten incelendiyse, bu incelemenin varsayılan işaretlemeye dahil edileceğini unutmayın. Bu, aşağıdaki hatayı tetikleyebilir:
Magento tema dosyalarında kodlanmış olduğundan, silmek için bu dosyayı yeniden yazmanız gerekir:
satıcı/magento/modül-inceleme/görünüm/ön uç/şablonlar/helper/summary.phtml
Dosya içeriğini şuraya kopyalayın:
app/design/frontend/[paket]/[tema]/templates/helper/summary.phtml
ve işaretlemeyi silin:
(itemprop=“aggregateRating” itemscope itemtype=“https://schema.org/AggregateRating” ; itemprop=“bestRating” ; itemprop=“ratingValue” ; itemprop=“reviewCount” )
Sonuç olarak, şunu almalısınız (Magento 2.1x için):
<?php /** * Telif hakkı 2016 Magento. Tüm hakları Saklıdır. * Lisans ayrıntıları için COPYING.txt'ye bakın. */ // @codingStandardsIgnoreFile ?> <?php $url = $block->getReviewsUrl() . '#inceleme'; ?> <?php $urlForm = $block->getReviewsUrl() . '#inceleme-formu'; ?> <?php if ($block->getReviewsCount()): ?> <?php $rating = $block->getRatingSummary(); ?> <div class="product-reviews-summary<?php echo !$derecelendirme ? ' derecelendirme yok' : ''?>"> <?php if ($puan):?> <div class="rating-özeti"> <span class="label"><span><?php /* @escapeNotVerified */ echo __('Rating') ?>:</span></span> <div class="rating-result" title="<?php /* @escapeNotVerified */ echo $rating; ?>%"> <span><span><span><?php /* @escapeNotVerified */ echo $derecelendirme; ?></span>% <span>100</span></span></span> </div> </div> <?php endif;?> <div class="inceleme-eylemler"> <a class="action view" href="<?php /* @escapeNotVerified */ echo $url ?>"><span><?php /* @escapeNotVerified */ echo $block->getReviewsCount() ?>< /span> <span><?php /* @escapeNotVerified */ echo($block->getReviewsCount() == 1) ? __('İnceleme') : __('İncelemeler') ?></span></a> <a class="action add" href="<?php /* @escapeNotVerified */ echo $urlForm ?>"><?php /* @escapeNotVerified */ echo __('İncelemenizi Ekleyin') ?></a > </div> </div> <?php elseif ($block->getDisplayIfEmpty()): ?> <div class="ürün-inceleme-özeti boş"> <div class="inceleme-eylemler"> <a class="action add" href="<?php /* @escapeNotVerified */ echo $urlForm; ?>"> <?php /* @escapeNotVerified */ echo __('Bu ürünü ilk inceleyen siz olun') ?> </a> </div> </div> <?php endif; ?>
Ve son olarak, özel uzantımızı şu şekilde etkinleştirebilir/devre dışı bırakabilirsiniz:
php bin/magento modülü:Sahip_Custom'u etkinleştir
php bin/magento modülü: Owner_Custom'u devre dışı bırakın
Ah, ve tüm değişikliklerin yürürlüğe girmesi için önbelleği yenilemeyi unutmayın.
Temelde bu.
Bu konuyla ilgili herhangi bir sorunuz varsa, yorumlarınızı aşağıdaki bölümde bırakmaktan çekinmeyin.