хуйу нас не матерятся
Большинство интернет-магазинов не использует все возможности CMS. Не всем нужно учитывать UPC, EAN, JAN, расположение и т. д. Но, между тем, при большом количестве полей в товаре и большом потоке товаров у контент-менеджера, неизбежны ошибки. Например, можно на автомате перепутать артикул с моделью.
Совсем удалить лишние поля нельзя, иначе Opencart перестанет работать, но мы можем их скрыть.
Откроем: /admin/view/template/catalog/product_form.tpl
Задача следующая: нужно найти блоки всех ненужных полей, затем добавить в них класс .hidden.
Как искать: открываем инспектор объектов в браузере ( fierfox в моём случае). Затем активируем выбор html элементов:
и кликаем по нужному инпуту:
Копируем ID инпута и по нему ищем текст в product_form.tpl. Весь инпут должен состоять из вот такой структуры:
<div class="form-group">
<label class="col-sm-2 control-label" for="input-upc"><span data-toggle="tooltip" title="<?php echo $help_upc; ?>"><?php echo $entry_upc; ?></span></label>
<div class="col-sm-10">
<input type="text" name="upc" value="<?php echo $upc; ?>" placeholder="<?php echo $entry_upc; ?>" id="input-upc" class="form-control" />
</div>
</div>
Нам нужно добавить класс "hidden" в главный слой [div class="form-group"]. Должно получиться следующее:
<div class="form-group hidden">
<label class="col-sm-2 control-label" for="input-upc"><span data-toggle="tooltip" title="<?php echo $help_upc; ?>"><?php echo $entry_upc; ?></span></label>
<div class="col-sm-10">
<input type="text" name="upc" value="<?php echo $upc; ?>" placeholder="<?php echo $entry_upc; ?>" id="input-upc" class="form-control" />
</div>
</div>
Повторяем эту процедуру для всех лишних полей. Результат:
Поправка, этот способ для второго опенкарта не подходит? Что то у меня не скрываются. В нем конечно эти элементы скрываются под спойлер но все же.
Обязательные поля надо заполнять обязательно, и от этого никуда не денешься. В противном случае тянется множество ошибок: работа с поиском, фильтрацией, фидами итд.
Отличий .hidden от display:none никаких. Используйте то, что привычнее. Этот способ подходит для опенкарт любой версии, но есть отличия в структуре инпутов. Конкретно этот пример делался на основе Opencart 2.1.0.1
OpenCart 2.1.0.2 - Не работает метод, перепробовал по всякому. Стоит сторонний шаблон, но он вроде не подменял этот файл.
2.1.0.1 чистый - тоже не сработал
Причем даже полностью div удалял а он не пропадает.
Что то в общем не так.
Спасибо за оперативность (вчера задал вопрос, сегодня готово) и отличное решение, всё работает!
Через поиск порыл и нашел два файла product_form.tpl. Один в systemstoragemodificationadminview emplatecatalog - он реагирует на изменения. А второй как у Вас написано adminview emplatecatalog - и вот он как раз ни на что не влияет.
Вот как то так)
Кстати с моделью тоже можно бороться скрыв таким же образом и подставив в value=" " И соответственно скрыть модель в товаре, корзине, в сравнении, в закладках и по хорошему из формы письма (кстати какой файл за это отвечает?) и может еще где.
Или за место " " ставим прочерк "-" и тогда во все полях он и будет.
Поверхностно посмотрел ошибок ни каких нет, да и не будет думаю.
У меня сторонний шаблон. На дефолтном не проверял.
systemstoragemodificationadminview emplatecatalog - да, дело в модификациях было. Подставляя значения по-умолчанию и скрывая поле, можно выкинуть почти всё, не залазия в контроллеры и модели. Но всё же именно модель лучше заполнять. Например яндекс- маркете это поле обязательное.
Удачи!
Спасибо за статью, очень пригодилась. У меня такой вопрос, а можно ли как-то скрыть вкладки в карточке товара (например "Атрибуты", "Бонусные баллы" и т.д.)? Спасибо.
Евгений, конечно. Все табы находятся внутри списка:
<ul class="nav nav-tabs">
Достаточно каждому ненужному табу добавить класс .hidden и он перестанет отображаться. Например, чтобы скрыть табы "бонусы" и "дизайн", замените:
<li><a href="#tab-reward" data-toggle="tab"><?php echo $tab_reward; ?></a></li>
<li><a href="#tab-design" data-toggle="tab"><?php echo $tab_design; ?></a></li>
На:
<li><a href="#tab-reward" class="hidden" data-toggle="tab"><?php echo $tab_reward; ?></a></li>
<li><a href="#tab-design" class="hidden" data-toggle="tab"><?php echo $tab_design; ?></a></li>
Данные поля, в данном случае у меня OcStore 2.1.x, можно скрыть из админки стандартным методом. Система -> Настройки -> Редактировать -> вкладка Опции и там убираем не нужные нам поля. За статьи спасибо, мне не столько помогли решить задачи.
Может у Вас есть решение такого случая. Я хочу, что бы текст кнопки Купить не пропадал при изменении размеров экрана. Если заходить на сайт с телефона то на кнопке отображается тележка без текста. Самостоятельно не могу решить это. Буду благодарен за помощь.
OcStore хоть и родственник, но всё-таки немного другая система. К сожалению, прям сейчас решения для Вашего вопроса у меня нет, но могу сказать что там ничего сложного нет, посмотрите внимательно стили кнопки и отключите/включите нужный класс. В будущем постараюсь осветить этот момент.
Очень жаль, но не срабатывает вариант с hidden. OpenCart 2.2.0.0. Точно нахожу файл product_form.tpl по пути /admin/view/template/catalog/product_form.tpl Далее в блоке в первой строке прописал hidden, перезалил файл на хостинг 1) <span data-toggle="tooltip" title=""></span>
<input type="text" name="upc" value="" placeholder="" id="input-upc" class="form-control" />
Всё равно строка с UPC осталась (.
Если не сработал класс .hidden, то можно скрыть обычным стилем:
style="display: none;"
верно у меня модификация тут находится /system/modification/admin/view/template/catalog
В OpenCart 2.2. правка product_form.tpl срабатывает по пути ваш сайт/system/storage/modification/admin/view/template/catalog а не в ветке /admin/view/template/
А если нужно сделать что бы при нажатии вообще не переходило со списка товаров в карточку а просто быстрый заказ был на кнопку..Такое возможно ???
Отличная статейка! А как убрать обязательной заполнение модели? И есть отличия применения style="display:none;" и класса .hidden?