Добавлено: Получить полную ссылку на категорию/товар 10.07.14 17:52:00
#1
Регистрация: 10.06.14
Сообщений : 35
Обратиться по имени
Добрый день, подскажите есть ли метод, которым можно получить полную ссылку на товар или категорию?
getProductInfo получает sublink и товара и его категории, но не получает урлы родительских категорий, можно конечно самому обратиться к базе и брать названия категорий по id_parent пока не упрешься в 0, и добавить в начало язык категории, но не факт что это будет стабильное решение.
Добавлено: Получить полную ссылку на категорию/товар 11.07.14 15:09:55
#2
Регистрация: 29.04.11
Сообщений : 13
Обратиться по имени
Добавлено: Получить полную ссылку на категорию/товар 11.07.14 20:38:12
#3
Регистрация: 10.06.14
Сообщений : 35
Обратиться по имени
Спасибо, но почему-то метод не срабатывает,
$shop_item_table_object = AMI::getResourceModel('eshop_item/table');
$selected_catalog_item=$shop_item_table_object->getItem($item_id);
$item_url=$selected_catalog_item->getFullURL();
не находит локаль: No page locale value found for module 'eshop_item' (0). You should add `lang' selecting from DB by calling addNavColumns(), попробовал вместо него getURL(), он не нашел sublink. В базе проверил эти свойства имеются.
$shop_item_table_object = AMI::getResourceModel('eshop_item/table');
$selected_catalog_item=$shop_item_table_object->getItem($item_id);
$selected_catalog_item->addNavColumns();
$item_url=$selected_catalog_item->getFullURL();
При добавлении addNavColumns, его не узнает: Call to undefined method AmiCatalog_Items_TableItem::addNavColumns()
Добавлено: Получить полную ссылку на категорию/товар 12.07.14 17:17:58
#4
Регистрация: 10.06.14
Сообщений : 35
Обратиться по имени
addNavColumns видимо метод только списка http://manual.amiro.ru/docs/api6/ModuleComponent/Model/AMI_ModTableList.html#methodaddNavColumns
Для item вроде бы есть аналогичный метод
http://manual.amiro.ru/docs/api6/ModuleComponent/Model/AMI_ModTableItem.html#methodaddFields , но item его тоже не узнал
$shop_item_table_object->addFields(array('lang','sublink';));
Call to undefined method AmiCatalog_Items_Table::addFields()
попробовал как в примере
$shop_item_table_object->find(1, array('lang', 'sublink';));
но getFullURL() это не помогло, он по прежнему не находит локаль.
В конце концов удалось таки это сделать через модель списка:
$modId = 'eshop_item';
AMI::initModExtensions($modId);
$items = AMI::getResourceModel($modId. '/table')
->getList()
->addColumns($fields)
->addWhereDef('AND i.id='. $item_id)
->addNavColumns('lang', 'ru')
->requestModLinks()
->load();
foreach($items as $item){
$item_url[]=$item->getFullURL();
}
в $item_url наконец что-то есть
Добавлено: Получить полную ссылку на категорию/товар 12.07.14 18:03:20
#5
Регистрация: 10.06.14
Сообщений : 35
Обратиться по имени
Для категории $modId = 'eshop_cat'; , а остальное не меняется.
Добавлено: Получить полную ссылку на категорию/товар 13.07.14 13:10:30
#6
Регистрация: 29.04.11
Сообщений : 13
Обратиться по имени
Добавлено: Получить полную ссылку на категорию/товар 13.07.14 17:06:37
#7
Регистрация: 10.06.14
Сообщений : 35
Обратиться по имени
А, вот оно что, спасибо. getItem в документации первым внимание привлекает, теперь как прочитал описание find ясно что это то что надо, а так не догадался бы глянуть.
Добавлено: Получить полную ссылку на категорию/товар 16.07.14 20:57:24
#8
Регистрация: 26.05.08
Сообщений : 984
Обратиться по имени
У меня вот такой код:
$oItemModel = AMI::getResourceModel('eshop_item/table')->getItem();
$oItemModel->addFields();
$oItemModel->addSearchCondition(array('id' => 165));
$oItemModelItem = $oItemModel->load();
echo $oItemModelItem->getFullURL();
Выводит catalog/atakujuschij-tigr , хотя я жду от него catalog/internet-magazin/mebel-dlja-vannoj/damixa/atakujuschij-tigr
Что я делаю не так?
Добавлено: Получить полную ссылку на категорию/товар 16.07.14 22:19:29
#9
Регистрация: 15.07.14
Сообщений : 1
Обратиться по имени
Евгений Лапин: Выводит catalog/atakujuschij-tigr, хотя я жду от него catalog/internet-magazin/mebel-dlja-vannoj/damixa/atakujuschij-tigr
У меня ваш код сработал с тем же результатом. Попробовал еще
$oItemModel = AMI::getResourceModel('eshop_item/table')->find(165);
$oItemModel->addFields();
$oItemModelItem = $oItemModel->load(); что в принципе то же самое и результат тот же. Попробовал указать те же что и у меня, не помогло. Наверное чего-то не хватает, я как сделал через модель списка так и оставил, работает.
Добавлено: Получить полную ссылку на категорию/товар 16.07.14 22:24:19
#10
Регистрация: 10.06.14
Сообщений : 35
Обратиться по имени
Блин, с корпоративной учетки отписался, в общем если что мой код выше работает
Добавлено: Получить полную ссылку на категорию/товар 17.07.14 06:08:43
#11
Регистрация: 26.05.08
Сообщений : 984
Обратиться по имени
А у меня Ваш код дает совершенно аналогичный моему результат.
Добавлено: Получить полную ссылку на категорию/товар 17.07.14 09:21:30
#12
Регистрация: 21.03.07
Сообщений : 261
Обратиться по имени
Нужно инициализировать расширения, в том числе категорийное:
<?php
require_once 'ami_env.php';
$oTable = AMI::getResourceModel(
'eshop_item/table',
array(
array(
'extModeOnConstruct' => 'common'
)
)
);
$oItem = $oTable->find(165);
//$oItem->addFields();
echo $oItem->getFullURL();
Добавлено: Получить полную ссылку на категорию/товар 17.07.14 10:40:42
#13
Регистрация: 26.05.08
Сообщений : 984
Обратиться по имени
То же самое: код
$oItemModel = AMI::getResourceModel(
'eshop_item/table',
array(
array(
'extModeOnConstruct' => 'all'
)
)
);
$oItemModelItem = $oItemModel->find(165);
echo $oItemModelItem->getFullURL();
опять дает мне catalog/atakujuschij-tigr
'extModeOnConstruct' => 'all'
all я добавил уже после того, как common не сработал, для тестов, там результат тот же самый.
делаю я это во фронт функции, может там чего-то недоступно?
Добавлено: Получить полную ссылку на категорию/товар 17.07.14 10:54:18
#14
Регистрация: 21.03.07
Сообщений : 261
Обратиться по имени
Добавлено: Получить полную ссылку на категорию/товар 17.07.14 11:38:36
#15
Регистрация: 26.05.08
Сообщений : 984
Обратиться по имени