Di luar kotak, tidak, tidak ada cara untuk mengecualikan produk tertentu dari sitemap yang dihasilkan oleh Catalog -> Google Sitemap
fitur Magento .
Jika saya akan melakukan hal ini secara terprogram, versi modern Magento (dicentang di cabang 1.7.x, ini mungkin ada di versi sebelumnya / EE) menggunakan kelas model sumber daya berikut
Mage_Sitemap_Model_Resource_Catalog_Product
untuk mengambil daftar produk.
#File: app/code/core/Mage/Sitemap/Model/Sitemap.php
$collection = Mage::getResourceModel('sitemap/catalog_product')->getCollection($storeId);
Ini bukan model Magento CRUD standar, dan getCollection
tidak mengembalikan objek koleksi. Sebagai gantinya, getCollection
secara manual kueri basis data untuk produk ini.
Jika saya akan mengimplementasikan fungsionalitas yang mencegah produk tertentu muncul di peta situs, saya akan mencoba keduanya
Kelas menulis ulang getCollection
metode yang memanggil parent::getCollection
, dan kemudian secara manual menyaring semua produk dari array
Kelas menulis ulang _addFilter
yang memanggil metode parent :: _ addFilter, dan kemudian menambahkan klausa WHERE tambahan ke _select
untuk mengecualikan produk spesifik. Semacam hack, tetapi ini satu-satunya metode di mana Anda memiliki akses ke _select
objek yang digunakan untuk query database. Idealnya Anda ingin memiliki semacam bendera global / statis sehingga Anda hanya menambahkan klausa WHERE baru Anda satu kali.