Перейти к содержанию
Форум поддержки пользователей VamShop

Можно ли привязать статью к категории товаров


Рекомендуемые сообщения

Можно ли привязать статью к категории товаров или привязать категорию статей к категории товаров, соответственно, выводом бокса, наверное.

Подозреваю что можно, поскольку похоже работает бокс фильтры.

Есть ли у кого готовое решение, или подскажите, где копать?

Ссылка на сообщение
Поделиться на другие сайты

Где-то был только вариант вывода статей у товаров, т.е. на странице карточки товара выводится список статей.

Если интересен такой вариант, попробую найти ту тему.

Можно попробовать тогда написать в разделе Коммерческие предлоежния на oscomm.biz, да и здесь в таком же разделе.

Ссылка на сообщение
Поделиться на другие сайты

Вот так делается.

Создаёте файл /includes/modules/product_articles.php с таким кодом:


<?php
$module = new vamTemplate;
$module->assign('tpl_path', 'templates/'.CURRENT_TEMPLATE.'/');

$sql = "select distinct ax.articles_id, ad.articles_name, a.articles_last_modified from " . TABLE_ARTICLES_XSELL . " ax LEFT JOIN ".TABLE_ARTICLES." a USING(articles_id) LEFT JOIN " . TABLE_ARTICLES_DESCRIPTION . " ad USING(articles_id) where ax.xsell_id = '" . (int)$_GET['products_id'] . "' and ad.language_id = '" . (int)$_SESSION['languages_id'] . "' and a.articles_status = '1' order by a.articles_last_modified";

$row = 0;
$module_content = array ();

