Po wyjęciu z pudełka nie, nie można wykluczyć niektórych produktów z mapy witryny wygenerowanej przez Catalog -> Google Sitemap
funkcję Magento .
Gdybym miał zamiar zrobić to programowo, nowoczesne wersje Magento (zaznaczone w gałęzi 1.7.x, mogą być dostępne we wcześniejszych wersjach / EE) używają następującej klasy modelu zasobów
Mage_Sitemap_Model_Resource_Catalog_Product
aby pobrać listę produktów.
#File: app/code/core/Mage/Sitemap/Model/Sitemap.php
$collection = Mage::getResourceModel('sitemap/catalog_product')->getCollection($storeId);
To nie jest standardowy model CRUD Magento i getCollection
nie zwraca obiektu kolekcji. Zamiast tego getCollection
ręcznie odpytuje bazę danych dla tych produktów.
Gdybym zamierzał wdrożyć funkcje, które zapobiegałyby pojawianiu się niektórych produktów na mapie witryny, spróbowałbym to zrobić
Klasa przepisała getCollection
metodę, która wywołuje parent::getCollection
, a następnie ręcznie odfiltrowuje wszystkie produkty z tablicy
Przepisanie klas, w _addFilter
którym wywołuje metodę parent :: _ addFilter, a następnie dodaje dodatkową klauzulę WHERE _select
do wykluczenia określonych produktów. Coś w rodzaju włamania, ale jest to jedyna metoda, w której masz dostęp do _select
obiektu używanego do zapytania do bazy danych. Najlepiej byłoby mieć jakąś flagę globalną / statyczną, więc nowe klauzule WHERE dodawano tylko raz.