it-swarm.com.de

Produktbild bei j2store Warenkorb

j2store verwendet thumbimage und mainimage anstelle von joomla article intro und full image, um das Bildprodukt im j2store-Warenkorb anzuzeigen und die Rechnung zu bestellen

(enter image description here

Ich habe mich entschieden, das Intro-Bild im Artikel anstelle des Miniaturbilds von j2store für die Anzeige im j2store-Warenkorb und auf der Rechnung zu verwenden

(enter image description here

(enter image description here

dieser Code für den j2store-Einkaufswagen und die Kasse, die das Daumenbildprodukt laden

<?php
    $registry = new JRegistry;
    $registry->loadString($item->orderitem_params);
    $item->params = $registry;
    $thumb_image = $item->params->get('thumb_image', '');
    $back_order_text = $item->params->get('back_order_item', '');
?>

und dieser Code für Bild im Warenkorb anzeigen

<?php if($this->params->get('show_thumb_cart', 1) && !empty($thumb_image)): ?>
    <span class="cart-thumb-image">
    <a href="<?php echo $item->cartitem->product_view_url;?>">
        <img alt="<?php echo $item->orderitem_name; ?>" src="<?php echo $thumb_image; ?>" >
        </a>
    </span>
<?php endif; ?>

jetzt möchte ich das Joomla-Artikel-Intro-Bild im Warenkorb anzeigen. Wie kann ich das Joomla-Intro-Bild im Warenkorb rendern und anzeigen?

2
niaziblog

In der Warenkorbansicht werden keine Joomla-Bilder geladen, sodass Sie sie abrufen müssen. Dies kann in der Layout-Überschreibung oder mit einem Plugin erfolgen. Es gibt mehrere Plugin-Ereignisse, die verwendet werden könnten. Ich benutze onJ2StoreBeforeDisplayCart weil alle Elemente gleichzeitig übergeben werden. Auf diese Weise kann eine einzelne Abfrage für alle Produkte im Warenkorb ausgeführt werden.

defined('_JEXEC') or die;

use Joomla\CMS\Plugin\CMSPlugin;

class plgJ2StoreCartimage extends CMSPlugin
{
    protected $db;

    public function onJ2StoreBeforeDisplayCart($items)
    {
        // Get article IDs.
        $ids = array_column($items, 'product_source_id');

        // Get article images from the database.
        $query = $this->db->getQuery(true)
            ->select($this->db->quoteName(array('id', 'images')))
            ->from($this->db->quoteName('#__content'))
            ->where($this->db->quoteName('id') . ' IN (' . implode(',', $ids) . ')');

        // Index on ID for easy access.
        $data = $this->db->setQuery($query)->loadObjectList('id');

        foreach ($items as $item)
        {
            $images = json_decode($data[$item->product_source_id]->images);
            $item->thumb_image = $images->image_intro;
        }
    }
}

Ich bin mit J2Store nicht vertraut, habe jedoch festgestellt, dass das Produktobjekt $product_source Eigenschaft, die definiert, zu welcher Erweiterung das Produkt gehört (z. B. com_content). Angenommen, es ist möglich, Produkte in mehreren Erweiterungen zu speichern, möchten Sie möglicherweise die Erweiterung überprüfen, bevor Sie die IDs abrufen und die Abfrage ausführen:

$ids = [];

foreach ($items as $item)
{
    if ($item->product_source === 'com_content')
    {
        $ids[] = $item->product_source_id;
    }
}
1
Sharky