DenCho 0 Опубликовано 5 июня, 2010 Жалоба Share Опубликовано 5 июня, 2010 Приветствую первопроходцев VAM Cart! Задача: на главной странице отобразить несколько выборок вида "категория - несколько образцов товара из неё". Проблема: не могу разобраться в структуре данных и методах доступа к ним. Выборку категорий сделать получилось на основе микро шаблона category-listing, но как его модифицировать для доступа к дочерним товарам на той же самой странице - непонятно. Вопрос: подскажите, пожалуйста, способы реализации задачи. Я начал "ковырять" в направлении smarty\vam_plugins\function.content_listing.php Верное ли направление мысли или есть другое решение? Как получить данные произвольного товара с произвольной страницы? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 6 июня, 2010 Жалоба Share Опубликовано 6 июня, 2010 Да, мысль верная, за исключением того, что всё можно сделать в админке, без правки файлов. Это вобщем-то главная особенность, т.е. практически всё можно делать через админку, без необходимости ftp клиентов, загрузки файлов и т.д. В этом конечно свои плюсы и минусы, пока вот так. Отредактируйте в Админке - Каталог страницу главная страница и в сам текст страницы, в содержимое вставьте например: {content_listing parent=X type=product}[/code] где X - id номер категории, из которой нужно вывести товар, число. id номер виден например при редактировании категории в админке, в строке браузера. Например категория Рога имеет id 36, тогда что б на главной вывести товары из этой категории на главную страницу, в содержимое главной страницы вставляем: [code]{content_listing parent=36 type=product} Подсказку по тэгу content_listing можно прочитать в Админке - Расширения - Тэги - content_listing. Можно сделать свой шаблон для товаров, которые Вы таким образом выводите. Для этого создаёте Микро шаблон в Админке - Оформление - Микро шаблоны, создаёте шаблон по примеру микро шаблона product_listing, только рисуете свой html-код, в поле алиас указываете например test, в поле название тэга conent_listing, т.е. мы создам свой шаблон отображения данных тэгов content_listing. А что б использовать этот шаблон при выводе, делаем так: {content_listing parent=36 type=product template=test}[/code]P.S. Но пока что код ещё в разработке, например нет ограничения на вывод количества позиций, чуть позже ещё будет параметр limit у тэга content_listing и другие возможности. Ссылка на сообщение Поделиться на другие сайты
DenCho 0 Опубликовано 6 июня, 2010 Автор Жалоба Share Опубликовано 6 июня, 2010 Спасибо за подробный ответ! Теперь принцип взаимодействия данных стал практически ясный и начала получаться реализация. Возник еще один вопрос: в подсказке по content_listing указано, что он для параметра parent помимо числового значения принимает еще alias, но на практике по алиасу обработчик не возвращает данных, пишет "Элементы отсутствуют", с числовым значением всё в порядке. В самом модуле вроде обработчик текстового параметра на этот случай есть, но что-то не срабатывает. Известна ли эта проблема? Моя идея: сделать автоматическую выборку нескольких товаров из каждой категории средствами smarty простым циклом с нужным количеством итераций. Но для этого надо в обработчике категории вызывать снова content_listing с указанием текущего элемента в качестве parent. Однако в массиве content_list отсутствует id элемента, только имя и псевдоним, так что автоматически получить его таким способом нельзя. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 6 июня, 2010 Жалоба Share Опубликовано 6 июня, 2010 Пока что только id задаются, правьте тогда \app\vendors\smarty\vam_plugins\function.content_listing.php Ссылка на сообщение Поделиться на другие сайты
DenCho 0 Опубликовано 6 июня, 2010 Автор Жалоба Share Опубликовано 6 июня, 2010 Ок, благодарю за консультацию! Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 6 июня, 2010 Жалоба Share Опубликовано 6 июня, 2010 Не за что Ссылка на сообщение Поделиться на другие сайты
DenCho 0 Опубликовано 7 июня, 2010 Автор Жалоба Share Опубликовано 7 июня, 2010 Ограничение на количество отображаемых на главной странице товаров сделал на стадии вывода шаблона при помощи оператора smarty для обхода массива {selection} с параметром max. Так что с этим пунктом всё ок. Но теперь снова озадачен следующим нюансом: подскажите можно ли получить доступ к данным произвольного товара, таким как цена, описание, артикул и т.д., находясь не на странице товара? Ведь тэги {product_price}, {description} работают только в шаблоне "страница карточки товара". Если в текущей реализации возможность отсутствует, буду рад подсказке каким методом можно самому дописать. Smarty как я понял позволяет вставлять в шаблон чистый php код, может таким образом можно получить доступ к поизвольным данным из шаблона? Но для этого надо четко знать структуру этих данных. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 7 июня, 2010 Жалоба Share Опубликовано 7 июня, 2010 Ну наверное через тот же content_listing По-другому вроде нет готового кода. Либо сделать какой-то свой смарти тэг по аналогии с тем же content_listing, который будет выводит нужные данные. Ссылка на сообщение Поделиться на другие сайты
DenCho 0 Опубликовано 7 июня, 2010 Автор Жалоба Share Опубликовано 7 июня, 2010 Всё круто, цели добился правкой content_listing: добавил к $vars['content_list'] дополнительные переменные добываемые из БД в массив $content_list_data, которые мне требуются для отображения в шаблоне: цена, описание и т.д. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 8 июня, 2010 Жалоба Share Опубликовано 8 июня, 2010 Может выложите файлик?! Если изменения действительно полезные, добавлю в код по умолчанию. Ссылка на сообщение Поделиться на другие сайты
DenCho 0 Опубликовано 9 июня, 2010 Автор Жалоба Share Опубликовано 9 июня, 2010 Там несколько комментов с подписью --DenCho в местах изменения. Плюс есть мысль, что правильнее было бы сделать проверку условия, если текущий content имеет тип product, то только в этом случае добавлять ему переменную price. В прочем, для других типов контента без проверки условия, как сейчас, она будет просто пустой из-за отсутствия значения. Еще пришлось мне ковырять компонент currency_base, чтоб убрать подстановку названия валюты, так как для моего шаблона название "руб" должно иметь собственное оформление и быть заключенным в отдельный div. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 9 июня, 2010 Жалоба Share Опубликовано 9 июня, 2010 Спасибо Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения