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

вывод конкретного раздела


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

Саш, если мне на карточке товара нужно что бы выводились только статьи из конкретного раздела, но мне в

/includes/modules/product_articles.php

что то вроде этого нужно писать?


Саш, а если не какой то конкретный раздел надо вывести, то нужно что писать
что то вроде
[CODE]
if (isset($_GET['articles_id[x]'])){ php код}
[/CODE]

где Х id раздела

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

я так понимаю надо брать условие что то вроде

if (articles_tPath=18)

и внутри его ставить


$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)
);
[/CODE]

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

Так если url картинки товара, то там неизвестен $_GET['articles_i

В строке браузера только products_id, никаких articles_id нет, это нужно наверное из php кода доставать, а не из $_GET

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

я наверное не так выразился.

если брать из темы

http://vamshop.ru/forum/topic/9821-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC-%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8-%D0%BD%D0%B0-%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B5-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%87%D0%BA%D0%B8-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B0/page__hl__%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8__fromsearch__1

и какое условие и как брать, например из /article_info.php что бы вовод делался только если статья лежит в конкретном разделе.

править нужно /includes/modules/product_articles.php

и я так чувствую что нужно условие ставить перед

$module_content[]=array(

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

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

В принципе, есть ведь в магазине примеры и вывод из определённых категорий и прочее, т.е. код можно посмотреть готовый.

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

Пробую Вот так-не работает

<?php

$module = new vamTemplate;

$module->assign('tpl_path', 'templates/'.CURRENT_TEMPLATE.'/');

$sql = "select distinct ax.articles_id, ad.articles_name, ad.articles_description, 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 ();

if (isset($tPath) == 18) {

$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);

}

}

?>

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

$tPath не определена ведь.

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

Как-то так наверное.

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

Саш, смотрб SQL таблицу, id раздела определяется как


topics_id
[/CODE]

думаешь надо [color=#282828][font=helvetica, arial, sans-serif] писать для начала sql запрос?[/font][/color][color=#282828][font=helvetica, arial, sans-serif]как? скажи плиз...[/font][/color]

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

Если ты выводишь статьи, то уже ведь есть sql запрос, по идее, из этого запроса и нужно доставать topics_id

И затем уже использовать это значение в условии.

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

Саш, смотри

делаю запрос


$topics_articles_query = "select count(*) as total from " . TABLE_ARTICLES_TO_TOPICS . " where topics_id = '" . (int)$current_topic_id . "'";
[/CODE] и пробую вывести, для начала значение ячеек в цикле
[CODE]
if ($current_topic_id==2){
echo $current_topic_id;
}
echo (int)$current_topic_id;
но почему то не срабатывает. не потому что уже к SQL уже сделан запрос?

$sql = "select distinct ax.articles_id, ad.articles_name, ad.articles_description, 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";
[/code] Оказывается id раздела еще хранится в таблице TABLE_ARTICLES_TO_TOPICS т.е Весь код выглядит
[CODE]
<?php
$module = new vamTemplate;
$module->assign('tpl_path', 'templates/'.CURRENT_TEMPLATE.'/');
$sql = "select distinct ax.articles_id, ad.articles_name, ad.articles_description, 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";
$topics_articles_query = "select count(*) as total from " . TABLE_ARTICLES_TO_TOPICS . " where topics_id = '" . (int)$current_topic_id . "'";
$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 ($current_topic_id==2){
echo $current_topic_id;
}
echo (int)$current_topic_id;
}
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);
}
?>

из за echo вверху экрана выводятся 000 -это нормально, ибо я к товару прикрепил 3 разных статьи из 3х разных разделов, а вывести мне нужно только из 2го

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

Так вроде ж нужен topics_id, если я правильно помню.

Тогда sql запрос типа:

$topics_articles_query ="select topics_id as from ". TABLE_ARTICLES_TO_TOPICS ." where articles_id = '".(int)$one['articles_id']."'";

Что б составить условия, нужно ж я так понимаю вытащить сначала topics_id

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


$topics_articles_query ="select topics_id as from ". TABLE_ARTICLES_TO_TOPICS ." where articles_id = '".(int)$one['articles_id']."'";
[/CODE] так же id статьи вытаскивается. а мне ж надо id категории (раздела) т.е в массив вставляю
[CODE]
echo (int)$one['articles_id'];

и выводятся id статей.

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

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

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

Если нужно просто тупо указать вывод статей из конкретного раздела, то sql запрос будет такой:


$listing_sql = "select a.articles_id, a.authors_id, a.articles_date_added, ad.articles_name, ad.articles_head_desc_tag, au.authors_name, td.topics_name, a2t.topics_id from " . TABLE_ARTICLES . " a left join " . TABLE_AUTHORS . " au on a.authors_id = au.authors_id, " . TABLE_ARTICLES_DESCRIPTION . " ad, " . TABLE_ARTICLES_TO_TOPICS . " a2t left join " . TABLE_TOPICS_DESCRIPTION . " td on a2t.topics_id = td.topics_id where (a.articles_date_available IS NULL or to_days(a.articles_date_available) <= to_days(now())) and a.articles_status = '1' and a.articles_id = a2t.articles_id and ad.articles_id = a2t.articles_id and ad.language_id = '" . (int)$_SESSION['languages_id'] . "' and td.language_id = '" . (int)$_SESSION['languages_id'] . "' and a2t.topics_id = '" . (int)$current_topic_id . "' order by a.sort_order, ad.articles_name";
[/code]

Можно ведь его было посмотртеть в /articles.php

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

А ты смотрел как выводятся статьи в articles.php ?!

Оттуда можно взять ведь код.

Так как раз код вывода статей из конкретных категорий.

Такой вариант не подходит?

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

Пробовал его взять-никак.

пробовал



<?php
$module = new vamTemplate;
$module->assign('tpl_path', 'templates/'.CURRENT_TEMPLATE.'/');
$sql = "select distinct ax.articles_id, ad.articles_name, ad.articles_description, 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";
$listing_sql = "select a.articles_id, a.authors_id, a.articles_date_added, ad.articles_name, ad.articles_head_desc_tag, au.authors_name, td.topics_name, a2t.topics_id from " . TABLE_ARTICLES . " a left join " . TABLE_AUTHORS . " au on a.authors_id = au.authors_id, " . TABLE_ARTICLES_DESCRIPTION . " ad, " . TABLE_ARTICLES_TO_TOPICS . " a2t left join " . TABLE_TOPICS_DESCRIPTION . " td on a2t.topics_id = td.topics_id where (a.articles_date_available IS NULL or to_days(a.articles_date_available) <= to_days(now())) and a.articles_status = '1' and a.articles_id = a2t.articles_id and ad.articles_id = a2t.articles_id and ad.language_id = '" . (int)$_SESSION['languages_id'] . "' and td.language_id = '" . (int)$_SESSION['languages_id'] . "' and a2t.topics_id = '" . (int)$current_topic_id . "' order by a.sort_order, ad.articles_name";$row = 0;
$module_content = array ();
$query = vamDBquery($sql);
if ((int)$current_topic_id == 2) {
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]

просто не выводит

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

Так ведь надо id категории подставлять в sql запрос, статьи из которой нужно вытащить, т.е. менять:


a2t.topics_id = '" . (int)$current_topic_id . "'
[/code] например на:
[code]
a2t.topics_id = '1'

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

Вообще странно.... или у меня кривые руки...

тут же нужно добраться до topics_id

и если значение этой ячейки равно числу, то выполняется вывод статьи на странице товара

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

Уточните, что именно нужно!?

Если выводить статьи из определённого раздела, то вот имено такой sql запрос для вывода статей из раздела, где подставляется id раздела.

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


<?php
$module = new vamTemplate;
$module->assign('tpl_path', 'templates/'.CURRENT_TEMPLATE.'/');
$sql = "select distinct ax.articles_id, ad.articles_name, ad.articles_description, 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";
$listing_sql = "select a.articles_id, a.authors_id, a.articles_date_added, ad.articles_name, ad.articles_head_desc_tag, au.authors_name, td.topics_name, a2t.topics_id from " . TABLE_ARTICLES . " a left join " . TABLE_AUTHORS . " au on a.authors_id = au.authors_id, " . TABLE_ARTICLES_DESCRIPTION . " ad, " . TABLE_ARTICLES_TO_TOPICS . " a2t left join " . TABLE_TOPICS_DESCRIPTION . " td on a2t.topics_id = td.topics_id where (a.articles_date_available IS NULL or to_days(a.articles_date_available) <= to_days(now())) and a.articles_status = '1' and a.articles_id = a2t.articles_id and ad.articles_id = a2t.articles_id and ad.language_id = '" . (int)$_SESSION['languages_id'] . "' and td.language_id = '" . (int)$_SESSION['languages_id'] . "' and a2t.topics_id = '2' order by a.sort_order, ad.articles_name";
$module_content = array ();
$query = vamDBquery($sql);
$res = vamDBquery($listing_sql);
while ($one = vam_db_fetch_array($query,true) and $one = vam_db_fetch_array($res,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] && vam_db_fetch_array($res)) дополнительное условие к while Модуль да же выводится, но он пуст и в нем лишь только ссылка <a href="http://laramirra.com/article_info.php?articles_id="></a> а если веместо
[CODE]
while ($one = vam_db_fetch_array($query,true) && vam_db_fetch_array($res))
поставить

while ($one = vam_db_fetch_array($res,true)){
[/code]

то выводятся только ссылки на статьи (лежащие в этом разделе)

что в принцепе логично да данного запроса

Изменено пользователем KoVaLsKy
то выводятся только ссылки на статьи (лежащие в этом разделе)
Ссылка на сообщение
Поделиться на другие сайты

Я лишь хочу сказать, что нужно взять за образец пример sql запроса из articles.php и поправить его под Ваши требования.

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