Введите часть искомого слова, названия или фразы...
↑ ↓
  1. Новые темы озаглавленные с маленькой буквы - удаляются без предупреждения!
  2. Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!

Вопрос по созданию своей темы

Тема в разделе "Вопросы новичков", создана пользователем MisterViktor, 9 авг 2015.

  1. MisterViktor

    MisterViktor

    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    А в чем смысл копирования папки темы woocommerce в свою тему, там по сути ничего нельзя сделать для изменения расположения блоков, к примеру мне нужно изменить внешний вид страницы одиночного товара, ага, открываю single-product.php, а в нем весь контент выплёвывает одна функция:
    Код:
    <?php wc_get_template_part( 'content', 'single-product' ); ?>
    
    ну ладно, есть же папка single-product, может быть там всё есть, открываем price.php, мне нужно всего лишь вставить <br> между обычной ценой и ценой со скидкой, и что же мы видим? Цену выводит функция:
    Код:
    <?php echo $product->get_price_html(); ?>
    Тоесть чтобы изменить какой-то кусок хтмл кода, я должен переопределить функцию вывода любого элемента, перед которым или после которого я хочу вставить свой кусок кода, или я чтото недопонимаю?

    При первом знакомстве с woocommerce складывается такое впечатление, что сей плагин был создан непосредственно для использования платных тем от woothemes, и сделано всё возможное, чтобы запутать и усложнить создание тем пользователями, такая вот коммерческая хитрость. И это печально конечно.
     
    Последнее редактирование: 9 авг 2015
  2. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    WooCommerce создавался в том числе для создания сложных проектов.
    Поэтому разработчики заложили в него средства кастомизации в первую очередь в виде хуков и уже затем в виде переопределения шаблонов. Все заточено на то, чтобы можно было в 99.9% обойтись без правки ядра плагина.

    Даже в своем базовом варианте - это уже почти готовое решение, т.е. поставил и работай.
    Если не нравиться и Вы хотите менять, то придется знакомится со средствами модификации плагина.

    Если рассматривать вашу "проблему", то для создания переноса между ценой со скидкой и обычной ценой не нужно ни шаблон менять, ни функцию вывода цены модифицировать.
    "Проблему" можно решить с помощью стилей.
    Вот вывод метода get_price_html()
    PHP:
    <span class="price"><del><span class="amount">34,567.00&nbsp;руб.</span></del> <ins><span class="amount">32,000.00&nbsp;руб.</span></ins></span>
    Достаточно для тега 'del' назначить 'display:block' и перенос обеспечен.

    Рассмотрим другую задачу. Нужно поменять местами зачеркнутую цену распродажи и обычную цену. Для этого тоже не нужно модифицировать файл шаблона. Достаточно воспользоваться хуком.
    PHP:
    add_filter('woocommerce_get_price_html_from_to''my_woocommerce_get_price_html_from_to',100,);
    function 
    my_woocommerce_get_price_html_from_to($price$from$to) {
        
    $price =  '<ins>' . ( ( is_numeric$to ) ) ? wc_price$to ) : $to ) . '</ins> <del>' . ( ( is_numeric$from ) ) ? wc_price$from ) : $from ) . '</del>';
        return 
    $price;
    }
    Если все это делать в файле шаблона, то тогда туда нужно выводить всю логику и шаблон становиться очень большим. Ведь нужно учесть вывод для всех видов товаров (простой, групповой, вариативный и т.д.).
    Шаблоны редактируют тогда, когда нужно глобально изменить разметку или если что-то не заложено в функциях движка.

    ИМХО: Последовательность модификаций должна быть такой.
    Стили своей темы -> хуки (действия, фильтры) в functions.php своей темы -> Перенос файлов шаблонов плагина в свою тему
     
    Последнее редактирование: 9 авг 2015
    • Нравится Нравится x 3
    • Информативно Информативно x 1
  3. MisterViktor

    MisterViktor

    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Благодарю за столь развернутый ответ.