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

не могу получить метку PRODUCTS_CATEGORY_URL


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

Не могу получить метку {$PRODUCTS_CATEGORY_URL} (URL адрес категории товара) в шаблоне product_listing_columns.html. Хотя в руководстве она описана, и в файле \includes\classes\product.php в районе 490 строки в массив заносится.

Даже заполнял поле "SEO URL категории", но не помогло.

Еще желательно получить урл категории в карточке товара. Но мои нервы уже на пределе.

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

Погоди немного - помогу.

Постулат Хорнера.

===================

Опыт растет прямо пропорционально выведенному из строя оборудованию.

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

Закончим с первой частью - перейдём ко второй.

в \includes\modules\product_listing.php

впихни в кучу около 150-й строки (У меня эта строка - в середине - 2-я)

....
$module->assign('CATEGORIES_HEADING_TITLE', $category['categories_heading_title']);

$module->assign('PRODUCTS_CATEGORY_URL', vam_href_link(FILENAME_DEFAULT, vam_category_link($current_category_id,$foo[$current_category_id]['name']))  );
   
$module->assign('CATEGORIES_IMAGE', $image);
....[/code]

Ну и, соответственно метку сделай  {$PRODUCTS_CATEGORY_URL}  в файле product_listing_columns.html

и проверь

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

Да, заработало. У меня в исходнике версии 1.53 в этом месте вообще дырка, как будто эта строка там была. И далее патчами нигде не исправляется. В следующей версии вертайте взад.

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

link=topic=5758.msg48142#msg48142 date=1274258972]

Да, заработало. У меня в исходнике версии 1.53 в этом месте вообще дырка, как будто эта строка там была. И далее патчами нигде не исправляется. В следующей версии вертайте взад.

Я не знаю что там было.

Скорее всего отступ  "для читабельности кода".

И потом, зачем в этом копаться?

Давайте решим вашу проблему до конца.

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

Ну хорошо. Еще желательно получить урл категории в карточке товара. А то я его сейчас получаю через index.php?cat={$CATEGORY_ID}

Но если у категории прописан SEO-URL, то не открывается с фильтром &filter_id=...

В общем нужно получить в карточке товара урл его категории - если прописан, то SEO, если нет то обычный.

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

Собственно, код почти тот же

$info->assign('PRODUCTS_CATEGORY_URL', vam_href_link(FILENAME_DEFAULT, vam_category_link($current_category_id,$foo[$current_category_id]['name']))  );

только $module->assign

замени на $info->assign

Ну и вставь в includes\modules\product_info.php где-нибудь около 120-150-й строк.

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

Спасибо, работает.

Но только если указан SEO-url категории, то фильтр нужно добавлять через символ ?filter_id=5. А если обычный урл, то фильтр &filter_id=5. Не могу понять как мне в карточке товара такой урл сформировать.

В других местах магазина это как-то автоматически делается. Даже пагинация по страницам в зависимости от SEO-url либо через ?, либо через &.

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

link=topic=5758.msg48162#msg48162 date=1274262756]

Спасибо, работает.

Но только если указан SEO-url категории, то фильтр нужно добавлять через символ ?filter_id=5. А если обычный урл, то фильтр &filter_id=5. Не могу понять как мне в карточке товара такой урл сформировать. В других местах магазина это как-то автоматически делается.

Вот смотри: там используется функция vam_category_link (она в файле \inc\vam_category_link.inc.php)

Вот она:

function vam_category_link($cID,$cName='') {

  $cName = vam_cleanName($cName);

  $link = 'cat='.$cID;

  if (SEARCH_ENGINE_FRIENDLY_URLS == 'true') $link = 'cat=c'.$cID.'_'.$cName.'.html';

  return $link;

}

Удали в ней указанную строку и всё будет по-старому.

P.S.: Можешь просто копию функции сделать, например, vam_category_link2

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

Похоже не то. Это проверка на включенный в админке пункт "Автоматически генерировать SEO URL"

А у меня проблема с вручную заполненным полем "SEO URL категории". Так как не у всех категорий это поле заполнено, то получается проблема с присоединением фильтра к урлу категории:

Если урл обычный, то фильтр с амперсанда начинать нужно

Если СЕО-урл, то фильтр начинается с вопросительного знака

Это не я придумал - это в движке так.

Мне нужно в карточке товара вывести линк вида "урл-категории" + "filter_id={$MANUFACTURER_ID}". И не понятно какой символ использовать для соединения.

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

создай к примеру копию ф-ю


function vam_category_link2($cID,$cName='', $params = null) {
$cName = vam_cleanName($cName);

        if (null !== $params){
          $link = 'cat='.$cID.'&'.$params;
        if (SEARCH_ENGINE_FRIENDLY_URLS == 'true') $link = 'cat=c'.$cID.'_'.$cName.'.html?'.$params;
        } else {
        $link = 'cat='.$cID;
            if (SEARCH_ENGINE_FRIENDLY_URLS == 'true') $link = 'cat=c'.$cID.'_'.$cName.'.html';
        }
     
return $link;
}
[/code] тут без проверок на то что передается в params тут неважно потом используешь
[code]
$info->assign('CATEGORY_FILTER1', vam_href_link(FILENAME_DEFAULT, vam_category_link2($current_category_id,$foo[$current_category_id]['name']), 'filter_id='.<id протзводителя> )  );

если принцыпиально это нужно добавлять в шаблоне то как вариант берешь твои урл категории парсиш его на наличие "?" если символ есть то добавляешь &filter= если нет то ?filter_id=

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

SEARCH_ENGINE_FRIENDLY_URLS - это вообще мне не нужно, я это в админке не включал. Это при включенном урлы вида /cat=c01_название-категории.html , но я не об этом спрашиваю.

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

ну всё, справился:

<a href="{$PRODUCTS_CATEGORY_URL}
{if stristr($PRODUCTS_CATEGORY_URL, '.html') == false}
&
{else}
?
{/if}
filter_id={$MANUFACTURER_ID}" class="artistname">все '{$MANUFACTURER}' группы '{$CATEGORY}'</a>[/code]

я же php вообще не знаю  8)

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