Magento: получение URL-адреса продукта для продуктов в сгруппированном продукте

Для сгруппированного продукта я хотел бы отобразить ссылку на простые продукты, из которых он состоит. Например, если у меня есть сгруппированный продукт под названием «Обеденный набор», состоящий из тарелок, ножей, вилок и т. д. Я бы хотел, чтобы каждый из субпродуктов имел ссылку на этот субпродукт (щелчок по тарелкам ведет к простому продукту для тарелок)

<?php foreach ($_associatedProducts as $_item): ?>
    <tr>
        <td><?php echo $this->htmlEscape($_item->getName()) ?></td>
        <td class="a-right">
            <?php echo $this->getPriceHtml($_item, true) ?>
        </td>
        <?php if ($_product->isSaleable()): ?>
        <td class="a-center">
        <?php if ($_item->isSaleable()) : ?>
            <a href="<?php $_item->getProductUrl() ?>">View</a>
        <?php else: ?>
            <p class="availability"><span class="out-of-stock"><?php echo $this->__('Out of stock.') ?></span></p>
        <?php endif; ?>
        </td>
        <?php endif; ?>
    </tr>
<?php endforeach; ?>

Это фрагмент кода из файла grouped.phtml в

app/design/frontend/blank/default/template/catalog/product/view/type/grouped.phtml

В частности, строка с $_item->getProductUrl() не работает, и я не знаю код, необходимый для получения URL-адреса для этого связанного элемента продукта. Если бы кто-нибудь мог помочь здесь, это было бы очень признательно.

Кроме того, где я могу найти доступные методы (и как они используются) для продуктов или категорий или $_item и тому подобного?


person Nathan    schedule 22.12.2009    source источник


Ответы (3)


Легко найти все методы и функции. Всегда возвращайтесь к Core /app/code/core/Mage/Catalog/Model/Product.php или любому другому файлу в этой папке.

Ваш код идеален. Просто используйте

$_item->getUrlPath() ;

вместо productURL.

person Kathir Sid Vel    schedule 23.12.2009
comment
В большинстве случаев вы можете сделать предположение... Я создаю новые атрибуты, такие как отделка, размеры, время выполнения и т. д. В цикле вызовите getData('lead_time'), и это просто работает! Великолепный ОРМ! - person Kathir Sid Vel; 23.12.2009

Всего несколько замечаний по получению доступных методов/данных:

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

$array = get_class_methods($_item); //yields an array of the methods in the class
var_dump($array); // to see the methods

Чтобы получить все методы, связанные с данными, сначала найдите элементы данных в классе. Это работает с большинством объектов в Magento:

$data = $_item->getData(); // $key => $value array

Затем вы можете получить любую часть данных двумя способами:

// assuming I want 'my_data'
$data = $_item->getMyData();
$data = $_item->getData('my_data');
person Joseph Mastey    schedule 23.12.2009

<?php echo $this->htmlEscape($_item->getProductUrl()) ?>

или вот весь A HREF:

<a href="<?php echo $this->htmlEscape($_item->getProductUrl()) ?>">
            <?php echo $this->htmlEscape($_item->getName()) ?>
</a>
person Blueflame    schedule 11.03.2011