Добавление теме VirtueMart функции вставки статьи Joomla!Иногда в интернет-магазин на базе VirtueMart необходимо вставить статью (материал) Joomla!. Это может быть статья, посвященная определенной категории товаров или определенному производителю в карточке конкретного товара.
Для начала добавим к теме VirtueMart функцию вставки статьи Joomla! :
/components/com_virtuemart/themes/ВашаТема/theme.php
в конце файла (строка примерно 148, после " // Your code here please...", но перед "}"
вставляем
function insertJoomlaArticle( $id ) {
$db = new ps_DB;
$q = "SELECT CONCAT(`introtext`,' ',`fulltext`) FROM #__content WHERE id='$id'";
$db->setQuery($q);;
$text = $db->loadResult();
return $text;
}
Все, необходимая функция задана.
Если необходимо вывести определенную статью Joomla! в определенной категории:1) определяем, какой используется шаблон категории :
Настройки VM – вкладка Сайт – Вид – Настройки шаблона для магазина - Product List Style
- если «Product Listing with a table (default)», то используется шаблон browse_layouttable.tpl.php
- если «Flat Product List (fixed to 1 product per row, using a table)», то используется шаблон browse_listtable.tpl.php
- если «Product List (no table, div-based)», то используется шаблон browse_notables.tpl.php
2) В папке /components/com_virtuemart/themes/ВашаТема/templates/browse/includes/
открываете используемый шаблон. Пусть это будет browse_notables.tpl.php.
перед строками примерно 61,62
<?php
echo $browsepage_footer;
вставляем
<?php
if ($category_id == 10) {
echo $this->insertJoomlaArticle(999);
}
?>
где 10 – id категории товаров VirtueMart, в которую необходимо вывести материал Joomla! , а 999 – id этого материала Joomla! (меняем на свои значения)Если необходимо вывести для разных категорий товаров разные, соответствующие им статьи, используем if-else .
Если необходимо вывести в карточке товара статью о его производителе:Вставляем в нужное место используемого flypage
<?php
if ($manufacturer_id == 1) {
echo $this->insertJoomlaArticle(15);
}
else {
if ($manufacturer_id == 2) {
echo $this->insertJoomlaArticle(27);
}
}
и так далее…
?>
где 1,2 – id производителей, а 15,27 – id соответствующим им статей (меняем на свои значения)Конечно, этот вариант очень громоздкий и неудобный, если производителей много и (или) они часто добавляются в магазин. Как вариант, можно в таблицу jos_vm_manufacturer добавить поле content_id – это id соответствующей этому производителю статьи - и вывести его для заполнения в админку VM "Информация о производителе". А в коде flypage прописать запрос id статьи в зависимости от id производителя, и далее - вставку выбранной статьи в карточку товара.
Сделать это можно примерно так:Если необходимо вывести статью о производителе в категории производителя:…да просто пишем ее в админке VM в "Информации о производителе". ))
Если при этом необходимо, чтобы описание производителя было не в хедере категории производителя, а отображалось после списка товаров этого производителя, смотрим
соответствующую тему форума