Как да си добавим таб с видео за всеки продукт – opencart

April 4, 2012 at 10:03 (modules, opencart, progamming)

Добре практика е преди да правите каквото и да било, пръво да си направите архивно копие на магазина и на базата от данни!

Следващите редове описват как да си добавим видео клип към всеки продукт. Платформата е opencart, версията е: 1.5.2.1.

Първо ще променим базата от данни, като си добавим поле, в което ще записваме линка на клипчето (може би трябваше да кажа по-рано, че клипчетата, който ще показваме са от youtube.com)
ALTER TABLE product ADD video VARCHAR(60) AFTER stock_status_id;
Добавихме поле: video (вашите таблици, може да са съдържат префик, ако сте избрали тази опция при инсталация на Opencart).

От тука на татъка, започваме да променяме файловите на системата. Намираме файла: /admin/controller/catalog/product.php – намираме реда със код:
$this->data['entry_keyword'] = $this->language->get('entry_keyword');
и след него добавяме:
$this->data['entry_video'] = $this->language->get('entry_video');

Отново в същия файл, намираме реда:
$this->data['keyword'] = '';
}

и след затварящата фигурна скоба добавяме на нов ред:
if (isset($this->request->post['video'])) {
$this->data['video'] = $this->request->post['video'];
} elseif (isset($product_info)) {
$this->data['video'] = $product_info['video'];
} else {
$this->data['video'] = '';
}

След това отваряме файла: /admin/language/english/catalog/product.php за да добавим локализация. Ако имате други езикови версии на администраторския панел трябва и тях да промените. Намирате ред:
$_['entry_keyword'] = 'SEO Keyword:';
и след него добавяте:
$_['entry_video'] = 'Related Video:';

След това отваряте файла: admin/model/catalog/product.php. В началото на файла е дефинирана функция с име:
public function addProduct($data) {
Точно под нея има една дълга SQL заявка, която трябва да променим. В нея намираме:
stock_status_id = '" . (int)$data['stock_status_id'] . "',
и добавяме:
video = '" . $this->db->escape($data['video']) . "',
В същия файл, намираме:
public function editProduct
В неговата SQL заявка намираме:
stock_status_id = '" . (int)$data['stock_status_id'] . "',
и добавяме:
video = '" . $this->db->escape($data['video']) . "',

Следващата стъпка е да промените администраторския темплейт и за добавим поле, в което ще поставяме линка към видео клипа. За целта отваряме файла: /admin/view/template/catalog/product_form.tpl – и в него намираме:
<tr>
<td><?php echo $entry_keyword; ?></td>
<td><input type="text" name="keyword" value="<?php echo $keyword; ?>" /></td>
</tr>

след тези редове, добавяме:
<tr>
<td><?php echo $entry_video; ?></td>
<td><input type="text" name="video" value="<?php echo $video; ?>" /></td>
</tr>

След това отваряме файла: catalog/controller/product/product.php – и в него търсим реда:
$this->data['text_qty'] = $this->language->get('text_qty');
след него добавяме:
$this->data['text_video'] = $this->language->get('text_video');
Отново в същия файл търсим реда:
$this->data['model'] = $product_info['model'];
и добавяме след него:
$this->data['video'] = $product_info['video'];

След тази стъпка отваряме файла: catalog/model/catalog/product.php – и в него търсим функцията:
public function getProduct($product_id) {
Това отново е функция, която изпълнява заявка към базата данни. Заявката трябав да изглежда по подобен начин:
$query = $this->db->query("SELECT DISTINCT *, pd.name AS name,...
Редактираме я като поставяме video, след name. Резултата трябва да е такъв:
$query = $this->db->query("SELECT DISTINCT *, pd.name AS name, video,...
Повтарям – само добавяме video, след това заявката си продължава както е била до момента преди нашата редакция!

За да добавим локализация на каталога трябва да редактираме файла: catalog/language/english/product/product.php – ако имате други езици на каталога, трябва и тях да редактирате. В този файл намирате:
$_['text_note'] = 'Note: HTML is not translated!';
и след него, на нов ред, добавяте:
$_['text_video'] = 'Related Video';

Вече сме почти готови. Остана само да променим темплейта, за да ни се визуализира видео клипчето. За тази цел отваряте файла: catalog/view/theme/YOURTHEME/template/product/product.tpl. YOURTHEME е името на темата, която използвате, ако сте с темата по подразбиране тогава YOURTHEME = default. В посочения, файл търсите реда:
<div id="tabs" class="htabs">
и точно преди затварящия таг </div> добавяте редовете:
<?php if ($video) { ?>
<a href="#tab-video"><?php echo $text_video; ?></a>
<?php } ?>

Отново в същия файл, търсим секцията:
<?php if ($products) { ?>
<div id="tab-related" class="tab-content">

и веднага след последните й три реда, които трябва да изглеждат така:
</div>
</div>
<?php } ?>

добавяме нашия код, който ще ни визуализира клипчето:
<?php if ($video) { ?>
<div id="tab-video" class="tab-content" align="center"><iframe width="560" height="315" src="http://www.youtube.com/v/<?php echo $video; ?>" frameborder="0" allowfullscreen></iframe></div>
<?php } ?>

Специално, за темплейта можете да сложите видеото и на други места.

Как да добавим клипче: Като администратор, отиваме в меню: Catalog -> Product, избираме продукта, за който искаме да добавим видео или избираме да добавим нов продукт. След това в таба: Data, точно под секцията SEO Keywords има поле, в което трябва да поставим линк към клипчето. Линка трябва да бъде частичен.
Пример: Ако клипчето ни е с линк: http://www.youtube.com/watch?v=5BAiDKOqfvc, трябва да вземем само: стойноста след знака за равно (“=”) – 5BAiDKOqfvc. Поставяме тази стойност в полето за Related videos, и записваме промените на продукта.
Резултата от всичките тези машинации, трябва да изглежда така:

Advertisements

Permalink Leave a Comment