Создание дополнительного телефона

Тема в разделе "Инструкции и FAQ", создана пользователем solunski.d, 14 авг 2015.

  1. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.566
    Симпатии:
    428
    Изменения проводил на версии OpenCart 2.0.3.1 от издателя "OpenCart Russia"

    В этот уроке мы создадим в "Настройках магазина" во вкладке "Основное" новое поле, где мы будем вводить дополнительный телефон для нашего интернет магазина и выведем его на странице контактов. Приступим!

    * - префикс, может отличатся
    Идем в базу данных MySQL. Находим в базе данных структуру таблицу *_setting. Ищем по ключу (key) значение - config_telephone, копируем эту таблицу с новым ключом (key) config_telephone2, а в поле значение (value) можем указать телефон.
    На этом этапе мы закончили работу с базой данных, теперь приступим к создание самих полей.

    Идем в admin/view/template/setting и редактируем файл setting.tpl
    1. включаем быстрый поиск CTRL+F вбиваем <?php echo $config_telephone; ?>
    2. Находим, создаем копию блока
    3. в элементе input в атрибуте "name" указываем config_telephone2, а в атрибуте "value" = <?php echo $config_telephone2; ?>
    В итоге у нас получается вот такой блок
    PHP:

    <div class="form-group">
        <label class="col-sm-2 control-label" for="input-telephone"><?php echo $entry_telephone?></label>
        <div class="col-sm-10">
         <input type="text" name="config_telephone2" value="<?php echo $config_telephone2?>" placeholder="<?php echo $entry_telephone?>" id="input-telephone2" class="form-control" />
         <?php if ($error_telephone) { ?>
         <div class="text-danger"><?php echo $error_telephone?></div>
         <?php ?>
        </div>
    </div>
    Отлично! Теперь нужно объявить нашу переменную в контроллере, чтобы она заработала.

    Идем в admin/controller/setting/ и редактируем файл setting.php

    1. Находим блок
    PHP:
            if (isset($this->error['telephone'])) {
                
    $data['error_telephone'] = $this->error['telephone'];
            } else {
                
    $data['error_telephone'] = '';
            }
    После него вставляем
    PHP:
            if (isset($this->error['telephone2'])) {
                
    $data['error_telephone'] = $this->error['telephone2'];
            } else {
                
    $data['error_telephone'] = '';
            }
    2. Находим блок
    PHP:
            if (isset($this->request->post['config_telephone'])) {
                
    $data['config_telephone'] = $this->request->post['config_telephone'];
            } else {
                
    $data['config_telephone'] = $this->config->get('config_telephone');
            }
    После него вставим
    PHP:
            if (isset($this->request->post['config_telephone2'])) {
                
    $data['config_telephone2'] = $this->request->post['config_telephone2'];
            } else {
                
    $data['config_telephone2'] = $this->config->get('config_telephone2');
            }
    Все, с административной частью мы закончили, теперь давайте выведем наш дополнительный телефон на страницу контактов.

    Идем в catalog/controller/information/ и редактируем файл contact.php
    1. Врубаем поисковик, вбиваем $data['telephone'] = $this->config->get('config_telephone');
    2. После этой строки добавляем $data['telephone2'] = $this->config->get('config_telephone2');

    Идем catalog/view/theme/*/template/information/c и редактируем файл contact.tpl
    1. Врубаем поисковик, вбиваем <?php echo $telephone; ?><br />
    2. После этой строки добавляем <?php echo $telephone2; ?><br />

    Возможно сделаю окмод :D
    Вот и все!
     
    Последнее редактирование: 20 апр 2017
    trace, siv.termo, АлексейК и 6 другим нравится это.
  2. Aleksandr

    Aleksandr Новичок

    Сообщения:
    1
    Симпатии:
    2
    Спасибо!

    Для "шапки" еще можно добавить
    1. в /.../catalog/view/theme/default/template/common/header.tpl
      строку
      <li><a href="<?php echo $contact; ?>"><i class="fa fa-phone"></i></a> <span class="hidden-xs hidden-sm hidden-md"><?php echo $telephone2; ?></span></li>
    2. в /.../catalog/controller/common/header.php строку $data['telephone2'] = $this->config->get('config_telephone2');
     
    АлексейК и solunski.d нравится это.
  3. JackieChan

    JackieChan Новичок

    Сообщения:
    4
    Симпатии:
    0
    Добавила 2-ой телефон давным давно и все прекрасно работало. Недавно при попытке добавить 3-ий появилась ошибка - undefined variable. (В шаблоне админки доп. поле не появилось) Перепроверила все по нескольку раз, могла ли быть причина в установке модуля Seo Pro? Отключала его, результат тот же.
    Ок, тогда можно поступить проще - добавить телефон в поле факса(все равно не используется) и вывести в шаблон. Но безрезультатно, факс почему-то тоже перестал работать. Когда вернулась в phpmyadmin и проверила *_setting, не нашла там недавно введенного config_telephone3 . Добавила его заново, но через некоторое время после манипуляций вернувшись туда, снова его не обнаружила. Получается, что оно все время исчезает. :confused: Кто-нибудь сталкивался с подобным?
     
    Последнее редактирование: 20 янв 2016
  4. АлексейК

    АлексейК Новичок

    Сообщения:
    11
    Симпатии:
    0
    Товарищи! А как сделать, чтобы поле ввода дополнительного номера телефона появилось в админке?
     
  5. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.566
    Симпатии:
    428
    Прочитать эту статью и выполнить по шагам
     
  6. АлексейК

    АлексейК Новичок

    Сообщения:
    11
    Симпатии:
    0
    Все, что сказано в статье я сделал и все получилось. Вопрос, как это сделать доступным теперь для редактирования из админки (чтобы было поле "Телефон 2"). Скрин прилагаю.
     

    Вложения:

  7. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.566
    Симпатии:
    428
    У вас должно было появиться доп поле в админке, обновите модификаторы что ли.
     
  8. АлексейК

    АлексейК Новичок

    Сообщения:
    11
    Симпатии:
    0
    Спасибо! Ошибку нашел сам. Проблема в том, что сайтом занимается несколько человек. Одновременно правили setting.tpl, сохранилось последнее изменение, естественно без правок на номер.
     
  9. opencarter

    opencarter Пользователь

    Сообщения:
    54
    Симпатии:
    1
    Спасибо большое за статью!
    Сделал все по инструкции, поля в админке для ввода доп.номеров появились, но выглядит это немного криво (см.рисунок). А еще появился такой глюк: перестала отображаться информация на вкладках после вкладки Витрина. А точнее вся информации из этих вкладок отображается теперь только во вкладке Витрина огромным списком вниз. Если я переключаюсь на вкладку Локализация, Опции и т.д. то вкладка как бы активируется, но все равно информация та же, что и на вкладке Витрина.
    Подскажите в чем может быть проблема?
     

    Вложения:

  10. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.566
    Симпатии:
    428
    То что у вас с номером, это говорит о том что вы что то напортачили когда вставляли HTML код.
    Ну и на по следок, зачем вы делаете то, что не понимаете, это тоже самое что сесть за машину и поехать не имея навыков вождения.
     
  11. opencarter

    opencarter Пользователь

    Сообщения:
    54
    Симпатии:
    1
    Что напортачил это я понимаю. Хотелось бы еще понять, где именно.
    Учиться никогда не поздно. Попробовал, сделал, почти получилось. А дальше, лучше уж спрошу и покажусь дураком, чем не спрошу и буду казаться умным.
     
  12. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.566
    Симпатии:
    428
    Там где и вставляли HTML код.
     
  13. opencarter

    opencarter Пользователь

    Сообщения:
    54
    Симпатии:
    1
    Исправил.
    Забыл добавить в файле setting.tpl в конце кода вот это </div>.
     
  14. Alexis

    Alexis Новичок

    Сообщения:
    1
    Симпатии:
    0
    Добрый день. Хочу добавить в шапку сайта 3-и телефона. Сделал все как описано в уроке в итоге все 3-и телефона отображаются правильно в разделе "Связаться с нами", но в шапке сайта теперь отображается ошибка (Undefined variable: telephone2 и Undefined variable: telephone3) Хотя я объявлял переменные telephone2 и telephone3 в setting.php. Помогите, пожалуйста, в чем может быть проблема? Версия opencart 2.1.0.2.1.
     
    Последнее редактирование: 10 июл 2016
  15. siv.termo

    siv.termo Новичок

    Сообщения:
    14
    Симпатии:
    0
    Сделала все по аналогии на 1.5.5.1.1. Все заработало - Места для телефонов в админке отображаются и на сайте выводятся, но при повторном открытии админ панели телефоны 2 и 3 пропадают. Приходится вводить заново. Не могу понять почему и как с этим бороться.
     
  16. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.566
    Симпатии:
    428
    Данные которые вы вписываете в поля, сохраняются и отображаются непосредственно на сайте, но в административной панели их нет, потому что код который представлен тут, для версии OpenCart 2, а у Вас 1.5. Решение проблемы очень просты и очевидны, достаточно глянуть как другие данные выводятся. Но я вам советую уйти с 1.5, так как это уже не безопасная система.

    А вот собственно и решение для 1.5
    PHP:
    if (isset($this->error['telephone'])) {
        
    $this->data['error_telephone'] = $this->error['telephone'];
    } else {
        
    $this->data['error_telephone'] = '';
    }
    * Пожалуйста, не просто копи пейст, а присмотритесь в чем разница между выше приведенным решением и кодом приведенной в данной статье.
     
  17. siv.termo

    siv.termo Новичок

    Сообщения:
    14
    Симпатии:
    0
    Это я как раз написала правильно. Верх поста взяла за идею и делала по аналогии.
    Меня больше смущает, то что я не сделала первый пункт.

    "Идем в базу данных MySQL. Находим в базе данных структуру таблицу *_setting. Ищем по ключу (key) значение - config_telephone, копируем эту таблицу с новым ключом (key) config_telephone2, а в поле значение (value) можем указать телефон."

    Тупо не нашла где. Решила что из -за разных версий.

    Журнал ошибок выдает:
    2016-10-13 13:53:25 - PHP Notice: Undefined variable: config_telephone2 in /www/vqmod/vqcache/vq2-admin_view_template_setting_setting.tpl on line 63
    2016-10-13 13:53:25 - PHP Notice: Undefined variable: config_telephone3 in /www/vqmod/vqcache/vq2-admin_view_template_setting_setting.tpl on line 71
     
  18. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.566
    Симпатии:
    428
    Ооо... VQMOD...
    В базе данных вы создали ячейки для хранения телефона?
    После того как все пункты проделаны, нужно зайти в папку vqmod/vqcashe/ и очистить содержимое этой папки.
     
  19. siv.termo

    siv.termo Новичок

    Сообщения:
    14
    Симпатии:
    0
    Судя по всему они создались без моего непосредственного участия
     
    Последнее редактирование: 13 окт 2016
  20. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.566
    Симпатии:
    428
    В базе данных, нужно зайти через phpMyAdmin, вы же как то создали базу данных и установили движок.