суботу, 15 лютого 2014 р.

Контакты в шапке сайта (урок 3)




В сегодняшнем уроке:
- создадим формы в админ-панели ( номер, иконка и имя);
- выведем данные, из выше упомянутых форм, в нужное нам место (шапку OpenCart).


Будем править следующие файлы (делаем их копии):

\admin\controller\setting\setting.php
\admin\view\template\setting\setting.tpl
\admin\language\russian\setting\setting.php
\admin\language\russian\russian.php
\catalog\controller\common\header.php
\catalog\view\theme\default\template\common\header.tpl
Делалось на OpenCart 1.5.4.1

1.0. Начнем с
\admin\controller\setting\setting.php

1.1. ищем:
this->data['entry_address'] = $this->language->get('entry_address');

после вставляем:
// контакты - подключаем вывод языкового модуля.
$this->data['entry_contact_namber'] = $this->language->get('entry_contact_namber');
$this->data['entry_contact_icon'] = $this->language->get('entry_contact_icon');
$this->data['entry_contact_name'] = $this->language->get('entry_contact_name');
$this->data['entry_contact_margin_left'] = $this->language->get('entry_contact_margin_left');
$this->data['entry_contact_img_from'] = $this->language->get('entry_contact_img_from');

1.2. находим:
$this->data['button_cancel'] = $this->language->get('button_cancel');

после вставляем:
$this->data['tab_contacts'] = $this->language->get('tab_contacts');

1.3. в этом же файле ищем:
$files = glob(DIR_SYSTEM . 'smsgate/*.php');

после вставляем:
// Покажет ошибку, если путь к папке с иконками задан не правильно.
if (isset($this->error['img_from_error'])) {
$this->data['error_config_contact_img_from'] = $this->error['img_from_error'];
} else {
$this->data['error_config_contact_img_from'] = '';
}

// Покажет ошибку, если отступ указан неверно.
if (isset($this->error['margin_left_error'])) {
$this->data['error_config_contact_margin_left'] = $this->error['margin_left_error'];
} else {
$this->data['error_config_contact_margin_left'] = '';
}

1.4. далее по файлу находим:
if (isset($this->request->post['config_address'])) {
$this->data['config_address'] = $this->request->post['config_address'];
} else {
$this->data['config_address'] = $this->config->get('config_address');
}

после вставляем:
// Добавляет и берет данные формы "Путь к папке с иконкой"
if (isset($this->request->post['config_contact_img_from'])) {
$this->data['config_contact_img_from'] = $this->request->post['config_contact_img_from'];
} else {
$this->data['config_contact_img_from'] = $this->config->get('config_contact_img_from');
}

// Добавляет и берет данные формы "Отступ текста слева"
if (isset($this->request->post['config_contact_margin_left'])) {
$this->data['config_contact_margin_left'] = $this->request->post['config_contact_margin_left'];
} else {
$this->data['config_contact_margin_left'] = $this->config->get('config_contact_margin_left');
}

///contact 1  ------------------------------------------------------------------------
if (isset($this->request->post['config_contact_namber1'])) {
$this->data['config_contact_namber1'] = $this->request->post['config_contact_namber1'];
} else {
$this->data['config_contact_namber1'] = $this->config->get('config_contact_namber1');
}
if (isset($this->request->post['config_contact_icon1'])) {
$this->data['config_contact_icon1'] = $this->request->post['config_contact_icon1'];
} else {
$this->data['config_contact_icon1'] = $this->config->get('config_contact_icon1');
}
if (isset($this->request->post['config_contact_name1'])) {
$this->data['config_contact_name1'] = $this->request->post['config_contact_name1'];
} else {
$this->data['config_contact_name1'] = $this->config->get('config_contact_name1');
}
if (isset($this->request->post['config_contact_phontime1'])) {
$this->data['config_contact_phontime1'] = $this->request->post['config_contact_phontime1'];
} else {
$this->data['config_contact_phontime1'] = $this->config->get('config_contact_phontime1');
}
if (isset($this->request->post['config_contact_department1'])) {
$this->data['config_contact_department1'] = $this->request->post['config_contact_department1'];
} else {
$this->data['config_contact_department1'] = $this->config->get('config_contact_department1');
}