$query = vamDBquery($sql);
while ($one = vam_db_fetch_array($query,true)) {
$SEF_parameter = '';
if (SEARCH_ENGINE_FRIENDLY_URLS == 'true')
$SEF_parameter = '&headline='.vam_cleanName($one['articles_name']);

    $module_content[]=array(
        'ARTICLES_NAME' => $one['articles_name'],
        'ARTICLES_DESCRIPTOIN' => $one['articles_description'],
        'ARTICLES_URL'    => vam_href_link(FILENAME_ARTICLE_INFO, 'articles_id=' . $one['articles_id'] . $SEF_parameter)
        );

}
if (sizeof($module_content) > 0) {
    $module->assign('language', $_SESSION['language']);
    $module->assign('module_content',$module_content);
// set cache ID
if (!CacheCheck()) {
$module->caching = 0;
      $module= $module->fetch(CURRENT_TEMPLATE.'/module/product_articles.html');
} else {
        $module->caching = 1;
        $module->cache_lifetime=CACHE_LIFETIME;
        $module->cache_modified_check=CACHE_CHECK;
        $module = $module->fetch(CURRENT_TEMPLATE.'/module/product_articles.html',$cache_id);
}
$info->assign('MODULE_product_articles', $module);
}
?>
[/code] Создаёте файл /templates/vamshop/module/product_articles.html:
[code]
{config_load file="$language/lang_$language.conf" section="boxes"}
<h1><a href="{$ARTICLES_URL}">{#heading_articles#}</a></h1>

{foreach name=aussen item=module_data from=$module_content}
<div class="page">

<b class="b1"></b><b class="b2"></b><b class="b3"></b><b class="b4"></b>

<div class="pageItem">

<dl class="itemLatestNewsDefault">
<dt class="itemNews">
</dt>

<dd class="itemNews">
<strong><a href="{$module_data.ARTICLES_URL}">{$module_data.ARTICLES_NAME}</a></strong>
</dd>

<dd class="itemNews">
{$module_data.ARTICLES_DESCRIPTOIN|truncate:255:"...":true}
</dd>

</dl>
<div class="clear"></div>
</div>


<b class="b4b"></b><b class="b3b"></b><b class="b2b"></b><b class="b1b"></b>

</div>
{/foreach}

<div class="clear"></div>
<p></p>
Открываете /includes/modules/product_info.php и добавляете:

include (DIR_WS_MODULES . 'product_articles.php');
[/code] после:
[code]
include (DIR_WS_MODULES.'product_reviews.php');

В /templates/vamhop/module/product_info/product_info_v1.html добавляете:

{if $MODULE_product_articles != ''}
{$MODULE_product_articles}
{/if}
[/code] например после:
[code]
{if $MODULE_products_reviews != ''}
{$MODULE_products_reviews}
{/if}

Всё, теперь на странице карточки товара будут выводиться статьи, с которыми связан данные товар.

Статьи и товары связывают в Админке - Разное - Статьи - Статьи-товары.

Нужно там их связать, что б на странице карточки товара показывались.

Ссылка на сообщение
Поделиться на другие сайты
  • 9 months later...

А данные рекомендации должны работать с последней версией?

И по связыванию. В админке есть  Разное - Статьи - Товары-Статьи и не Статьи-Товары, это Вы так написали или еще нужно что то дописывать в языковые файлы??

Ссылка на сообщение
Поделиться на другие сайты

Да, должны работать.

Просто так назван пункт, по-моему, нормально, на странице карточки товара ведь будет ссылка на статью.

Если я правильно помню.

Ссылка на сообщение
Поделиться на другие сайты

Но почему то не работает. К статьям товар выводится, а к товару ничего. Где и что посмотреть не подскажите? Для меня это очень важная функция.

Ссылка на сообщение
Поделиться на другие сайты

Значит файлы не так или не туда сохраняете, может не в свой шаблон.

А может нужно кэш почистить в Админке - Настройки - Контроль кэша.

Ссылка на сообщение
Поделиться на другие сайты

Значит файлы не так или не туда сохраняете, может не в свой шаблон.

А может нужно кэш почистить в Админке - Настройки - Контроль кэша.

Не, ну я не столько профан, что бы этого не проверить прежде чем задать вопрос.

Всё я правильно сохраняю, и туда куда нужно.

Проблема заключается как выяснилось в следующем, не работает при включенных коротких URL адресах.

Админка-->Мета теги-->Использовать короткие URL адреса в магазине--> true

Не могли бы помочь в данном вопросе?

Ссылка на сообщение
Поделиться на другие сайты

И еще, возможно это ошибка, а может нет. Но на всякий случай спрошу.

Проверено на вновь установленном локально магазине версия 1.57 и на сервере1.58.

В админке:

Админка-->Разное-->Автоматически генерировать SEO URL--> true

Адреса не генерируются, при создании товара и категории к примеру с названием -Тестовый товар, генерируется ссылка типа  -.html

Если Админка-->Разное-->Автоматически генерировать SEO URL--> false

При создании товара к примеру с названием -Тестовый товар, генерируется ссылка типа  p6_Testovyi-tovar.html при включенных коротких адресах или же типа product_info.php?products_id=9 при выключенных.

Возможно я чего то не понимаю, но я всю жизнь считал что true это включено, а false выключено, и если стоит вопрос:

Автоматически генерировать SEO URL? ТО это означает, что при true они должны генерироваться, а при false не должны.

В данном случае все с точностью до наоборот.

С уважением.

Ссылка на сообщение
Поделиться на другие сайты

Ну по первому вопросу вроде решил проблему.

Правда наверное грубовато, так сказать " в лоб", но работает и при включенных коротких URL адресах и при выключенных.

Может кто из гуру подправит, и даст более красивый и правильный вариант решения. Но пока так.

В файле

\includes\modules\product_info.php

Найти строки:

include (DIR_WS_MODULES.'product_reviews.php');

include (DIR_WS_MODULES . 'product_articles.php'); 

и между ними добавить строку как показано ниже:

include (DIR_WS_MODULES.'product_reviews.php');

if (!isset($_GET['products_id']) && isset($product->data['products_id'])) $_GET['products_id']=$product->data['products_id'];

include (DIR_WS_MODULES . 'product_articles.php');

Все, теперь сопутствующие статьи будут выводится на странице карточки товара. Но только название статьи.

И еще небольшой вариант правки кода предложенного Вамом.

В оригинале скрипта не выводится краткое описание статьи,  для того что бы описание выводилось, в скрипте файла

  /includes/modules/product_articles.php 

Вместо:

$sql = "select distinct ax.articles_id, ad.articles_name, a.articles_last_modified from " . TABLE_ARTICLES_XSELL . " ax LEFT JOIN ".TABLE_ARTICLES." a USING(articles_id) LEFT JOIN " . TABLE_ARTICLES_DESCRIPTION . " ad USING(articles_id) where ax.xsell_id = '" . (int)$_GET['products_id'] . "' and ad.language_id = '" . (int)$_SESSION['languages_id'] . "' and a.articles_status = '1' order by a.articles_last_modified";

Пропишите:

$sql = "select distinct ax.articles_id, articles_date_added, ad.articles_head_desc_tag, ad.articles_name, a.articles_last_modified from "

. TABLE_ARTICLES_XSELL . " ax LEFT JOIN ".TABLE_ARTICLES." a USING(articles_id ) LEFT JOIN " . TABLE_ARTICLES_DESCRIPTION . " ad USING(articles_id) where ax.xsell_id = '"

. (int)$_GET['products_id'] . "' and ad.language_id = '" . (int)$_SESSION['languages_id'] . "' and a.articles_status = '1' order by a.articles_last_modified";

Или просто добавьте  articles_date_added  и  ad.articles_head_desc_tag, первое можно не добавлять, это нужно тем кто желает выводить и дату добавления статьи.

Далее в этом же файле замените

'ARTICLES_DESCRIPTOIN' => $one['articles_description'],

На

'ARTICLE_SHORT_DESCRIPTION' =>$one['articles_head_desc_tag'],

И если нужен вывод даты добавьте после этой строки вот такую:

'ARTICLES_DATE'    => vam_date_short($one['articles_date_added']),

Теперь внесите небольшие изменения в файл  /templates/vamshop/module/product_articles.html

Вместо:

<dd class="itemNews">

{$module_data.ARTICLES_DESCRIPTOIN|truncate:255:"...":true}

</dd>

Пропишите:

<dd class="itemNews">

{$module_data.ARTICLE_SHORT_DESCRIPTION|truncate:255:"...":true}

</dd>

<dd class="itemNews">

{$module_data.ARTICLES_DATE}

</dd>

Опять таки второе необходимо для вывода даты добавления статьи.

Все, теперь скрипт будет работать. Проверено на версии 1.58. с двумя языками.

Удачи.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...