What are the Slack Archives?

It’s a history of our time together in the Slack Community! There’s a ton of knowledge in here, so feel free to search through the archives for a possible answer to your question.

Because this space is not active, you won’t be able to create a new post or comment here. If you have a question or want to start a discussion about something, head over to our categories and pick one to post in! You can always refer back to a post from Slack Archives if needed; just copy the link to use it as a reference..

Hi all, have any of you ever had the case and wanted to create a URL for a concrete product? If so,

UP8T3GKFH
UP8T3GKFH Posts: 56 🧑🏻‍🚀 - Cadet

Hi all,
have any of you ever had the case and wanted to create a URL for a concrete product? If so, do you have any tips for me on how best to start?
The background is that we need to find a way to call up a concrete product directly. So that we can, for example, call up the selected variant directly from the cart.

Comments

  • U01LKKBK97T
    U01LKKBK97T Posts: 287 🧑🏻‍🚀 - Cadet
    edited May 2021

    Have a look at function getProductUrl in vendor/spryker-shop/product-detail-page/src/SprykerShop/Yves/ProductDetailPage/Controller/ProductController.php.

  • U01LKKBK97T
    U01LKKBK97T Posts: 287 🧑🏻‍🚀 - Cadet
    edited May 2021

    One approach of solving this properly could be:

    Extend ProductViewTransfer by a new field, e. g. concreteUrl (there already is a field called url, but this will always contain the abstract url only, I think).

    Then, in your controller, read the product from storage:

    $productViewTransfer = $this->getFactory()
        ->getProductStorageClient()
        ->mapProductStorageData($productData, $this->getLocale(), <selected attributes>);
    

    Finally, create a view expander plugin which will be executed when the product is read from storage to populate your new transfer field with the specific concrete url. See function getProductViewExpanderPlugins in vendor/spryker/product-storage/src/Spryker/Client/ProductStorage/ProductStorageDependencyProvider.php.