1. Внимание! Пользователи форума Null-Prog.ru, сейчас на сайте идёт полное реорганизация. По просьбам большинства, постепенно вводится внутренняя валюта сайта для покупки VIP контента ПОШТУЧНО! В связи с чем ближайшие 4 дня могут быть перебои в работе, недоступность (кратковременная) сайта. Если сейчас УЖЕ вам нужен какой либо контент, обращаемся в личку. Все, купившие VIP ранее, сохраняют свой статус и их эти новшества никак не затрагивают. Касательно использования валюты, будет мануал позже. Спасибо за понимание. 

    Скрыть объявление
  2. На нашем форуме Null-Prog действует серьёзное правило касательно размещения материалов!

    ДЛЯ РЕЛИЗЁРОВ: категорически запрещается выкладка материалов на файлообменники типа Deposit, letitbit и другие, требующие просмотров рекламы, обрезающие скорость и тд. Нарушителям, первые 2 раза предупреждения, далее БАН. Тему по этому поводу можно посмотреть ТУТ

    Скрыть объявление
  3. В тестовом режиме на нашем форуме открыт онлайн конструктор сайтов. Вы можете попробовать создать свой сайт у НАС, интуитивно понятный интерфейс, переведёт на 95%, быстрый экспорт проекта, от вас только перетаскивать элементы и вставить в них необходимый текст!

    Все вопросы ТУТ

    Скрыть объявление

  4. Скрыть объявление
  5. Уважаемые форумчане, открывается новый раздел форума, посвящённый ремонту и эксплуатации автомобилей. Просмотреть его можно ТУТ

    Так как раздел новый, информация будет пополнять каждый день. Если есть какие либо замечания по этому разделу, отписываемся в соответствующий раздел форума, либо в личку.

    Напоминаю, сообщения в разделе АВТО не учитываются, общение не ограничено.

    Скрыть объявление
  6. Объявляется набор Модераторов на различные раздел форума, свои заявки можно оставлять в ЭТОМ разделе, перед оставлением заявки рекомендуется ознакомиться с ПРАВИЛАМИ для модераторов.

Важно База знаний по OpenCart или FAQ пользователя

