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 Sitemap
tí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à getCollection
không trả về đối tượng bộ sưu tập. Thay vào đó, getCollection
truy 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 getCollection
phươ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.