ссылки на эти статьи в детальном описании товара, а в статьях - ссылки на эти товары.
Для работы требуется установленный модуль "Статьи":
================
Статьи для ShopCMS
Автор: qjmann ( soulmare@gmail.com http://trickywebs.org.ua )
Основано на коде ShopCMS модуля новостей, Copyright © by ADGroup
================
который есть на сайте vsupport.club.
В принципе, легко переделывается под любой другой модуль статей.
Админская часть. Требует VIP-версии ShopCMS, т.к. надо править файл admin.php
-----------------------------------------------------------------------------
1. копируем файлы
product_articles.php
product_articles_set.php
в каталог /core/includes/admin/sub
2. редактируем admin.php:
2.1 находим строку
// remove product from appended category
и над ней вставляем строку
require_once "core/includes/admin/sub/product_articles_set.php";
2.2 находим блок
<input type=hidden name='save_spwc' value='0' id='save_spwc'>
<input type=hidden name='save_product_for_file' value='0' id='save_product_for_file'>
<input type=hidden name='save_product' value='0' id='save_product'>
<input type=hidden name='save_pictures' value='0' id='save_pictures'>
<input type=hidden name='add_category' value='0' id='add_category'>
<input type=hidden name='save_product_without_closing' value='0' id='spwc'>
<input type=hidden name='AddProductAndOpenConfigurator' value='0' id='AddProductAndOpenConfigurator'>
<input type=hidden name='optionID' value='0' id='optionID'>
добавляем к нему строку
<input type=hidden name='add_article' value='0' id='add_article'>
2.3 находим последнее вхождение строки data/admin/pixel.gif
и ниже нее вставляем
<?php
require_once "core/includes/admin/sub/product_articles.php";
?>
В архиве лежит уже исправленный admin.php. Если других правок не было, то можно просто его заменить.
Клиентская часть.
-----------------
3. в файле product_detailed.php находим блок (это в самом конце, последний else в файле)
}
else
{
//product not found
header("HTTP/1.0 404 Not Found");
header("HTTP/1.1 404 Not Found");
header("Status: 404 Not Found");
die(ERROR_404_HTML);
}
и перед ним (до закрывающей фигурной скобки!) вставляем
// Articles
$q = db_query( "SELECT a.title, a.uri, a.meta_description FROM ".DB_PRFX."product_articles AS pa
LEFT JOIN ".ARTICLES_TABLE." AS a USING (AID)
WHERE pa.productID = $productID") or die(mysql_error());
$articles = array();
while( $row = db_fetch_assoc($q) )
$articles[] = array('title'=>$row['title'],'meta'=>$row['meta_description'],'url'=>ARTICLES_ROOT."/".$row['uri'].".html");
$smarty->assign("articles", $articles);
// Articles end
4. правим на свой вкус:
4.1 либо в желаемое место файла product_detailed.tpl.html вставляем что-то типа (дописать-переписать по вкусу)
<!--Articles-->
{if $articles}
{include file="header.tpl.html" header='Связанные с этим товаром статьи'}
<table cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="hdbtop" align="left">
{section name=i loop=$articles}
{if $smarty.section.i.index ne 0}<div class="fil1"></div>{/if}
<table cellspacing="0" cellpadding="0" width="100%">
<tr>
<td align="left">
<a href="{$articles[i].url}" title="{$articles[i].meta}">{$articles[i].title}</a>
</td>
<tr>
</table>
{/section}
</td>
</tr>
</table>
{/if}
<!--Articles end-->
4.2 либо копируем файл product_articles.tpl.html в /core/tpl/user/[шаблон]/blocks
и добавляем его в управлении блоками туда, где хотим его видеть. При этом надо понимать,
что статьи в этом блоке будут показываться только если на экране присутствует
блок детального описания товара, т.к. - см.выше - массив $articles заполняется в
product_detailed.php
5. заходим в админке в свойства любого товара, при этом создастся SQL-таблица со связями "товар-статья".
Там же (в свойствах товара) в конце должен появится новый блок "Связанные статьи".
Если его нет, значит что-то не так .
6. посмотреть, как выглядит можно тут - http://cpu.badisoft....ook-IQ-701.html
я не вносил никаких выравниваний и прочих причесываний, т.к. все равно каждый будет править под себя.
админскую часть, естественно, я показать не могу .
скачать последнюю версию можно тут - http://cpu.badisoft.ru
7. если хочется и обратную фишку, т.е. чтобы из статей были ссылки на товары, к которым привязаны эти статьи, то продолжаем .
8. в файле z-articles.php находим блок (это в самом конце, последний else в файле)
}
else
{
header("HTTP/1.0 404 Not Found");
header("HTTP/1.1 404 Not Found");
header("Status: 404 Not Found");
die(ERROR_404_HTML);
}
и перед ним (до закрывающей фигурной скобки!) вставляем
// Products
$q = db_query( "SELECT p.productID,p.name,p.title FROM ".DB_PRFX."product_articles AS pa
LEFT JOIN ".ARTICLES_TABLE." AS a USING (AID)
LEFT JOIN ".PRODUCTS_TABLE." AS p USING (productID)
WHERE a.uri = '".$_GET['fullarticles']."'
LIMIT 10") or die(mysql_error());
$products = array();
while( $row = db_fetch_assoc($q) )
$products[] = array('name'=>$row['name'],'title'=>$row['title'],'url'=>"product_".$row['productID'].".html");
$smarty->assign("products", $products);
// Products end
Я там прописал на всякий случай LIMIT 10, чтобы не получить неожиданно стопицот ссылок привязав к статье все стопицот товаров.
9. в желаемое место файла show_full_articles.tpl.html вставляем что-то типа (дописать-переписать по вкусу)
<!--Products-->
{if $products}
{include file="header.tpl.html" header='Связанные с этой статьей товары'}
<table cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="hdbtop" align="left">
{section name=i loop=$products}
{if $smarty.section.i.index ne 0}<div class="fil1"></div>{/if}
<table cellspacing="0" cellpadding="0" width="100%">
<tr>
<td align="left">
<a href="{$products[i].url}" title="{$products[i].title}">{$products[i].name}</a>
</td>
<tr>
</table>
{/section}
</td>
</tr>
</table>
{/if}
<!--Products end-->