Тема в разделе "OpenCart", создана пользователем Sam Jack, 13 май 2015.

  1. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    База знаний или FAQ пользователя по OpenCart

    Общими усилиями создадим понемногу :ay​
    Общее предупреждение:

    1 Если Вам нужна помощь излагайте вопрос подробно (что делали, что видите, в чем по вашему проблема). Так опытным пользователям будет проще разобраться что к чему и оказать Вам реальную помощь.
    2 Не информативные сообщения (пустые и простые вопросы, непонятные на что ответы или бестолковые комментарии) будут удаляться. Старайтесь чтобы Ваш пост не стал похож на флуд, за которым может последовать неминуемый бан.

    Содержание Базы знаний смотрим под спойлером.
    Установка OpenCart

    Структура шаблонов OpenCart

    Установка vQmod на OpenCart

    robots.txt для OpenCart

    Перенос магазина с локального сервера на хостинг

    Убираем или редактируем надпись внизу страницы "Работает на OpenCart"

    Делаем один язык в OpenCart или убираем английский

    Отзывы в OpenCart для товаров, индексирование поисковиками

    Ключевые слова на Главной странице

    Избавляемся от дублей Главной страницы

    Настройка и совет по модулю "Приветствие"

    Изменение стандартного оповещения о добавлении в корзину

    Полёт товара в корзину

    Сделать по-умолчанию вид "сетка" в категориях

    Исправление работы каптчи (Не работает каптча) (не отображается картинка каптчи)

    Добавляем описание производителя в карточку продукта

    Используем хлебные крошки breadcrumbs для SEO (проверено на 1.5.3.1)

    Убираем страну и регион в оформлении заказа

    Несколько вещей которые не нужны во многих интернет магазинах

    Чтобы длинное название товара при просмотре увеличенного изображения помещалось в окне
     
  2. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    Установка описанная в файле install.txt
    смотрим под спойлер
    1. Загрузите все ваши файлы и папки на ваш сервер из папки «Upload». Можно разархивировать в любое место на Ваш выбор.
    Например в папку: /public_html/store или напрямую в папку: /public_html
    2. Убедитесь, что папки и файлы доступны для записи.
    chmod 0755 или 0777 image/
    chmod 0755 или 0777 image/cache/
    chmod 0755 или 0777 cache/
    chmod 0755 или 0777 download/
    chmod 0755 или 0777 config.php
    chmod 0755 или 0777 admin/config.php
    Если при правах 0755 не работает, попробуйте 0777.
    3. Убедитесь, что у Вас установлена база данных MySQL и Вы имеете к ней доступ. НИ В КОЕМ СЛУЧАЕ НЕ ИСПОЛЬЗУЙТЕ ROOT ЛОГИН И ПАРОЛЬ.
    4. Откройте в браузере домашнюю страницу Вашего магазина, например: http://www.example.com или http://www.examle.com/store/
    5. Следуйте инструкциям на экране.
    6. Удалите установочную директорию.
    Возможно стоит более подробно раскрыть тему установки, но это немного позже.
     
  3. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    Структура шаблонов OpenCart
    В шаблоне OpenCart достаточно легко разобраться, но достаточно трудоемко править - иногда необходимо вносить изменения в 3-4-5 файлов.
    Что бы не запутаться, где какие файлы, вот - их расположение (и краткое описание):

    смотрим под спойлер
    Папка common/
    home.tpl
    - вывод главной страницы
    column_left.tpl - левая колонка магазина
    column_right.tpl - правая колонка магазина
    content_bottom.tpl - нижняя часть магазина (только в 1.5.х)
    content_top.tpl - верхняя часть магазина (только в 1.5.х)
    footer.tpl - нижняя часть шаблона
    header.tpl - верхняя часть шаблона
    cart.tpl - всплывающее окно корзины (в верху сайта) (только в 1.5.х)
    maintenance.tpl - шаблон выводится, когда магазин закрыт
    success.tpl - выводится после успешной регистрации в магазине и после успешного оформления заказа (guest mode)

    Папка product/
    category.tpl
    - вывод группы товаров
    manufacturer.tpl - вывод товаров по производителю (в 1.5.х не используется)
    manufacturer_info.tpl - вывод товаров по производителю (только в 1.5.х)
    manufacturer_list.tpl - страница со списком всех производителей (только в 1.5.х)
    product.tpl - вывод одного товара
    review.tpl - вывод отзыва о товаре в шаблоне product.tpl
    search.tpl - поиск и результаты поиска
    special.tpl - выбор специальных предложений (Special Offers)
    compare.tpl - страница сравнения товаров (только в 1.5.х)

    Папка information/
    contact.tpl
    - вывод адреса магазина и формы отправки сообщений
    information.tpl - вывод информационной статьи
    sitemap.tpl - карта сайта

    Папка error/
    not_found.tpl
    - страница с ошибкой "error 404"(...not found!)

    Папка account/
    account.tpl
    - форма регистрации или входа в аккуант
    address.tpl - Страница выбора/редактирования адреса оплаты/доставки (в 1.5.х не используется)
    addresses.tpl - Адресная книга в настройках аккаунта (в 1.5.х не используется)
    address_form.tpl - страница редактирование адреса в аккаунте (только в 1.5.х)
    address_list.tpl - Адресная книга в настройках аккаунта (только в 1.5.х)
    create.tpl - форма регистрации в магазине (в 1.5.х не используется)
    register.tpl - форма регистрации в магазине (только в 1.5.х)
    return_form.tpl - страница создания возврата товара (только в 1.5.х)
    return_list.tpl - страница истории о возвратах товара (только в 1.5.х)
    return_info.tpl - подробная информация о возврате товара (из return_list.tpl) (только в 1.5.х)
    reward.tpl - информация о зачисленных бонусных баллах за покупки (только в 1.5.х)
    transaction.tpl - страница истории платежей (только в 1.5.х)
    wishlist.tpl - страница "Взято на заметку" (только в 1.5.х)
    download.tpl - страница со скачиваемыми товарами
    edit.tpl - редактировать профиль
    forgotten.tpl - напоминание пароля
    history.tpl - история заказов
    invoice.tpl - счет-фактура
    login.tpl - форма логина или регистрации на сайте
    newsletter.tpl - подписка на новости
    password.tpl - смена пароля

    Папка checkout/
    address.tpl
    -
    cart.tpl - вывод содержимого корзины (в центре страницы)
    confirm.tpl - последний шаг заказа, подтверждение перед отправкой, этот же шаблон используется для guest_step_3. Нижние ссылки ( назад и подтвердить заказ) беруться из шаблона метода оплаты, к примеру из payment/cod.tpl
    guest_step_1.tpl - 1 шаг заказа без регистрации
    guest_step_2.tpl - 2 шаг заказа без регистрации
    payment.tpl - оплата
    shipping.tpl - доставка

    Папка mail/
    order_confirm.tpl
    - письмо о подтверждении

    Папка modules/
    bestseller.tpl
    - самые покупаемые товары
    bestseller_home.tpl - самые покупаемые товары на главной странице
    cart.tpl - вывод корзины в колонке
    category.tpl - блок Категории
    featured.tpl - "рекомендуемые товары"
    featured_home.tpl - "рекомендуемые товары" на главной странице
    google_talk.tpl -
    information.tpl - список статей на сайте, ссылки на сайтмап и контакты
    latest.tpl - "последние товары"
    latest_home.tpl - "последние товары" на главной странице
    manufacturer.tpl - выпадающий список производителей
    special.tpl - специальное предложение
    special_home.tpl - специальное предложение на главной странице
     
  4. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    Убираем лишние шаги в оформлении заказа.
    Один из самых интересующих и актуальных вопросов, возникающих при настройке магазина на OpenCart, это регистрация и оформление заказа. Эти двое отличаются большим количеством не совсем нужных полей и длительным процессом. Сегодня мы поговорим непосредственно об оформлении заказа.
    Что видит покупатель, бросив товар в корзину и нажав кнопку «Оформление заказа»? Он получает 6 шагов оформления заказа, которые могут повлиять на то, что покупатель отправится за нужным ему товаром в другой магазин, у которого покупка осуществляется проще и быстрее — никому не хочется тратить много времени на «бумажную работу». Итак, что мы можем предпринять для того, чтобы упростить заказ и тем самым облегчить заказ нашим покупателям? Мы можем скрыть ненужные шаги и сделать быстрое оформление заказа.

    Способ протестирован на версии 1.5.3.1.

    1. Оформление заказа без регистрации.


    Первое, что можно сделать — разобраться с первым шагом, на котором покупателю предложено либо зарегистрироваться, либо оформить заказ без регистрации. По умолчанию отмечена радиокнопка с регистрацией, для того же, чтобы по умолчанию покупателю сразу было предложено оформить заказ без регистрации, открываем файл catalog/view/theme/default/template/checkout/login.tpl и ищем код (с 6 строки ):<input type="radio" name="account" value="register" id="register" checked="checked"/>
    <?php } else { ?>
    <input type="radio" name="account" value="register" id="register" />
    <?php } ?>
    <b><?php echo $text_register; ?></b></label>
    <br />
    <?php if ($guest_checkout) { ?>
    <label for="guest">
    <?php if ($account == 'guest') { ?>
    <input type="radio" name="account" value="guest" id="guest" checked="checked" />
    <?php } else { ?>
    <input type="radio" name="account" value="guest" id="guest" />


    и меняем его на<input type="radio" name="account" value="register" id="register" />
    <?php } else { ?>
    <input type="radio" name="account" value="register" id="register" />
    <?php } ?>
    <b><?php echo $text_register; ?></b></label>
    <br />
    <?php if ($guest_checkout) { ?>
    <label for="guest">
    <?php if ($account == 'guest') { ?>
    <input type="radio" name="account" value="guest" id="guest" checked="checked" />
    <?php } else { ?>
    <input type="radio" name="account" value="guest" id="guest" checked="checked" />


    Теперь, если мы проверим начало оформления заказа, то увидим, что отмечена радиокнопка «Оформить заказ без регистрации».

    НО. Но если вы хотите, чтобы покупатель, нажав на кнопку «Оформление заказа», сразу переходил к вводу персональных данных, то можно просто аннулировать первый шаг. Для этого открываем вышеупомянутый файл - catalog/view/theme/default/template/checkout/login.tpl и в самом начале прописываем скрипт:<script language="Javascript" type="text/javascript">
    $(document).ready(function(){
    $('#button-account').trigger('click');
    });
    </script>


    Теперь движок будет игнорировать первый шаг и сразу направлять покупателя ко второму шагу. Осталось лишь в таблице стилей скрыть этот шаг. Открываем файл \catalog\view\theme\default\stylesheet\stylesheet.css и добавляем#checkout {
    display:none; }


    Теперь покупатель из корзины, минуя первый шаг, сразу попадает на шаг, в котором он должен ввести персональную информацию.


    2. Уберем шаги 3 и 4, касающиеся доставки.

    Открываем файл system/library/cart.php (в корневой папке сайта) и находим строку (приблизительно 381 строка)public function hasShipping() {


    сразу после нее добавляемreturn false;


    и строки примут вот такой вид:public function hasShipping() {
    return false;
    $shipping = false;


    Теперь у нас осталось три шага: 2, 5 и 6.

    3. Убираем шаг с оплатой. Если в вашем магазине не предусмотрен выбор вариантов оплаты (к примеру, оплата только при доставке), будет вполне логично скрыть шаг, касающийся оплаты. Для этого открываем catalog/view/theme/default/template/checkout/payment_method.tpl и точно также, как мы это делали ранее, добавляем в самом начале документа скрипт:<script language="Javascript" type="text/javascript">
    $(document).ready(function(){
    $('#button-payment-method').trigger('click');
    });
    </script>


    В этом же файле, ищем строку<input type="checkbox" name="agree" value="1"/>


    и меняем ее на<input type="checkbox" name="agree" value="1" checked="checked" />


    Снова обращаемся к таблице стилей — \catalog\view\theme\default\stylesheet\stylesheet.css, и скрываем отображение пятого шага:#payment-method {
    display:none;
    }


    У нас осталось всего два шага: Профиль & Платежная информация и Подтверждение заказа.


    Дать им другие названия можно в языковом файле catalog\language\russian\checkout\checkout.php.
     
  5. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    Убираем обязательные поля в оформлении заказа
    Выше мы рассмотрели способ удаления лишних шагов при оформлении заказа, вместо шести мы оставили всего лишь 2 шага.
    Сейчас же разберемся с вопросом о полях, которые помечены звездочкой, с вопросом об обязательных полях. Они обязательны для заполнения, но порой в них просто нет надобности, так что мы постараемся их скрыть, чтобы упростить оформление заказа.

    Что мы можем предпринять для осуществления задуманного? Мы можем скрыть поля и удалить проверку на ошибки касательно этих полей.

    OpenCart содержит два файла, отвечающих за ввод персональных данных в первом шаге заказа:

    catalog/view/theme/default/template/checkout/register.tpl — при оформлении заказа с регистрацией

    catalog/view/theme/default/template/checkout/guest.tpl - при гостевом оформлении заказа

    Мы рассмотри процесс удаления ненужных для нас полей на примере оформления заказа с регистрацией, но для гостевой регистрации изменения будут идентичны. Редактировать мы будем следующее:
    удалять поля: Факс, Компания, Company ID и Индекс,
    редактировать поля «Имя, Отчество» и «Фамилия» — объединим их в одно поле и назовем стандартно «ФИО».

    Все изменения рассмотрены на версии 1.5.3.1, на дефолтной теме.



    Наши действия:

    1. Перестрахуемся и сохраним файл catalog/view/theme/default/template/checkout/register.tpl (всегда может что-то пойти не так, или произведенные действия не возымеют эффекта и т.д.).

    2. Факс. В вышеупомянутом файле ищем строки касающиеся факса (19-22 строки):
    <?php echo $entry_fax; ?><br />
    <input type="text" name="fax" value="" class="large-field" />
    <br />
    <br />


    И либо удаляем их, либо комментируем. Я обычно выбираю второй способ, если та или иная возможность мне еще может понадобиться в будущем.

    3. Компания и Company ID . Находим строки о компании и поступаем с ними также, как и с факсом — удаляем или комментируем (приблизительно строки 36-39, 53-57):
    <?php echo $entry_company; ?><br />
    <input type="text" name="company" value="" class="large-field" />
    <br />
    <br />

    и
    <div id="company-id-display"><span id="company-id-required" class="required">*</span> <?php echo $entry_company_id; ?><br />
    <input type="text" name="company_id" value="" class="large-field" />
    <br />
    <br />
    </div>


    4. Почтовый Индекс. Все предыдущие поля не были обязательными, с индексом ситуация немного иная, так как это поле обязательно для заполнения и помечено в файле как «required». Поэтому, найдя строки с индексом (75-78), мы их закомментируем
    <span id="payment-postcode-required" class="required">*</span><?php echo $entry_postcode; ?><br />
    <input type="text" name="postcode" value="<?php echo $postcode; ?>" class="large-field" />
    <br />
    <br />


    и для того, чтобы разобраться с ошибками мы будем также править файлы в контроллере:

    catalog/controller/checkout/register.php - заказ с регистрацией,

    catalog/controller/checkout/guest.php - гостевое оформление заказа.

    Открываем register.php и ищем строку с почтовым индексом, комментировать мы будем только его, поскольку все остальные поля, скрытые нами, необязательны для заполнения (приблизительно 23я и 50-54 строки):
    $this->data['entry_postcode'] = $this->language->get('entry_postcode');
    if (isset($this->session->data['shipping_postcode'])) {
    $this->data['postcode'] = $this->session->data['shipping_postcode'];
    } else {
    $this->data['postcode'] = '';
    }


    5. Для того же, чтобы объединить два поля с «именем, отчеством» и «фамилией» в одно поле, следует в файле catalog/view/theme/default/template/checkout/register.tpl

    закомментировать строки (строки 7-10):
    <span class="required">*</span><?php echo $entry_lastname; ?><br />
    <input type="text" name="lastname" value="" class="large-field" />
    <br />
    <br />


    Мы убрали второе поле, для ввода фамилии, теперь для того, чтобы изменить название поля с «Имя, Отчество» на «ФИО», открываем файл catalog/language/russian/checkout/checkout.php и вносим изменения:

    вместо$_['entry_firstname'] = 'Имя, Отчество:';


    прописываем$_['entry_firstname'] = 'ФИО:';


    Поля приобрели необходимый вид и структуру, но обработчик не пропустит покупателя дальше второго шага, так как поле с фамилией было обязательным для заполнения. Снова обращаемся к файлу catalog/controller/checkout/register.php и комментируем строки (приблизительно 13 и 138-140):
    $this->data['entry_lastname'] = $this->language->get('entry_lastname');
    if ((utf8_strlen($this->request->post['lastname']) < 1) || (utf8_strlen($this->request->post['lastname']) > 32)) {
    $json['error']['lastname'] = $this->language->get('error_lastname');
    }


    Поскольку мы изменяем оформление заказа с регистрацией, то нам теперь необходимо открыть файл catalog/model/account/customer.php и 14 строку:
    $this->db->query("INSERT INTO " . DB_PREFIX . "customer SET store_id = '" . (int)$this->config->get('config_store_id') . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', fax = '" . $this->db->escape($data['fax']) . "', password = '" . $this->db->escape(md5($data['password'])) . "', newsletter = '" . (isset($data['newsletter']) ? (int)$data['newsletter'] : 0) . "', customer_group_id = '" . (int)$customer_group_id . "', ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "', status = '1', approved = '" . (int)!$customer_group_info['approval'] . "', date_added = NOW()");


    изменить на
    $this->db->query("INSERT INTO " . DB_PREFIX . "customer SET store_id = '" . (int)$this->config->get('config_store_id') . "', firstname = '" . $this->db->escape($data['firstname']) . /*"', lastname = '" . $this->db->escape($data['lastname']) .*/ "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', fax = '" . $this->db->escape($data['fax']) . "', password = '" . $this->db->escape(md5($data['password'])) . "', newsletter = '" . (isset($data['newsletter']) ? (int)$data['newsletter'] : 0) . "', customer_group_id = '" . (int)$customer_group_id . "', ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "', status = '1', approved = '" . (int)!$customer_group_info['approval'] . "', date_added = NOW()");


    Также меняем 18ю строку:
    $this->db->query("INSERT INTO " . DB_PREFIX . "address SET customer_id = '" . (int)$customer_id . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', company = '" . $this->db->escape($data['company']) . "', company_id = '" . $this->db->escape($data['company_id']) . "', tax_id = '" . $this->db->escape($data['tax_id']) . "', address_1 = '" . $this->db->escape($data['address_1']) . "', address_2 = '" . $this->db->escape($data['address_2']) . "', city = '" . $this->db->escape($data['city']) . "', postcode = '" . $this->db->escape($data['postcode']) . "', country_id = '" . (int)$data['country_id'] . "', zone_id = '" . (int)$data['zone_id'] . "'");


    на
    $this->db->query("INSERT INTO " . DB_PREFIX . "address SET customer_id = '" . (int)$customer_id . "', firstname = '" . $this->db->escape($data['firstname']) . /*"', lastname = '" . $this->db->escape($data['lastname']) .*/ "', company = '" . $this->db->escape($data['company']) . "', company_id = '" . $this->db->escape($data['company_id']) . "', tax_id = '" . $this->db->escape($data['tax_id']) . "', address_1 = '" . $this->db->escape($data['address_1']) . "', address_2 = '" . $this->db->escape($data['address_2']) . "', city = '" . $this->db->escape($data['city']) . "', postcode = '" . $this->db->escape($data['postcode']) . "', country_id = '" . (int)$data['country_id'] . "', zone_id = '" . (int)$data['zone_id'] . "'");


    Подобными изменениями строк мы лишь закомментировали фамилию.

    Вот таким несложным способом мы удалили из второго шага оформления заказа ненужные для нашего магазина поля личных данных покупателя.

    Остальные поля, например e-mail или телефон, можно убрать точно таким же способом, каким мы убрали индекс и фамилию.

    Напомню еще раз, для того, чтобы править гостевое оформление заказа, то есть без регистрации, необходимо править файлы catalog/view/theme/default/template/checkout/guest.tpl и catalog/controller/checkout/guest.php . Принцип действия тот же, только в файле catalog/controller/checkout/guest.php необходимо закомментировать следующие строки:

    13$this->data['entry_lastname'] = $this->language->get('entry_lastname');


    приблизительно 189-191
    if ((utf8_strlen($this->request->post['lastname']) < 1) || (utf8_strlen($this->request->post['lastname']) > 32)) {
    $json['error']['lastname'] = $this->language->get('error_lastname');
    }


    приблизительно 261$this->session->data['guest']['lastname'] = $this->request->post['lastname'];


    приблизительно 267$this->session->data['guest']['payment']['lastname'] = $this->request->post['lastname'];


    и приблизительно 318 строку$this->session->data['guest']['shipping']['lastname'] = $this->request->post['lastname'];


    В результате мы получили второй шаг с уменьшенным количеством полей для заполнения:
     
  6. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    Как убрать страну и регион в оформлении заказа
    Сейчас речь все о том же оформлении заказа, но уже о двух других полях: стране и регионе. Дело в том, что очень часто на e-mail приходит вопрос о том, как удалить эти поля, не настроить для показа определенной страны и региона, а полностью их удалить, чтобы эти поля не отображались при оформлении заказа. Аргумент всегда поступает такой: работаем только по одному городу и выбор города, тем более страны, совсем не нужен. В принципе, звучит логично, поэтому сегодня мы изменим оформление заказа так, чтобы в нем не было этих двух параметров: выбора региона и страны. Сразу оговорюсь, что править придется много.

    Все изменения будут сделаны на дефолтном шаблоне, версии 1.5.4.1. Рассмотрим удаление страны и региона на примере гостевого оформления заказа.

    Не забываем, что перед любыми изменениями стоит делать бекап и пересохранить файлы магазина, по крайней мере те, с которыми предстоит работать.


    Открываем файл catalog\view\theme\default\template\checkout\guest.tpl, находим строки со страной и регионом, удалим также отображение индекса, так как он не имеет смысла без выбора страны и региона (66-87):<span id="payment-postcode-required" class="required">*</span> <?php echo $entry_postcode; ?><br />
    <input type="text" name="postcode" value="<?php echo $postcode; ?>" class="large-field" />
    <br />
    <br />
    <span class="required">*</span> <?php echo $entry_country; ?><br />
    <select name="country_id" class="large-field">
    <option value=""><?php echo $text_select; ?></option>
    <?php foreach ($countries as $country) { ?>
    <?php if ($country['country_id'] == $country_id) { ?>
    <option value="<?php echo $country['country_id']; ?>" selected="selected"><?php echo $country['name']; ?></option>
    <?php } else { ?>
    <option value="<?php echo $country['country_id']; ?>"><?php echo $country['name']; ?></option>
    <?php } ?>
    <?php } ?>
    </select>
    <br />
    <br />
    <span class="required">*</span> <?php echo $entry_zone; ?><br />
    <select name="zone_id" class="large-field">
    </select>
    <br />
    <br />


    Комментируем их или удаляем.

    Сохраняем изменения и отправляемся править файл контроллера, так как мало убрать отображение полей, необходимо разобраться с ошибками, так как данные поля обязательны для заполнения.

    Открываем файл catalog\controller\checkout\guest.php и принимаемся за большую работу — комментируем или удаляем нижеперечисленные строки:

    234-255 строки :$country_info = $this->model_localisation_country->getCountry($this->request->post['country_id']);

    if ($country_info) {
    if ($country_info['postcode_required'] && (utf8_strlen($this->request->post['postcode']) < 2) || (utf8_strlen($this->request->post['postcode']) > 10)) {
    $json['error']['postcode'] = $this->language->get('error_postcode');
    }

    // VAT Validation
    $this->load->helper('vat');

    if ($this->config->get('config_vat') && $this->request->post['tax_id'] && (vat_validation($country_info['iso_code_2'], $this->request->post['tax_id']) == 'invalid')) {
    $json['error']['tax_id'] = $this->language->get('error_vat');
    }
    }

    if ($this->request->post['country_id'] == '') {
    $json['error']['country'] = $this->language->get('error_country');
    }

    if ($this->request->post['zone_id'] == '') {
    $json['error']['zone'] = $this->language->get('error_zone');
    }


    273, 275-276 строки:$this->session->data['guest']['payment']['postcode'] = $this->request->post['postcode'];
    $this->session->data['guest']['payment']['country_id'] = $this->request->post['country_id'];
    $this->session->data['guest']['payment']['zone_id'] = $this->request->post['zone_id'];


    280-304, 313-314 строки:$country_info = $this->model_localisation_country->getCountry($this->request->post['country_id']);

    if ($country_info) {
    $this->session->data['guest']['payment']['country'] = $country_info['name'];
    $this->session->data['guest']['payment']['iso_code_2'] = $country_info['iso_code_2'];
    $this->session->data['guest']['payment']['iso_code_3'] = $country_info['iso_code_3'];
    $this->session->data['guest']['payment']['address_format'] = $country_info['address_format'];
    } else {
    $this->session->data['guest']['payment']['country'] = '';
    $this->session->data['guest']['payment']['iso_code_2'] = '';
    $this->session->data['guest']['payment']['iso_code_3'] = '';
    $this->session->data['guest']['payment']['address_format'] = '';
    }

    $this->load->model('localisation/zone');

    /*$zone_info = $this->model_localisation_zone->getZone($this->request->post['zone_id']);

    if ($zone_info) {
    $this->session->data['guest']['payment']['zone'] = $zone_info['name'];
    $this->session->data['guest']['payment']['zone_code'] = $zone_info['code'];
    } else {
    $this->session->data['guest']['payment']['zone'] = '';
    $this->session->data['guest']['payment']['zone_code'] = '';
    }

    // Default Payment Address
    $this->session->data['payment_country_id'] = $this->request->post['country_id'];
    $this->session->data['payment_zone_id'] = $this->request->post['zone_id'];


    322, 324-350 строки:$this->session->data['guest']['shipping']['postcode'] = $this->request->post['postcode'];

    $this->session->data['guest']['shipping']['country_id'] = $this->request->post['country_id'];
    $this->session->data['guest']['shipping']['zone_id'] = $this->request->post['zone_id'];

    if ($country_info) {
    $this->session->data['guest']['shipping']['country'] = $country_info['name'];
    $this->session->data['guest']['shipping']['iso_code_2'] = $country_info['iso_code_2'];
    $this->session->data['guest']['shipping']['iso_code_3'] = $country_info['iso_code_3'];
    $this->session->data['guest']['shipping']['address_format'] = $country_info['address_format'];
    } else {
    $this->session->data['guest']['shipping']['country'] = '';
    $this->session->data['guest']['shipping']['iso_code_2'] = '';
    $this->session->data['guest']['shipping']['iso_code_3'] = '';
    $this->session->data['guest']['shipping']['address_format'] = '';
    }

    if ($zone_info) {
    $this->session->data['guest']['shipping']['zone'] = $zone_info['name'];
    $this->session->data['guest']['shipping']['zone_code'] = $zone_info['code'];
    } else {
    $this->session->data['guest']['shipping']['zone'] = '';
    $this->session->data['guest']['shipping']['zone_code'] = '';
    }

    // Default Shipping Address
    $this->session->data['shipping_country_id'] = $this->request->post['country_id'];
    $this->session->data['shipping_zone_id'] = $this->request->post['zone_id'];
    $this->session->data['shipping_postcode'] = $this->request->post['postcode'];


    Внеся все эти изменения, мы получаем форму оформления заказа следующего вида:


    Но, поскольку адрес тесно связан не только со вторым шагом, но и с последующими, то нам предстоит править еще и другие файлы, чтобы убрать все ошибки.

    После второго шага идет третий шаг «Адрес доставки». Во втором шаге по умолчанию отмечен чекбокс «Адрес доставки совпадает с адресом плательщика» и покупатель минуя третий шаг переходит к четвертому шагу для выбора способа доставки. Но что, если покупатель все же захочет изменить адрес и перейдет к третьему шагу? Среди всех прочих полей, он увидит те самые поля, которые мы так тщательно скрывали — страну и регион, и они, естественно, будут обязательны для заполнения.


    Так что теперь наша задача — убрать их из третьего шага.

    Открываем файл catalog\view\theme\default\template\checkout\guest-shipping.tpl и снова ищем строки с индексом, страной и регионом (27-47):<td><span id="shipping-postcode-required" class="required">*</span> <?php echo $entry_postcode; ?></td>
    <td><input type="text" name="postcode" value="<?php echo $postcode; ?>" class="large-field" /></td>
    </tr>
    <tr>
    <td><span class="required">*</span> <?php echo $entry_country; ?></td>
    <td><select name="country_id" class="large-field">
    <option value=""><?php echo $text_select; ?></option>
    <?php foreach ($countries as $country) { ?>
    <?php if ($country['country_id'] == $country_id) { ?>
    <option value="<?php echo $country['country_id']; ?>" selected="selected"><?php echo $country['name']; ?></option>
    <?php } else { ?>
    <option value="<?php echo $country['country_id']; ?>"><?php echo $country['name']; ?></option>
    <?php } ?>
    <?php } ?>
    </select></td>
    </tr>
    <tr>
    <td><span class="required">*</span> <?php echo $entry_zone; ?></td>
    <td><select name="zone_id" class="large-field">
    </select></td>
    </tr>


    Комментируем их или удаляем и опять обращаемся к контроллеру, к файлу catalog\controller\checkout\guest-shipping.php.

    Снова будем находить строки, отвечающие за корректное заполнение полей с регионом, страной и индексом.

    строки 133-145:$country_info = $this->model_localisation_country->getCountry($this->request->post['country_id']);

    if ($country_info && $country_info['postcode_required'] && (utf8_strlen($this->request->post['postcode']) < 2) || (utf8_strlen($this->request->post['postcode']) > 10)) {
    $json['error']['postcode'] = $this->language->get('error_postcode');
    }

    if ($this->request->post['country_id'] == '') {
    $json['error']['country'] = $this->language->get('error_country');
    }

    if ($this->request->post['zone_id'] == '') {
    $json['error']['zone'] = $this->language->get('error_zone');
    }


    строки 154, 156-189:$this->session->data['guest']['shipping']['postcode'] = $this->request->post['postcode'];

    $this->session->data['guest']['shipping']['country_id'] = $this->request->post['country_id'];
    $this->session->data['guest']['shipping']['zone_id'] = $this->request->post['zone_id'];

    $this->load->model('localisation/country');

    $country_info = $this->model_localisation_country->getCountry($this->request->post['country_id']);

    if ($country_info) {
    $this->session->data['guest']['shipping']['country'] = $country_info['name'];
    $this->session->data['guest']['shipping']['iso_code_2'] = $country_info['iso_code_2'];
    $this->session->data['guest']['shipping']['iso_code_3'] = $country_info['iso_code_3'];
    $this->session->data['guest']['shipping']['address_format'] = $country_info['address_format'];
    } else {
    $this->session->data['guest']['shipping']['country'] = '';
    $this->session->data['guest']['shipping']['iso_code_2'] = '';
    $this->session->data['guest']['shipping']['iso_code_3'] = '';
    $this->session->data['guest']['shipping']['address_format'] = '';
    }

    $this->load->model('localisation/zone');

    $zone_info = $this->model_localisation_zone->getZone($this->request->post['zone_id']);

    if ($zone_info) {
    $this->session->data['guest']['shipping']['zone'] = $zone_info['name'];
    $this->session->data['guest']['shipping']['zone_code'] = $zone_info['code'];
    } else {
    $this->session->data['guest']['shipping']['zone'] = '';
    $this->session->data['guest']['shipping']['zone_code'] = '';
    }

    $this->session->data['shipping_country_id'] = $this->request->post['country_id'];
    $this->session->data['shipping_zone_id'] = $this->request->post['zone_id'];
    $this->session->data['shipping_postcode'] = $this->request->post['postcode'];


    Разобравшись с адресом доставки, переходим к способу доставки. После установки движок по умолчанию выставляет фиксированную стоимость доставки, вот ее мы и будем править. Открываем файл catalog/model/shipping/flat.php и комментируем (или удаляем) код 6 строки:$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone_to_geo_zone WHERE geo_zone_id = '" . (int)$this->config->get('flat_geo_zone_id') . "' AND country_id = '" . (int)$address['country_id'] . "' AND (zone_id = '" . (int)$address['zone_id'] . "' OR zone_id = '0')");


    Аналогичные действия необходимо совершить для пятого шага, если у вас, способ оплаты — оплата при доставке. Открываем файл catalog/model/payment/cod.php и комментируем 6 строку:$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone_to_geo_zone WHERE geo_zone_id = '" . (int)$this->config->get('cod_geo_zone_id') . "' AND country_id = '" . (int)$address['country_id'] . "' AND (zone_id = '" . (int)$address['zone_id'] . "' OR zone_id = '0')");


    Теперь дело осталось за малым: отредактировать последний — шестой шаг. Открываем файл catalog/controller/checkout/confirm.php и убираем все ненужные упоминания страны, региона и индекса.

    строки 150-155: $data['payment_postcode'] = $payment_address['postcode'];
    $data['payment_zone'] = $payment_address['zone'];
    $data['payment_zone_id'] = $payment_address['zone_id'];
    $data['payment_country'] = $payment_address['country'];
    $data['payment_country_id'] = $payment_address['country_id'];
    $data['payment_address_format'] = $payment_address['address_format'];


    строки 184-189: $data['shipping_postcode'] = $shipping_address['postcode'];
    $data['shipping_zone'] = $shipping_address['zone'];
    $data['shipping_zone_id'] = $shipping_address['zone_id'];
    $data['shipping_country'] = $shipping_address['country'];
    $data['shipping_country_id'] = $shipping_address['country_id'];
    $data['shipping_address_format'] = $shipping_address['address_format'];


    Открываем файл catalog/model/checkout/order.php и находим в 4 строке два отрезка кода и комментируем их (внимательно следим за символами и не разбиваем строку!):"', payment_postcode = '" . $this->db->escape($data['payment_postcode']) . "', payment_country = '" . $this->db->escape($data['payment_country']) . "', payment_country_id = '" . (int)$data['payment_country_id'] . "', payment_zone = '" . $this->db->escape($data['payment_zone']) . "', payment_zone_id = '" . (int)$data['payment_zone_id'] . "', payment_address_format = '" . $this->db->escape($data['payment_address_format']) .
    "', shipping_postcode = '" . $this->db->escape($data['shipping_postcode']) . "', shipping_country = '" . $this->db->escape($data['shipping_country']) . "', shipping_country_id = '" . (int)$data['shipping_country_id'] . "', shipping_zone = '" . $this->db->escape($data['shipping_zone']) . "', shipping_zone_id = '" . (int)$data['shipping_zone_id'] . "', shipping_address_format = '" . $this->db->escape($data['shipping_address_format']) .


    Подобным образом мы скрыли отображение и выбор страны и региона при гостевом оформлении заказа. Также учитывайте то, что мы правили лишь два модуля, связанные со способом доставки и оплаты, те, которые стоят в opencart по умолчанию: фиксированная стоимость доставки и оплата при доставке. Если Вы используете другие модули, другие варианты доставки и оплаты, то и править необходимо соответствующие модули.
     
  7. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    В OpenCart есть несколько вещей которые не нужны во многих интернет магазинах и мы их удалим
    1. Удалим из футера:
    Политика безопасности
    Условия соглашения
    Возврат товара
    Подарочные сертификаты
    Партнёрская программа
    История заказов
    Подписка

    2. Удалим из списков товаров кнопку в сравнения, не всем это нужно.

    3. Удалим из карточки товара бонусные баллы и кнопку в сравнения.

    4. Удалим из моих заказов (в личном кабинете):
    Файлы для скачивания
    Бонусные баллы
    Запросы на возврат

    5.Удалим из личного кабинета:
    Файлы для скачивания
    Возвраты

    Приступим к работе:

    1. Откроем админку сайта и переходим: Система > Настройки > Изменить > Опции > Подтверждение при регистрации: > Не выбрано, и чуть ниже > Условия партнерства: > Не выбрано > Сохранить.

    В админке переходим: Каталог > Статьи > удаляем:
    Политика Безопасности
    Условия соглашения

    Открываем файл footer.tpl (../catalog/view/theme/*ваш шаблон*/template/common) и удаляем из него эти строки:

    14 строка - <li><a href="<?php echo $return; ?>"><?php echo $text_return; ?></a></li> (возврат товара)

    21 строка - <li><a href="<?php echo $voucher; ?>"><?php echo $text_voucher; ?></a></li> (подарочные сертификаты)

    22 строка - <li><a href="<?php echo $affiliate; ?>"><?php echo $text_affiliate; ?></a></li> (партнёрская программа)

    28 строка - <li><a href="<?php echo $order; ?>"><?php echo $text_order; ?></a></li> (история заказов)

    30 строка - <li><a href="<?php echo $newsletter; ?>"><?php echo $text_newsletter; ?></a></li> (подписка)

    2. Откроем файл category.tpl (../catalog/view/theme/*ваш шаблон*/template/product) и удалим из него эти строки:

    68 строка - <div class="product-compare"><a href="<?php echo $compare; ?>" id="compare_total"><?php echo $text_compare; ?></a></div>

    95 строка - <div class="compare"><a onclick="addToCompare('<?php echo $product['product_id']; ?>');"><?php echo $button_compare; ?></a></div>

    117 строка - html += ' <div class="compare">' + $(element).find('.compare').html() + '</div>';

    181 строка - html += '<div class="compare">' + $(element).find('.compare').html() + '</div>';

    3. Откроем файл product.tpl (../catalog/view/theme/*ваш шаблон*/template/product) и удалим из него это:

    30 строка - <span><?php echo $text_reward; ?></span> <?php echo $reward; ?><br />

    209 строка - <br />

    210 строка - <a onclick="addToCompare('<?php echo $product_id; ?>');"><?php echo $button_compare; ?></a>

    (P.S. – удаляем не все строки целиком, а только то что я написал !!! )

    4. Откроем файл account.tpl (../catalog/view/theme/*ваш шаблон*/template/account) и удалим из него эти строки:

    25 строка - <li><a href="<?php echo $download; ?>"><?php echo $text_download; ?></a></li> (файлы для скачивания)

    26 строка - <li><a href="<?php echo $reward; ?>"><?php echo $text_reward; ?></a></li> (бонусные баллы)

    27 строка - <li><a href="<?php echo $return; ?>"><?php echo $text_return; ?></a></li> (запросы на возврат)

    5. Откроем файл account.tpl ( ../catalog/view/theme/*ваш шаблон*/template/module ) и удаляем эти строки:

    16 строка - <li><a href="<?php echo $download; ?>"><?php echo $text_download; ?></a></li> (файлы для скачивания)

    17 строка - <li><a href="<?php echo $return; ?>"><?php echo $text_return; ?></a></li> (возвраты)
    лучше всего править в программе Notepad++
     
  8. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    Избавимся от дублей главной страницы
    Изначально, главная страница сайта доступна по следующим адресам: http://www.site.ru/, http://site.ru/, http://site.ru/index.php,http://www.site.ru/index.php. Это очень плохо, ведь для поисковиков это четыре разных страницы (разные URL)! Если не принять меры, то поисковые системы добавят в свой индекс четыре одинаковых страницы. А это признак некачественного сайта! Для того, чтобы избежать такой проблемы в файл ".htaccess", расположенный в корне сайта допишем после RewriteEngine On следующие строки:


    # Редирект c www на без www
    RewriteCond %{HTTP_HOST} ^www.site.ru
    RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
    # Редирект для главной (с /index.php на /)
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\ HTTP/
    RewriteRule ^index\.html$ / [R=301,L]
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
    RewriteRule ^index\.php$ / [R=301,L]



    Не забываем, что файл необходимо сохранить в кодировке UTF-8 без BOM (используя текстовый редактор Notepad++ или Akelapad, например). В противном случае, лишние байты сигнатуры BOM приводят к тому, что веб-сервер не может обработать файл ".htaccess", и возникают ошибки при обращении ко всем файлам директории и подкаталогам. Сохраняем и "заливаем" файл ".htaccess" в корень сайта. Теперь все дубли главной страницы будут склеены редиректом с кодом 301 («постоянное перемещение») с главной страницей – http://site.ru/. Желательно также назначить совпадающее основное зеркало в файле robots.txt. Внизу этого файла дописываем строчку:

    Host: site.ru


    Разумеется везде, вместо site.ru - используйте свой домен.

    Внимание! Бывает, что после применения редиректа с www на без www или наоборот, становится невозможно авторизоваться на сайте в качестве администратора. Для решения этой проблемы (используя ftp доступ к сайту) смотрим и при необходимости редактируем пути в файле "config.php" в папке "admin".

    Идем дальше. Внизу нашего сайта (интернет-магазина) видим надпись и ссылку на сайт http://myopencart.ru/:

    Работает на OpenCart
    Название_магазина © 2012


    Убираем ссылку и меняем надпись на свою. Чтобы убрать эти строчки полностью - находим файл "footer.tpl" (путь: \catalog\view\theme\default\template\common). Внизу файла удаляем строку: <div id="powered"><?php echo $powered; ?></div>. Либо в это место "футера" вставим счетчики посещаемости. Тогда строка будет вида:


    <div id="powered"><span>код_счетчика_1</span> <span>код_счетчика_2</span></div>





    С помощью css стилей можно отредактировать отступы и выравнивание для блока счетчиков. Для этого идем в папку \catalog\view\theme\default\stylesheet. Открываем файл "stylesheet.css". В его конце (строка 1627, примерно) находим идентификатор "powered"


    #powered {
    margin-top: 5px;
    text-align: right;
    clear: both;
    }



    Его и правим, как нам угодно, добиваясь красивого расположения счетчиков внизу страницы. Если же надо просто убрать ссылку на сайтhttp://myopencart.ru/ и изменить надпись на какую-то свою, то вносим изменения в файле "footer.php" (путь: \catalog\language\russian\common). Внизу файла меняем информацию в строке:


    $_['text_powered'] = 'Работает на <a href="http://myopencart.ru">OpenCart</a>
    %s © %s';



    Кстати, в файлах движка OpenCart содержится довольно большое количество внешних ссылок, указывающих не только на сайтhttp://myopencart.ru, но и на другие ресурсы. Найти все незашифрованные ссылки в файлах движка Вам поможет программа NoHiddenLinks, а уж оставлять их или удалять – решайте сами.
     
  9. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    Хочу представить Вашему вниманию крайне полезную программку под названием NoHiddenLinks для поиска ссылок (в т.ч. скрытых) в различных шаблонах и движках.
    Программа ищет только незашифрованные ссылки в файлах, т.е. вот такого открытого вида:

    <a href="http://www.sait.ru/">Всяка хрень здесь.</a>


    Согласитесь, что файлов в шаблонах, а тем более в различных движках коммерческих и бесплатных систем управления контентом содержится десятки и сотни. Просмотреть их все вручную - дело нереально сложное, а вернее очень трудоемкое. Вот здесь к нам на помощь и приходит замечательная программа NoHiddenLinks. Огромное спасибо разработчикам за данный продукт. NoHiddenLinks полностью русскоязычная, скачать программу можно с официального сайта http://nohiddenlinks.ru

    Честно скажу не нашел там на сайте эту прогу, тогда качаем с нашего ФО
    http://null-prog.ru/threads/programma-poiska-skrytyx-ssylok-nohiddenlinks.534/




    Скачиваем любой шаблон и начинаем тестировать с помощью нашей программы NoHiddenLinks. Прежде всего извлекаем все файлы из скаченного rar-архива в какую-нибудь папку. Программа содержит два файла (исполняемый NoHiddenLinks.exe и библиотеку php5ts.dll) и не требует установки на компьютер, что весьма хорошо. Запустив ее, попадаем во вкладку "Информация", где содержится описание возможностей программы и как ею пользоваться.



    Вывираем папку скаченного шаблона Orchid (ставим галочку). Далее перемещаемся во вкладку "Настройки".



    Здесь все тоже ясно и понятно. Поле "Пропускать ссылки с доменами" оставляем пустым. Нам ведь нужно найти все ссылки, с любыми доменами. По умолчанию программа проверяет файлы со следующими расширениями: html,htm,phtml,php,php3,php4,php5,tpl,txt. Оставляем здесь все, как есть и переходим на последнюю вкладку под названием "Проверка", в которой жмем на кнопку "Начать проверку".



    Смотрим результат.



    А результат проверки таков - программа в файлах шаблона Orchid для Dle 9.8 обнаружила целых семь внешних ссылок. Выбираем любую из них и смотрим ниже раздел "Информация". В нем отображается файл, в котором обнаружена ссылка, сама ссылка, ее анкор и номер строки в которой находится данная ссылка. Чуть правее представлен код найденной ссылки. Согласитесь, что все достаточно просто, удобно и информативно.



    Видим по скриншоту, что найденная ссылка ведет на сайт newtemplates.ru

    <a href="http://newtemplates.ru/relise/">скачать dle</a>


    Ради интереса откроем файл static.tpl (\Orchid\static.tpl) с помощью программы Notepad++ и найдем в нем строчку №4

    <h2 class="heading"><span id="news-title">{description}</span></h2>


    Все здесь в порядке, никаких ссылок в ней не видно вообще. Но, обратите внимание на горизонтальный ползунок полосы прокрутки. Двигаем его вправо до конца и вот она наша ссылочка (да и не одна!!!):


    <div style="display:none;">бесплатно <a href="http://newfilmak.org/">скачать фильмы</a> без регистрации <a href="http://newprogs.net/">скачать софт</a> или <a href="http://newtemplates.ru/relise/">скачать dle</a></div>


    Ссылок в данной строке на самом деле стоит целых три штуки. И действительно, в окне "Найденные ссылки" позиции №№ 0, 1 и 2 указывают на один и тот же файл шаблона static.tpl и его строку под номером 4.
    В результате анализа файлов шаблона Orchid для DLE 9.8 на предмет размещения ссылок, мы обнаружили следующие ссылки:

    <a href="http://newfilmak.org/">скачать фильмы</a>
    <a href="http://newprogs.net/">скачать софт</a>
    <a href="http://newtemplates.ru/relise/">скачать dle</a>
    <a href="http://www.gravatar.com/" target="_blank">Gravatar</a>
    <a href="http://newdownload.ru/">Скачать игры</a>
    <a href="http://newtemplates.ru/">шаблоны dle</a>
    <a href="http://allfilm.net/">бесплатно скачать фильмы</a>


    Как видим, ничего общего с шаблоном и его разработчиком вышеуказанные ссылки не имеют. Их смело можно назвать ссылками-паразитами, назначение которых — получить лишний бэклинк с сайта, на котором будет установлен рассмотренный шаблон. Обнаружить подобные ссылки достаточно трудно. Во-первых, в коде страницы они сдвинуты далеко вправо. При зрительном просмотре исходного кода страницы (пролистывание) — в глаза не бросаются. Во вторых, благодаря заключению в див-ы со стилем display:none, в браузере эти ссылки пользователям не видны. Однако, не стоит забывать, что если Вы видете данные ссылки в исходном коде странице, то и поисковый робот также их видит и учитывает. К размещению ссылок в div style="display:none" поисковые системы относятся крайне негативно. Для примера можно почитать у Яндекса вот такое положение "Чем отличается качественный сайт от некачественного с точки зрения Яндекса?". И при первом стуке Ваших конкурентов, либо простых пользователей можно получить пинок от поисковых систем, проще говоря попасть под фильтр или в бан. Мне, например, известны случаи, когда вполне хорошие сайты для людей, оказывались в бане из-за наличия подобных скрытых ссылок.

    Так как две из ранее найденных программой NoHiddenLinks ссылок ведут на сайт newtemplates.ru, коорый, как мы помним, предлагает только "качественные шаблоны DLE" я решил провести небольшой эксперимент. С данного "замечательного сайта" я скачал еще пару шаблонов для DLE и прогнал их с помощью NoHiddenLinks. В результате, в каждом из шаблонов было обнаружено 7-8 ссылок-паразитов. И самое интересное, что в каждом из проверенных шаблонов ссылки ведут на одни и те же домены, в т.ч. и на newtemplates.ru. Вывод очевиден. Автор сайта newtemplates.ru добавляет в файлы представленных шаблонов свои и партнерские ссылки. Вот такой он молодец! Лошарит народ по полной. Меня, например от души повеселило описание (description) его главной страницы: "У нас вы сможете скачать только качественные шаблоны DLE и шаблоны для DLE 9.8, 9.7, 9.6, 9.5, 9.4". Гы-гы. Особенно слово качественные. За труды автора поставлю на этот сайт вот такую жирную ссылку "Будьте осторожны, скачивая шаблоны для DLE с сайта newtemplates.ru !"

    Совет. Если у Вас свой сайт, не поленитесь — проверьте его движок и шаблон (шаблоны) NoHiddenLinks на предмет скрытых ссылок. Возможно, результат Вас удивит. Помните, что чаще всего скрытые ссылки внедряются злоумышленниками в так называемые null-ы движков и rip-ы различных шаблонов, которые без труда можно найти на торрентах и специализированных форумах и ресурсах. Советую, прежде чем разворачивать движок на хостинге или устанавливать новый бесплатный шаблон — не поленитесь, проверьте их программой NoHiddenLinks. Хуже не будет.
     
  10. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    Практически для любого сайта важнейшей частью является шапка и информация, размещенная в ней, ведь это первое, на что обращает внимание посетитель, попавший на сайт. В шапке сайта может быть размещен абсолютно любой текст, например, адрес магазина, телефон и другие контакты, время работы, либо просто приветственное сообщение. Рассмотрим самый простой способ добавления текста в шапку Opencart.
    [​IMG]
    Для данного способа достаточно отредактировать файлы шаблона header.tpl и файл стилей stylesheet.css. Есть и другие способы, например, вывод адреса и телефона из информации о магазине, которая редактируется в админке, но у такого способа, на мой взгляд, есть минусы — текст, выведенный таким образом нельзя оформить, выделив отдельные слова html тегами.

    Перейдем непосредственно к добавлению текста в шапку сайта. Откроем файл шаблона шапки — header.tpl. Он находится по следующему пути: catalog/view/theme/default/template/common/header.tpl. Если вы используете не стандартный шаблон default, то надо изменять файл header.tpl в папке с названием своего шаблона.


    Добавим новый блок, назовем его header_text и вставим после блока welcome перед строкой <div class="links">, на скриншоте вставленный блок выделен серым:
    [​IMG]
    Содержание блока header_text в данном примере будет таким:
    <div class="header_text">

    <div class="header_adr"><b>Адрес:</b> Название города<br />

    Название улицы, дом №3</div>

    <div class="header_phone"><b>Телефон:</b> (909)123456789</div>

    </div>
    Как видим, он состоит из основного контейнера header_text и двух дополнительных header_adr — для адреса и header_phone для телефона. Заголовки Адрес и Телефон выделены жирным (теги <b></b>), в адресе после названия города стоит переход на новую строку с помощью <br />. У вас текст и оформление блока могут быть абсолютно любыми, но для примера оставим их такими.

    Сохраним файл header.tpl, не забыв проверить кодировку, она должна быть UTF-8, а еще лучше, UTF-8 без BOM, так как мы используем русский текст в файле, другие кодировки лучше не использовать.

    Теперь откроем файл таблиц стилей stylesheet.css. Он расположен по адресу catalog/view/theme/default/stylesheet/stylesheet.css.

    Для начала изменим высоту шапки, чтобы было где разместить адрес и телефон: найдем строку #header (примерно 92 строка) и изменим значение высоты height: 190px;

    Теперь добавим описание стилей нашего нового блока. Добавлять будем после #header #welcome (примерно 299 строка), как показано на скриншоте:
    [​IMG]

    .header_text {

    position: absolute;

    top: 100px;

    left: 20px;

    font-size: 12pt;

    font-family: verdana;

    font-style: italic;

    color: #333;

    border: 1px dashed #38B0E3;

    padding: 10px;

    }

    .header_adr {

    background: url('../image/adres.png') no-repeat left center;

    padding-left: 40px;

    }

    .header_phone {

    background: url('../image/phone.png') no-repeat left center;

    padding-left: 40px;

    }
    Подробнее о том, что мы добавили:

    header_text - абсолютное позиционирование position: absolute; позволяет размещать блок в любом месте главного контейнера с помощью указания координат. В данном примере координаты указаны top:100px; left: 20px; изменяя эти значения в большую или меньшую сторону, можно разместить блок в любом месте шапки. Далее указаны настройки шрифта для блока: размер 12pt, семейство шрифта Verdana, наклон шрифта — italic. Цвет шрифта — темно-серый #333. Рамка вокруг блока толщиной 1px, пунктирная, голубого цвета, отступ между текстом и рамкой 10px.

    .header_adr и .header_phone оформлены с помощью картинок. Изображения можно скачать с приложения и положить в папку catalog/view/theme/default/image . Padding-left задает отступ от картинки, если вы захотите установить свою картинку другого размера, то следует изменить значение padding-left в зависимости от размера изображения. Сохраняем файл stylesheet.css и видим [​IMG]
     

    Вложения:

    • image.zip
      image.zip
      Размер файла:
      1,3 КБ
      Просмотров:
      6
  11. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    Чтобы длинное название товара при просмотре увеличенного изображения помещалось в окне

    Проблема возникает если у нас есть товары с длинными названиями. Вообще, создается ощущение, что OC рассчитан на название товара не больше 20 символов.
    Итак, при переходе в карточку товара с длинным названием и нажав на его фото, мы столкнемся с проблемой "наползания" теста друг на друга.

    [​IMG]

    Существует простой и удобный вариант решения - перенести заголовок "cboxTitle" наверх изображения.

    Нам потребуется лишь одно изменение в файле стилей colorbox:
    В файле catalog/view/javascript/jquery/colorbox/colorbox.css
    меняем
    #cboxTitle{position:absolute; bottom:-25px; left:0; text-align:center; width:100%; font-weight: bold; color:#7C7C7C;}
    на
    #cboxTitle{position:absolute; top:0; left:0; text-align:center; width:100%; font-weight: bold; color:#7C7C7C;}

    [​IMG]
     
  12. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    Иконки в хлебных крошках Opencart 1.5.x
    Необходимо изменить текст`text_separator` в языковых файлах (`catalog/language/english/english.php`, `catalog/language/russian/russian.php` и т.п.):

    $_['text_separator'] = '<img src="image/flags/ua.png" height="42" width="42"/>';

    Расширенная панель редактирования текста


    В Opencart для описаний товара, категории, статей и т.д. используются поля описания. Такие, как на рисунке ниже.

    [​IMG]

    Технически это реализовано с помощью компонента CKEditor - свободного WYSIWYG-редактора, который может быть использован на веб-страницах. В поле описания отображается описание продукта, категории, статьи и т.д. в том виде, который вы увидите в магазине. Это основное достоинство WYSIWYG-редактора.

    Разработчики CKEditor заложили в своё детище гораздо больше возможностей, чем первоначально доступно в Opencart. Настало время устранить эту историческую несправедливость :)

    Сайт CKEditor’а
    • Документация
    • HowTo (Как сделать)
    • Руководство пользователя
    Очень полезные ссылки. Документация хорошая и подробная. И всё, что написано здесь, можно найти в документации. Рекомендуется в закладки.

    В опенкарте CKEditor расположен в папке admin\view\javascript\ckeditor\

    Наиболее полезные файлы -- это ckeditor.js (собственно, сам компонент) и config.js(конфигурация компонента).

    Изучаем конфиг
    Например, в строчке config.language = 'fr'; задаётся язык по умолчанию. Смело меняем frна ru.

    Строки config.filebrowserWindowWidth = '800'; и config.filebrowserWindowHeight = '500';задают ширину и высоту компонента. Здесь интересна больше высота. Если у вас большие по объёму тексты описания, логичным будет увеличить высоту компонента. Будет удобней.

    Строка config.resize_enabled = false; -- вкл/выкл возможность менять размер компонента. Странно, что она отключена. Ставим true вместо false.

    Ещё одна полезная фича – использовать свою конфигурацию в отдельном файле. Удобно тем, что можно безболезненно обновлять CKEditor, не затрагивая конфигурацию. Делается так:

    В файле конфигурации config.js добавляем строчку customConfig : 'myconfig.js';

    То есть мы указали использовать в качестве конфига файл myconfig.js. Где взять этот файл? Делаем копию файла config.js, переименовываем её в myconfig.js, настраиваем как нужно

    Настриваем тулбары
    Тулбары – это строки с иконками в верхней части компонента.

    По умолчанию в конфиге их два: Custom, который установлен по умолчанию, и Full, с полным набором возможностей, о котором говорилось выше.

    В конфиге тулбары описываются так:

    config.toolbar_Full = [
    ['Source','-','Save','NewPage','Preview','-','Templates'],
    ['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'],
    ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
    ['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField'],
    '/',
    ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
    ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
    ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
    ['Link','Unlink','Anchor'],
    ['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
    '/',
    ['Styles','Format','Font','FontSize'],
    ['TextColor','BGColor'],
    ['Maximize', 'ShowBlocks','-','About']
    ];
    Запись понятна и с ней не так уж сложно разобраться. Как вы можете видеть, символ '/'разделяет строки тулбара, символ '-' добавляет разделитель (вертикальная чёрточка) внутри строки, группы иконок в строке заключаются в символы […], название тулбара записывается в строчке config.toolbar_Full после символа подчёркивания.

    Взяв за образец запись тулбара Full, Вы можете настроить его как Вам удобно, например, убрать невостребованные иконки, поменять их местами, удобно сгруппировать по строкам.

    В динамике
    CKEditor можно настраивать динамически. Т.е., для разных страниц делать разную конфигурацию и поведение CKEditor. Например, настроим шаблон редактирования категории.

    Открываем файл admin\view\template\catalog\category_form.tpl

    Ищем ближе к концу файла примерно такой код:

    <script type="text/javascript" src="view/javascript/ckeditor/ckeditor.js"></script>
    <script type="text/javascript"><!--
    <?php foreach ($languages as $language) { ?>
    CKEDITOR.replace('description<?php echo $language['language_id']; ?>', {
    filebrowserBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
    filebrowserImageBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
    filebrowserFlashBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
    filebrowserUploadUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
    filebrowserImageUploadUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
    filebrowserFlashUploadUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>'
    });
    <?php } ?>
    //--></script>
    <script type="text/javascript"><!--
    Начиная со строки filebrowserBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>', идут настройки CKEditor.

    Мы можем добавить toolbar : 'Full', и в шаблоне CKEditor будет отображать полный тулбар. Т.е., можно делать по аналогии с файлом конфига. Но если в конфиге строчки начинаются со слова .config, то здесь их нужно писать без начального слова .config.

    Динамически конфигурируя и настраивая CKEditor, вы можете настроить поля описания как вам удобно в каждом конкретном случае.
     
  13. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    Добавляем артикул в карту товара:
    Для вывода SKU (артикула) в карте товара, необходимо в файл
    catalog\controller\product\product.php
    после строчки
    PHP:
    $this->data['model'] = $product_info['model'];
    добавить
    PHP:
    $this->data['sku'] = $product_info['sku'];
    а в файл:
    catalog\view\theme\default\template\product\product.php
    добавить
    PHP:
    <span>Артикул:</span> <?php echo $sku; ?><br />
     
  14. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    Отображение всех продуктов в родительской категории:
    Проделанные манипуляции будут выводить все товары не только в свои подкатегориях, а так же и в родительских категориях, даже если они не выбранны при внесении товара в админке.
    в файл:
    catalog/controller/product/category.php
    после строк
    PHP:
    'filter_category_id' => $category_id,
    необходимо добавить следующее
    PHP:
    'filter_sub_category' => true,
     
  15. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    Показывать картинки категорий на главной странице:
    1. Открываем/catalog/controller/common/header.php

    2. Ищем:

    Код:
    // Level 1
    $this->data['categories'][] = array(
    'name' => $category['name'],
    'children' => $children_data,
    'column' => $category['column'] ? $category['column'] : 1,
    'href' => $this->url->link('product/category', 'path=' . $category['category_id'])
    );

    3. И заменяем на:

    Код:
    // Level 1
    $this->load->model('tool/image');
    $image = empty($category['image']) ? 'no_image.jpg' :
    $category['image'];
    $thumb = $this->model_tool_image->resize($image, 100, 100);
    $this->data['categories'][] = array(
    'name' => $category['name'],
    'children' => $children_data,
    'column' => $category['column'] ? $category['column'] : 1,
    'thumb' => $thumb,
    'href' => $this->url->link('product/category', 'path=' .
    $category['category_id'])
    );

    4. Затем, вставляем
    Код:
    <?php echo $ category['thumb']; ?>
    в любое место, в
    Код:
    /catalog/view/theme/[your-theme-name]/template/common/header.tpl

    5. P.S. Длинна и ширина картинки заданы по 100px.
     
  16. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    Меняем ссылку "Главная" - site.com/index.php?route=common/home на site.com
    Работает на 1.5.5.1.1
    В файле ...\system\library\url.php
    После:
    if ($args) {
    $url .= str_replace('&', '&amp;', '&' . ltrim($args, '&'));
    }
    Добавляем:
    else { if($route == 'common/home') { if($connection == 'NONSSL') { return HTTP_SERVER; } else { return HTTPS_SERVER; } } }
     
  17. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    Делаем один язык в opencart или убираем английский

    1) Самый простой способ.
    Чтобы сделать магазин только на русском - удаляем английский язык через админку opencarta : Система -> Локализация -> Языки.
    Но иногда такой способ не проходит - потому, что английский это fallback language то есть системный язык для некоторых шаблонов, например shoppica 2. Поэтому при его удалении может выдать кучу ошибок.

    2) Если нужно оставить один язык, не удаляя английский , то при добавлении товара все равно приходится заполнять название товара для английской вкладки.
    Можно сделать поле название товара для английской вкладки необязательным, закоментировав код в файле \admin\controller\catalog\product.php
    Код:
    /*foreach ($this->request->post['product_description'] as $language_id => $value) {
    if ((utf8_strlen($value['name']) < 1) || (utf8_strlen($value['name']) > 255)) {
    $this->error['name'][$language_id] = $this->language->get('error_name');
    }
    }*/
     
  18. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    Ключевые слова на главной странице
    Вариант 1

    Установить модуль "Ключевые слова на главной странице 1.1"

    Вариант 2
    В файле catalog/view/theme/default/template/common/header.tpl
    Находим:
    Код:
    <?php if ($keywords) { ?>
    <meta name="keywords" content="<?php echo $keywords; ?>" />
    <?php } ?>
    Заменяем на:
    Код:
    <?php if ($keywords) { ?>
    <meta name="keywords" content="<?php echo $keywords; ?>" />
    <?php } else { ?>
    <meta name="keywords" content="через, запятую, все, ключевые, слова, которые, для, главной, странице" />
    <?php } ?>
    Сохранить файл в кодировке "UTF-8" для нормального отображения ключевых слов на сайте.
     
  19. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    Включаем панель инструментов с полный набором кнопок в редакторе CKEditor
    В файле admin\view\javascript\ckeditor\config.js
    Меняем строку config.toolbar = 'Custom';
    на config.toolbar = 'Full';
     
  20. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    12.037
    Симпатии:
    2.467
    Подсвечиваем установленные модули в списке Дополнения -> Модули

    В файле admin/view/template/extension/module.tpl
    находим:
    Код:
    <?php foreach ($extensions as $extension) { ?>
    <tr>
    заменяем на:
    Код:
    <style>.list tbody td {background:none;}</style>
    <?php foreach ($extensions as $extension) { ?>
    <tr<?php echo (count($extension['action']) >= 2)?' style="background:#f4ffed !important;border-left: 5px solid #b1db95 !important; border-right: 5px solid #b1db95 !important;"':''; ?>>
     

Поделиться этой страницей

iHax Community
Рейтинг@Mail.ru Яндекс.Метрика мониторинг сайтов
Форум программного обеспечения/
Загрузка...