Không, không có cách nào để loại trừ một số sản phẩm khỏi sơ đồ trang web được tạo bởi Catalog -> Google Sitemaptính năng của Magento .
Nếu tôi chuẩn bị thực hiện chương trình này, các phiên bản hiện đại của Magento (đã được kiểm tra trong nhánh 1.7.x, thì phiên bản này có thể có trong các phiên bản trước / EE), sử dụng lớp mô hình tài nguyên sau
Mage_Sitemap_Model_Resource_Catalog_Product
để lấy danh sách các sản phẩm.
#File: app/code/core/Mage/Sitemap/Model/Sitemap.php
$collection = Mage::getResourceModel('sitemap/catalog_product')->getCollection($storeId);
Đây không phải là mô hình Magento CRUD tiêu chuẩn và getCollectionkhông trả về đối tượng bộ sưu tập. Thay vào đó, getCollectiontruy vấn thủ công cơ sở dữ liệu cho các sản phẩm này.
Nếu tôi định triển khai chức năng ngăn một số sản phẩm nhất định hiển thị trên bản đồ trang web, tôi sẽ thử
Một lớp viết lại getCollectionphương thức gọi parent::getCollection, và sau đó lọc thủ công bất kỳ sản phẩm nào từ mảng
Một lớp viết lại trên _addFilterđó gọi phương thức cha mẹ :: _ addFilter và sau đó thêm một mệnh đề WHERE bổ sung vào _selectđể loại trừ (các) sản phẩm cụ thể. Sắp xếp một vụ hack, nhưng đó là phương pháp duy nhất mà bạn có quyền truy cập vào _selectđối tượng được sử dụng để truy vấn cơ sở dữ liệu. Lý tưởng nhất là bạn muốn có một số loại cờ toàn cầu / tĩnh để bạn chỉ thêm (các) mệnh đề WHERE mới của bạn một lần.