///contact 2 ------------------------------------------------------------------------
if (isset($this->request->post['config_contact_namber2'])) {
$this->data['config_contact_namber2'] = $this->request->post['config_contact_namber2'];
} else {
$this->data['config_contact_namber2'] = $this->config->get('config_contact_namber2');
}
if (isset($this->request->post['config_contact_icon2'])) {
$this->data['config_contact_icon2'] = $this->request->post['config_contact_icon2'];
} else {
$this->data['config_contact_icon2'] = $this->config->get('config_contact_icon2');
}
if (isset($this->request->post['config_contact_name2'])) {
$this->data['config_contact_name2'] = $this->request->post['config_contact_name2'];
} else {
$this->data['config_contact_name2'] = $this->config->get('config_contact_name2');
}
if (isset($this->request->post['config_contact_phontime2'])) {
$this->data['config_contact_phontime2'] = $this->request->post['config_contact_phontime2'];
} else {
$this->data['config_contact_phontime2'] = $this->config->get('config_contact_phontime2');
}
if (isset($this->request->post['config_contact_department2'])) {
$this->data['config_contact_department2'] = $this->request->post['config_contact_department2'];
} else {
$this->data['config_contact_department2'] = $this->config->get('config_contact_department2');
}

///contact 3 ------------------------------------------------------------------------
if (isset($this->request->post['config_contact_namber3'])) {
$this->data['config_contact_namber3'] = $this->request->post['config_contact_namber3'];
} else {
$this->data['config_contact_namber3'] = $this->config->get('config_contact_namber3');
}
if (isset($this->request->post['config_contact_icon3'])) {
$this->data['config_contact_icon3'] = $this->request->post['config_contact_icon3'];
} else {
$this->data['config_contact_icon3'] = $this->config->get('config_contact_icon3');
}
if (isset($this->request->post['config_contact_name3'])) {
$this->data['config_contact_name3'] = $this->request->post['config_contact_name3'];
} else {
$this->data['config_contact_name3'] = $this->config->get('config_contact_name3');
}
if (isset($this->request->post['config_contact_phontime3'])) {
$this->data['config_contact_phontime3'] = $this->request->post['config_contact_phontime3'];
} else {
$this->data['config_contact_phontime3'] = $this->config->get('config_contact_phontime3');
}
if (isset($this->request->post['config_contact_department3'])) {
$this->data['config_contact_department3'] = $this->request->post['config_contact_department3'];
} else {
$this->data['config_contact_department3'] = $this->config->get('config_contact_department3');
}

///contact 4 ------------------------------------------------------------------------
if (isset($this->request->post['config_contact_namber4'])) {
$this->data['config_contact_namber4'] = $this->request->post['config_contact_namber4'];
} else {
$this->data['config_contact_namber4'] = $this->config->get('config_contact_namber4');
}
if (isset($this->request->post['config_contact_icon4'])) {
$this->data['config_contact_icon4'] = $this->request->post['config_contact_icon4'];
} else {
$this->data['config_contact_icon4'] = $this->config->get('config_contact_icon4');
}
if (isset($this->request->post['config_contact_name4'])) {
$this->data['config_contact_name4'] = $this->request->post['config_contact_name4'];
} else {
$this->data['config_contact_name4'] = $this->config->get('config_contact_name4');
}
if (isset($this->request->post['config_contact_phontime4'])) {
$this->data['config_contact_phontime4'] = $this->request->post['config_contact_phontime4'];
} else {
$this->data['config_contact_phontime4'] = $this->config->get('config_contact_phontime4');
}
if (isset($this->request->post['config_contact_department4'])) {
$this->data['config_contact_department4'] = $this->request->post['config_contact_department4'];
} else {
$this->data['config_contact_department4'] = $this->config->get('config_contact_department4');
}

