1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Уважаемый Гость! Если вы зарегистрировались на нашем форуме, значит вам нужна помощь! Мы всегда рады вам помочь, еще ни один пользователь не получил отказа! Но мы так же нуждаемся в Вашей поддержке. Проект полностью бесплатный, мы не имеем права требовать от вас денег, нам это и не нужно! Но от любой финансовой поддержки не откажемся. Проект развивается, но иногда очень тяжело его поддерживать, особенно в финансовом отношении. Если у вас есть возможность поддержать нас финансово, мы будем вам очень благодарны! С уважением, команда Оскласс Россия!
    Скрыть объявление
  3. Изменение в правилах форума! В связи с огромным количеством вопросов поступающих в адрес технической поддержки мы решили изменить правила форума! Просим всех пользователей обратить внимание на данные изменения и четко их соблюдать!
    Скрыть объявление
  4. Ребята, нуждаемся в программистах! Если хотите зарабатывать и есть время, пишите администраторам сайта. Есть база и инструменты, нужен опыт и знания =)
    Скрыть объявление

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

Тема в разделе "Шаблоны и улучшения", создана пользователем administrator, 26 сен 2013.

  1. administrator

    administrator Блудный сын. Команда форума

    Поле номер телефона для не зарегистрированных пользователей.
    Перед внесением изменений советую сделать резервную копию сайта, а так же базы данных!
    Откроем Нашу базу данных, и в поле oc_t_items вставим новую строку:
    Код:
    s_contact_phone VARCHAR(45) NULL,
    Для существующего сайта вносить изменения можно через Phpmyadmin, сделайте тоже самое, что на картинке.
    db_osc.png
    Далее изменим файл вывода объявлений oc-includes/osclass/model/item.php
    добавим строку s_contact_phone
    Код:
            function __construct()
            {
                parent::__construct();
                $this->setTableName('t_item');
                $this->setPrimaryKey('pk_i_id');
                $array_fields = array(
                    'pk_i_id',
                    'fk_i_user_id',
                    'fk_i_category_id',
                    'dt_pub_date',
                    'dt_mod_date',
                    'f_price',
                    'i_price',
                    'fk_c_currency_code',
                    's_contact_name',
                    's_contact_email',
                    's_contact_phone',
                    'b_premium',
                    's_ip',
                    'b_enabled',
                    'b_active',
                    'b_spam',
                    's_secret',
                    'b_show_email',
                    'dt_expiration'
                );
                $this->setFields($array_fields);
            }
    Далее добавим новую функцию в файл oc-includes/osclass/helpers/hitems.php
    Код:
        function osc_item_contact_phone() {
            return (string) osc_item_field("s_contact_phone");
        }
    Затем добавим в oc-includes/osclass/helpers/hpremium.php
    функцию:
    Код:
        function osc_premium_contact_phone() {
            return (string) osc_premium_field("s_contact_phone");
        }
    Теперь изменим файл отвечающий за форму объявления: c-includes/osclass/ItemActions.php
    Код:
    //после строки -
                $contactEmail      = strip_tags( trim( $aItem['contactEmail'] ) );
    //добавим -
                $contactPhone      = strip_tags( trim( $aItem['contactPhone'] ) );
    Затем:
    Код:
    //после строки
                        's_contact_email'      => $contactEmail,
    //добавим эту строчку
                        's_contact_phone'      => $contactPhone,
    Теперь изменим форму редактирования объявления:
    Код:
    //так же ищем строку
                        $aItem['contactEmail'] = $user['s_email'];
    //и после нее добавим
                        $aItem['contactPhone'] = ($user['s_phone_mobile'])? $user['s_phone_mobile'] : $user['s_phone_land'];
    Далее форма, ее тоже отредактируем
    Код:
    //ищем строчку
                        $aUpdate['s_contact_email'] = $aItem['contactEmail'];
    //и после нее добавим
                        $aUpdate['s_contact_phone'] = $aItem['contactPhone'];
    Далее:
    Код:
    //ищем строчку
                    Params::setParam('contactEmail', $data['s_email']);
    //после нее добавим
                    Params::setParam('contactPhone', ($data['s_phone_mobile'])? $data['s_phone_mobile'] : $data['s_phone_land']);
    В итоге должно получиться вот так:

    Код:
                if($userId != null) {
                    $aItem['contactName']  = $data['s_name'];
                    $aItem['contactEmail']  = $data['s_email'];
                    $aItem['contactPhone']  = ($data['s_phone_mobile'])? $data['s_phone_mobile'] : $data['s_phone_land'];
                    Params::setParam('contactName', $data['s_name']);
                    Params::setParam('contactEmail', $data['s_email']);
                    Params::setParam('contactPhone', ($data['s_phone_mobile'])? $data['s_phone_mobile'] : $data['s_phone_land']);
                } else {
                    $aItem['contactName']  = Params::getParam('contactName');
                    $aItem['contactEmail']  = Params::getParam('contactEmail');
                    $aItem['contactPhone']  = Params::getParam('contactPhone');
                }
    Теперь отредактируем oc-includes/osclass/frm/item.form.class.php
    добавим функцию contact_phone_text()
    Код:
            static public function contact_phone_text($item = null) {
                if($item==null) { $item = osc_item(); };
                if( Session::newInstance()->_getForm('contactPhone') != "" ) {
                    $item['s_contact_phone'] = Session::newInstance()->_getForm('contactPhone');
                }
                parent::generic_input_text('contactPhone', (isset($item['s_contact_phone'])) ? $item['s_contact_phone'] : null);
                return true;
            }
     
    ЛивАрт нравится это.
  2. administrator

    administrator Блудный сын. Команда форума

    Это еще не все!
    Сейчас будем выводить номер телефона в сам шаблон!
     
  3. administrator

    administrator Блудный сын. Команда форума

    Редактируем шаблон: oc-content/themes/ваша_тема/item.php
    после строчек:
    Код:
                                <h2><?php _e("Contact Publisher", 'ваша_тема') ; ?></h2>
                                <p class="name"><?php _e('Name', 'ваша_тема') ?>: <?php echo osc_item_contact_name(); ?></p>
    
    Добавим следующий код:
    Код:
                    <?php $phoneuser = osc_item_contact_phone();
                    if ($phoneuser != "") { ?>
                            <p>Phone: <?php echo $phoneuser; ?></p>
                    <?php } ?>
    Мы вывели номер телефона в объявлении в правой колонке, вы можете вставить код в любое место и номер телефона будет выводиться там где это понадобится!
    Открываем файл oc-content/themes/ваша_тема/item-post.php
    после поля email, вставляем поле номер телефона:
    Код:
                                <div class="control-group">
                                    <label class="control-label" for="contactEmail"><?php _e('E-mail', 'ваша_тема'); ?></label>
                                    <div class="controls">
                                    <?php ItemForm::contact_email_text(); ?>
                                    </div>
                                </div>
    Собственно, вот оно:
    Код:
                              <div class="control-group">
                                    <label class="control-label" for="contactPhone"><?php _e('Номер телефона', 'Ваша тема'); ?></label>
                                    <div class="controls">
                                    <?php ItemForm::contact_phone_text(); ?>
                                    </div>
                                </div>
    Продолжим манипуляции, откроем файл oc-admin/themes/modern/items/frm.php
    Код:
    //найдите код
                                    <div class="input-has-placeholder input-separate-top">
                                        <label><?php _e('E-mail'); ?></label>
                                        <?php ItemForm::contact_email_text(); ?>
                                    </div>
    //после него добавьте
                                    <?php if( osc_item_user_id() == null ) { ?>
                                        <div class="input-has-placeholder input-separate-top">
                                            <label><?php _e('Телефон'); ?></label>
                                            <?php ItemForm::contact_phone_text(); ?>
                                        </div>
                                    <?php } ?>
    Теперь, после подачи объявления незарегистрированным пользователем появится номер телефона!
     
    AndriStad, ЛивАрт и Baks нравится это.
  4. administrator

    administrator Блудный сын. Команда форума

    P.S. Данная функция будет включена в сборку.
     
    Александр Рэм нравится это.
  5. Александр Рэм

    Александр Рэм Активный пользователь

    Спасибо за помощь! Сам вряд ли смог сделать. Сейчас буду пробовать. Пока в Denwere
     
  6. allexx

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

    Спасибо, будем править.
     
  7. Saska19

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

    Спасибо!
     
  8. Александр Рэм

    Александр Рэм Активный пользователь

    Наконец подправил файлы. Номер телефона зарегистрированных и незарегистрированных пользователей отображается. Всё OK! :) Только возникла небольшая проблема. Сайт у меня уже запущен, работает полтора месяца, размещено около пятисот объявлений, исчезли все номера телефона незарегистрированных пользователей разместивших объявление (номер телефона - дополнительное поле созданное в админке). Сейчас в ручном режиме буду доставать из базы номера и через админку добавлять к объявлениям. И сразу совет всем кто решит подправить файлы - делайте это до запуска сайта, или устанавливайте новую сборку Оскласс Россия!. okay.co.ua
     
  9. Saska19

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

    Спасибо за предупреждение!

    Вы случайно не сталкивались с тем, что нельзя удалить некоторые объявления? Активируешь кнопку удалить и выдается такое сообщение "
    Объявление, которое вы пытаетесь удалить, не может быть удалено
    "
     
  10. Saska19

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


    Объявление, которое вы пытаетесь удалить, не может быть удалено
     
  11. titilio

    titilio Новичок

    Извиняюсь за глупый вопрос, учусь. У меня в базе нет oc_t_items, есть только oc_t_item . Куда мне, вбивать новую строку? Версия движка 3.2 . Спасибо.
     
  12. Вячеслав 1383382

    Вячеслав 1383382 Новичок

    Почему номер не записывается в базу?
     
  13. Вячеслав 1383382

    Вячеслав 1383382 Новичок

    всё, разобрался, в файле ItemActions.php нужно в 2-х местах проделать следующее
     
  14. Вячеслав 1383382

    Вячеслав 1383382 Новичок

    вот в эту таблицу и вбивай, в шапке опечатке, в файле oc-includes/osclass/model/item.php прописывается то
    PHP:
    $this->setTableName('t_item');
     
  15. Петр

    Петр Новичок

    <h2><?php _e("Contact Publisher", 'ваша_тема') ; ?></h2>
    <p class="name"><?php _e('Name', 'ваша_тема') ?>: <?php echo osc_item_contact_name(); ?></p> - Таких строчек нет в этом файле, также и нет шаблона modern в вашем релизе 3.3.0 и в релизе 3.3.2 его тоже нет В результате форма для ввода телефона есть а вывода нет

    В файле oc-content/themes/bender/item.php есть такие строки:
    <div class="control-group">
    <label class="control-label" for="authorName"><?php _e('Your name', 'bender'); ?></label>
    <div class="controls">
    <?php CommentForm::author_input_text(); ?>
    </div>
    </div>
    <div class="control-group">
    <label class="control-label" for="authorEmail"><?php _e('Your e-mail', 'bender'); ?></label>
    <div class="controls">
    <?php CommentForm::email_input_text(); ?>
    </div>
    </div>
    По всей видимости нужно организовать подобный абзац и для телефонного номера, но имена переменных не ясно какие брать.. Подскажите пожалуйста что можно сделать?
     
  16. Saska19

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

    Добрый день, я сделал так:
    в файле ваша тема/item-post.php вставил следующее:

    <div class="box seller_info">
    <h2><?php _e("Seller's information", 'ваша тема'); ?></h2>
    <div class="row">
    <label for="contactName"><?php _e('Name', 'ваша тема'); ?></label>
    <?php ItemForm::contact_name_text(); ?>
    </div>
    <div class="control-group">
    <label class="control-label" for="contactPhone"><?php _e('Phone', 'ваша тема'); ?></label>
    <div class="controls">
    <?php ItemForm::contact_phone_text(); ?>
    </div>
    </div>
    <div class="row">
    <label for="contactEmail"><?php _e('E-mail', 'ваша тема'); ?> *</label>
    <?php ItemForm::contact_email_text(); ?>
    </div>
    <div class="row">
    <?php ItemForm::show_email_checkbox(); ?>
    <label for="showEmail"><?php _e('Show e-mail on the listing page', 'ваша тема'); ?></label>
    </div>
    </div>

    Далее в файле frm/Item.form.class.php вставляем после скрипта(вначале документа) перед static public function :
    /*
    * Функция вывода номера телефона
    */
    static public function contact_phone_text($item = null) {
    if($item==null) { $item = osc_item(); };
    if( Session::newInstance()->_getForm('contactPhone') != "" ) {
    $item['s_contact_phone'] = Session::newInstance()->_getForm('contactPhone');
    }
    parent::generic_input_text('contactPhone', (isset($item['s_contact_phone'])) ? $item['s_contact_phone'] : null);
    return true;
    }

    Далее в документе osclass/ItemAction.php вставляем :

    // Sanitize
    foreach(@$aItem['title'] as $key=>$value) {
    $aItem['title'][$key] = strip_tags( trim ( $value ) );
    }
    $aItem['price'] = !is_null($aItem['price']) ? strip_tags( trim( $aItem['price'] ) ) : $aItem['price'];
    $contactName = strip_tags( trim( $aItem['contactName'] ) );
    $contactEmail = strip_tags( trim( $aItem['contactEmail'] ) );
    $contactPhone = strip_tags( trim( $aItem['contactPhone'] ) );
    $aItem['cityArea'] = osc_sanitize_name( strip_tags( trim( $aItem['cityArea'] ) ) );
    $aItem['address'] = osc_sanitize_name( strip_tags( trim( $aItem['address'] ) ) );


    Вроде все, делал давно может что и позабыл.)))
     
  17. Baks

    Baks Новичок

    Извините а в какую сборку будет включена эта функция? В сборке 3.3.0 этой функции нет. Просто самому не получается сделать такую фишку. Дело в том что в базе данных, в поле oc_t_items строка s_contact_phone уже есть.
     
  18. Baks

    Baks Новичок

    Спасибо большое administrator, всё заработало, дело оказалось в том что я многое напридумывал сам, а оказывается всё нужно было делать как у вас =)
     
  19. Baks

    Baks Новичок

    Здравствуйте, понимаю что возможно не в тему пишу, но тем не менее вопрос связан с этой темой. Подскажите пожалуйста как можно сделать поле Номер телефона обязательным для заполнения?
     
  20. djnavel

    djnavel Модератор

    class="required"
     
    Baks нравится это.
Загрузка...

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