Magento - Показать страницу продукта и категории для каждой конструкции в админ
Мне нужно идентифицировать кнопку add to cart и отключить ее (js и php) на основе идентификатора продукта (это не настоящая цель вопроса, жирный - настоящий)
Поскольку я не нашел никакого решения, я думал, чтобы администратор нажал кнопку в разделе администрирования, посвященном расширению tomy, и захватил информацию о кнопке с помощью js, а затем сохранил их позже.
Чтобы сделать это, я хотел бы отобразить основную часть страницы продукта и одну категорию для каждой темы в разделе дизайна.
Вот как я извлекаю темы и пакеты:
//Main package/theme
Mage::getStoreConfig('design/package/name')
//Reegex theme
$ob=unserialize(Mage::getStoreConfig('design/package/ua_regexp'));
foreach($ob as $key)
echo $key['value'];
Моя главная забота о смелой части, если это возможно? Как мне это сделать?
Чтобы быть ясным: мне нужен только красный прямоугольник:
![enter image description here]()
Над ним есть панировочные сухари и справа боковая панель
ПОДРОБНЕЕ
Когда администратор создает/редактирует продукт, он может выбрать или не указать страны, в которых этот предмет может быть продан.
Что происходит: при загрузке страницы система проверяет, является ли товар доступным в стране заказчиков, иначе он удаляет кнопку.
Теперь это приносит некоторые проблемы:
- Широкая поддержка темы: я не уверен, что кнопка html совпадает с той, что была по умолчанию.
-
На той же странице могут существовать коммерческие и не-товарные продукты: идентифицируйте кнопку правильного элемента на странице категории, где их несколько, для этого я проверяю поведение кнопки: обычно она содержит: /checkout/cart/
плюс product id
в атрибуте onlick
или кнопка отправляет форму, я думаю, что если администратор "покажет" мне, что произойдет, и после анализа я смогу идентифицировать кнопку и заменить ее используя id
(secure) или class
(не так точно), поскольку не все магазины используют класс btn-cart
по умолчанию
-
Система Cache/FPC, которая извлекает страницу: я не знаю, поймают ли они js, которые отключили кнопку, или если клиент отменил какой-либо script (возможно, он даже не может использовать сайт), однако, как правило, блок добавления в корзину не кэшируется этими программами (иногда, если элемент недоступен, кнопка скрыта)
-
Проблема SEO: гость не вынужден выбирать страну, но я пытаюсь идентифицировать ее с помощью некоторой внешней службы с использованием ip, поэтому, вероятно, она также обнаружит ботов в качестве пользователей, я не знаю, если это будет проблемой (я так не думаю), в противном случае я должен использовать JS для вызова AJAX, а затем скрыть кнопку
Я бы хотел избежать любого изменения в любом файле шаблона и создать очень простой способ для пользователя настроить модуль (нажмите кнопку менее сложную, чем вся процедура, чтобы создать атрибут, параметры родственников и связать его к множествам)
В принципе: как я могу отобразить страницу продукта и категории в бэкэнд?
Ответы
Ответ 1
Как использовать следующую логику для удаления кнопки со страницы продукта:
-
Добавьте новый атрибут (например: hide_button, введите Yes/No) в каталог в каталоге > Атрибуты > Управление атрибутами. По умолчанию это будет "нет", поэтому все продукты имеют кнопку. Администратор может установить атрибут "Да" для необходимых продуктов.
-
Создайте наблюдателя, который поймает событие catalog_product_load_after
:
public function checkProduct(Varien_Event_Observer $observer){
Mage::register('hide_button', $observer->getEvent()->getProduct()->getData('hide_button'));
return $this;
}
-
Создайте наблюдателя, который поймает событие controller_action_layout_generate_blocks_after
и добавит ваш js-код ко всем темам:
public function injectScript(Varien_Event_Observer $observer){
if (Mage::registry('hide_button' == 1) {
$head = $observer->getEvent()->getLayout()->getBlock('head');
$head->addItem('js', 'hide-button.js');
}
return $this;
}
-
Создайте файл js/hide-button.js, который удалит кнопки с классом "btn-cart" со страницы:
Event.observe(window, 'load', function() {
$$("button.btn-cart").remove();
});
Я не тестировал код, это просто идея.