///contact 5 ------------------------------------------------------------------------
if (isset($this->request->post['config_contact_namber5'])) {
$this->data['config_contact_namber5'] = $this->request->post['config_contact_namber5'];
} else {
$this->data['config_contact_namber5'] = $this->config->get('config_contact_namber5');
}
if (isset($this->request->post['config_contact_icon5'])) {
$this->data['config_contact_icon5'] = $this->request->post['config_contact_icon5'];
} else {
$this->data['config_contact_icon5'] = $this->config->get('config_contact_icon5');
}
if (isset($this->request->post['config_contact_name5'])) {
$this->data['config_contact_name5'] = $this->request->post['config_contact_name5'];
} else {
$this->data['config_contact_name5'] = $this->config->get('config_contact_name5');
}
if (isset($this->request->post['config_contact_phontime5'])) {
$this->data['config_contact_phontime5'] = $this->request->post['config_contact_phontime5'];
} else {
$this->data['config_contact_phontime5'] = $this->config->get('config_contact_phontime5');
}
if (isset($this->request->post['config_contact_department5'])) {
$this->data['config_contact_department5'] = $this->request->post['config_contact_department5'];
} else {
$this->data['config_contact_department5'] = $this->config->get('config_contact_department5');
}
///contact end ------------------------------------------------------------------------

1.5. найти:
if ((utf8_strlen($this->request->post['config_email']) > 96) || !preg_match('/^[^\@]+@.*\.[a-z]{2,6}$/i', $this->request->post['config_email'])) {
$this->error['email'] = $this->language->get('error_email');
}

после вставить:
if ((utf8_strlen($this->request->post['config_contact_img_from']) < 3) || !preg_match('/^[\/][a-z]\S+[\/]\S+/i',$this->request->post['config_contact_img_from'])) {
$this->error['img_from_error'] = $this->language->get('error_config_contact_img_from');
}

if ((utf8_strlen($this->request->post['config_contact_margin_left']) < 0) || !preg_match('/^[0-9]/i',$this->request->post['config_contact_margin_left'])) {
$this->error['margin_left_error'] = $this->language->get('error_config_contact_margin_left');
}
С этим файлом мы закончили.

2.0. Открываем
\admin\view\template\setting\setting.tpl

находим:
<a href="#tab-general"><?php echo $tab_general; ?></a>

после вставляем:
<a href="#tab-store"><?php echo $tab_store; ?></a>

2.1. в этом же файле ищем:
<tr>
<td><?php echo $entry_fax; ?></td>
<td><input type="text" name="config_fax" value="<?php echo $config_fax; ?>" /></td>
</tr>
</table>
</div>

