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

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

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;
        }
 

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 } ?>
Теперь, после подачи объявления незарегистрированным пользователем появится номер телефона!
 

Александр Рэм

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

Saska19

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

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

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

Saska19

Пользователь
Спасибо за предупреждение!

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

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

titilio

Новичок
Извиняюсь за глупый вопрос, учусь. У меня в базе нет oc_t_items, есть только oc_t_item . Куда мне, вбивать новую строку? Версия движка 3.2 . Спасибо.
 
всё, разобрался, в файле ItemActions.php нужно в 2-х местах проделать следующее
Далее:
Код:
//ищем строчку
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_t_items, есть только oc_t_item . Куда мне, вбивать новую строку? Версия движка 3.2 . Спасибо.
вот в эту таблицу и вбивай, в шапке опечатке, в файле oc-includes/osclass/model/item.php прописывается то
PHP:
$this->setTableName('t_item');
 

Петр

Новичок
Редактируем шаблон: 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 } ?>
Теперь, после подачи объявления незарегистрированным пользователем появится номер телефона!

<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>
По всей видимости нужно организовать подобный абзац и для телефонного номера, но имена переменных не ясно какие брать.. Подскажите пожалуйста что можно сделать?
 

Saska19

Пользователь
<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>
По всей видимости нужно организовать подобный абзац и для телефонного номера, но имена переменных не ясно какие брать.. Подскажите пожалуйста что можно сделать?
Добрый день, я сделал так:
в файле ваша тема/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'] ) ) );


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

Baks

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

Baks

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

Baks

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