после вставляем:
<div id="tab_contacts">
<?php echo $entry_contact_img_from; ?> <input type="text" style="width: 250px;" name="config_contact_img_from" value="<?php echo $config_contact_img_from; ?>" />
<?php if ($error_config_contact_img_from) { ?>
<?php echo $error_config_contact_img_from; ?>
<?php } ?>
<?php echo $entry_contact_margin_left; ?> <input type="text" name="config_contact_margin_left" value="<?php echo $config_contact_margin_left; ?>" />px
<?php if ($error_config_contact_margin_left) { ?>
<?php echo $error_config_contact_margin_left; ?>
<?php } ?>
<table class="contact_list">
<thead>
<tr>
<td class="namber"> № </td>
<td class="center"><?php echo $entry_contact_namber; ?></td>
<td class="center"><?php echo $entry_contact_icon; ?></td>
<td class="center"><?php echo $entry_contact_name; ?></td>
</tr>
</thead>
<tbody>
<tr>
<td class="right">1</a>
<td class="left"><input type="text" style="width: 250px;" name="config_contact_namber1" value="<?php echo $config_contact_namber1; ?>" /></td>
<td class="left"><input type="text" style="width: 250px;" name="config_contact_icon1" value="<?php echo $config_contact_icon1; ?>" /></td>
<td class="left"><input type="text" style="width: 250px;" name="config_contact_name1" value="<?php echo $config_contact_name1; ?>" /></td>
</tr>
<tr>
<td class="right">2</a>
<td class="left"><input type="text" style="width: 250px;" name="config_contact_namber2" value="<?php echo $config_contact_namber2; ?>" /></td>
<td class="left"><input type="text" style="width: 250px;" name="config_contact_icon2" value="<?php echo $config_contact_icon2; ?>" /></td>
<td class="left"><input type="text" style="width: 250px;" name="config_contact_name2" value="<?php echo $config_contact_name2; ?>" /></td>
</td>
</tr>
<tr>
<td class="right">3</a>
<td class="left"><input type="text" style="width: 250px;" name="config_contact_namber3" value="<?php echo $config_contact_namber3; ?>" /></td>
<td class="left"><input type="text" style="width: 250px;" name="config_contact_icon3" value="<?php echo $config_contact_icon3; ?>" /></td>
<td class="left"><input type="text" style="width: 250px;" name="config_contact_name3" value="<?php echo $config_contact_name3; ?>" /></td>
</td>
</tr>
<tr>
<td class="right">4</a>
<td class="left"><input type="text" style="width: 250px;" name="config_contact_namber4" value="<?php echo $config_contact_namber4; ?>" /></td>
<td class="left"><input type="text" style="width: 250px;" name="config_contact_icon4" value="<?php echo $config_contact_icon4; ?>" /></td>
<td class="left"><input type="text" style="width: 250px;" name="config_contact_name4" value="<?php echo $config_contact_name4; ?>" /></td>
</td>
</tr>
<tr>
<td class="right">5</a>
<td class="left"><input type="text" style="width: 250px;" name="config_contact_namber5" value="<?php echo $config_contact_namber5; ?>" /></td>
<td class="left"><input type="text" style="width: 250px;" name="config_contact_icon5" value="<?php echo $config_contact_icon5; ?>" /></td>
<td class="left"><input type="text" style="width: 250px;" name="config_contact_name5" value="<?php echo $config_contact_name5; ?>" /></td>
</td>
</tr>
</tbody>
</table>
</div>

3.0. Работаем с файлом
\catalog\controller\common\header.php

3.1. ищем:
if ($this->config->get('config_logo') && file_exists(DIR_IMAGE . $this->config->get('config_logo'))) {
$this->data['logo'] = $server . $this->config->get('config_logo');
} else {
$this->data['logo'] = '';
}

после вставляем:
// отступ иконки левый (margin_left) и пусть к папку с иконками (img_from)
$this->data['config_contact_margin_left'] = $this->config->get('config_contact_margin_left');
$this->data['config_contact_img_from'] = $this->config->get('config_contact_img_from');
// контакт 1
$this->data['config_contact_namber1'] = $this->config->get('config_contact_namber1');
$this->data['config_contact_icon1'] = $this->config->get('config_contact_icon1');
$this->data['config_contact_name1'] = $this->config->get('config_contact_name1');

// контакт 2
$this->data['config_contact_namber2'] = $this->config->get('config_contact_namber2');
$this->data['config_contact_icon2'] = $this->config->get('config_contact_icon2');
$this->data['config_contact_name2'] = $this->config->get('config_contact_name2');

// контакт 3
$this->data['config_contact_namber3'] = $this->config->get('config_contact_namber3');
$this->data['config_contact_icon3'] = $this->config->get('config_contact_icon3');
$this->data['config_contact_name3'] = $this->config->get('config_contact_name3');

// контакт 4
$this->data['config_contact_namber4'] = $this->config->get('config_contact_namber4');
$this->data['config_contact_icon4'] = $this->config->get('config_contact_icon4');
$this->data['config_contact_name4'] = $this->config->get('config_contact_name4');

// контакт 5
$this->data['config_contact_namber5'] = $this->config->get('config_contact_namber5');
$this->data['config_contact_icon5'] = $this->config->get('config_contact_icon5');
$this->data['config_contact_name5'] = $this->config->get('config_contact_name5');

4.0. Открываем файл
\admin\language\russian\setting\setting.php

ищем:
// Entry

после вставляем:
$_['entry_contact_namber']   = 'Номер';
$_['entry_contact_icon']   = 'Иконка';
$_['entry_contact_name']   = 'Имя';
$_['entry_contact_phontime']  = 'Время работы';
$_['entry_contact_department']  = 'Отдел';
$_['entry_contact_img_from']   = 'Путь к папке с иконкой';
$_['entry_contact_margin_left'] = 'Отступ текста слева';

4.1. в этом же файле находим:
// Error

после вставляем:
$_['error_config_contact_img_from'] = '<span style="color: red">Проверьте правильность пути папки. Должен начинаться на " / " и им заканчиваться " <b>/</b> ". <b>Без пробелов</b>. Например:  <b>/</b>image/contact_icon<b>/</b></span>';
$_['error_config_contact_margin_left'] = '<span style="color: red">Отступ примет значение только числового характера. Впишите <b>целое число</b> отступа!</span>';

5.0. Работаем с файлом:
\admin\language\russian\russian.php

находим
$_['tab_store']               = 'Витрина';

после вставляем:
$_['tab_contacts']     = 'Контакты';

6.0. Вставляем вывод контактов в нужное место. Файл:
\catalog\view\theme\default\template\common\header.tpl

вставьте эти данные в то место, где вы хотите их видить:
<div id="contact_bg">
<div id="contact_info_head1">
<div style="padding-left:<?php echo $config_contact_margin_left; ?>px; height: 16px; line-height: 16px; background: url('<?php echo $config_contact_img_from; ?><?php echo $config_contact_icon1; ?>') no-repeat; background-size: auto; "><?php echo $config_contact_namber1; ?> <?php echo $config_contact_name1; ?>
</div>
<div style="padding-left:<?php echo $config_contact_margin_left; ?>px; height: 16px; line-height: 16px; background: url('<?php echo $config_contact_img_from; ?><?php echo $config_contact_icon2; ?>') no-repeat; background-size: auto; "><?php echo $config_contact_namber2; ?> <?php echo $config_contact_name2; ?>
</div>
<div style="padding-left:<?php echo $config_contact_margin_left; ?>px; height: 16px; line-height: 16px; background: url('<?php echo $config_contact_img_from; ?><?php echo $config_contact_icon3; ?>') no-repeat; background-size: auto; "><?php echo $config_contact_namber3; ?> <?php echo $config_contact_name3; ?>
</div>
<div style="padding-left:<?php echo $config_contact_margin_left; ?>px; height: 16px; line-height: 16px; background: url('<?php echo $config_contact_img_from; ?><?php echo $config_contact_icon4; ?>') no-repeat; background-size: auto; "><?php echo $config_contact_namber4; ?> <?php echo $config_contact_name4; ?>
</div>
<div style="padding-left:<?php echo $config_contact_margin_left; ?>px; height: 16px; line-height: 16px; background: url('<?php echo $config_contact_img_from; ?><?php echo $config_contact_icon5; ?>') no-repeat; background-size: auto; "><?php echo $config_contact_namber5; ?> <?php echo $config_contact_name5; ?>
</div>
</div>
</div>
Примечание!
На этом примере, все данные выводятся в контейнер:
<div id="contact_bg">
<div id="contact_info_head1">
...
</div></div>

стиль которых:
#header #contact_bg {
position: absolute;
background: url("../image/contact_header_bg.gif") center no-repeat;
width: 277px;
height: 100px;
right: 0px;
left: 300px;
top: 5px;
}
#header #contact_info_head1 {
position: absolute;
width:240px;
left: 10px;
top: 10px;
text-align:left;
font-size: 12px;
color: #E8E8E8;
z-index: 8;

}

Будет правильно написать свой стиль контейнеров.


7.0. Результат



Купить дхо для авто со скидкой

Немає коментарів:

Дописати коментар