Skip to content
We’ve made it easy to get started. Explore your options below.
Unlimited access to patterns
Personal pinboards
Unique member benefits
1 free wool coin per month (printable)
15% off yarn
15% off yarn kits
Free shipping in EU
How often would you like to pay?
Unlimited access to patterns
Personal pinboards
Unique member benefits
1 free wool coin per month (printable)
15% off yarn
15% off yarn kits
Free shipping in EU
How often would you like to pay?
Your 6
Member benefits
Unlimited access
Get full access to all of the platform’s handpicked patterns from carefully selected designers from around the world.
Create your own boards
Save all your favorites in your own unique and creative boards.
Great search features
With our powerful filters, you can search very specifically by, for example, yardage, technique, measurements, designer, or click through various categories.
Always within reach
Always have your patterns within reach. Read them directly on your phone, tablet, or computer.
Personalized content
Get access to lists that suggest patterns based on your style and your previous projects.
Follow your favorite designer
On YARNBOOK, you can follow your favorite designers with just a single click.
Our lovely
Members
"YARNBOOK has some really great search features like yardage and needle sizes, which have helped me use up some of all the yarn I have in stock."
Bente Andreasen, 66 years
"YARNBOOK is absolutely fantastic because I can both find a lot of ongoing new inspiration for my yarn projects and save it all on my personal boards, and I love that everything is always right at hand."
Lise Høyer, 39 years
<?php
/**
* Mini-cart
*
* Contains the markup for the mini-cart, used by the cart widget.
*
* This template can be overridden by copying it to yourtheme/woocommerce/cart/mini-cart.php.
*
* HOWEVER, on occasion WooCommerce will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.
*
* @see https://woocommerce.com/document/template-structure/
* @package WooCommerce\Templates
* @version 9.5.0
* @flatsome-version 3.19.8
*/
defined( 'ABSPATH' ) || exit;
do_action( 'woocommerce_before_mini_cart' ); ?>
<?php if ( WC()->cart && ! WC()->cart->is_empty() ) : ?>
<ul class="woocommerce-mini-cart cart_list product_list_widget <?php echo esc_attr( $args['list_class'] ); ?>">
<?php
do_action( 'woocommerce_before_mini_cart_contents' );
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
$product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );
if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_widget_cart_item_visible', true, $cart_item, $cart_item_key ) ) {
/**
* This filter is documented in woocommerce/templates/cart/cart.php.
*
* @since 2.1.0
*/
$product_name = apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key );
$thumbnail = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key );
$product_price = apply_filters( 'woocommerce_cart_item_price', WC()->cart->get_product_price( $_product ), $cart_item, $cart_item_key );
$product_permalink = apply_filters( 'woocommerce_cart_item_permalink', $_product->is_visible() ? $_product->get_permalink( $cart_item ) : '', $cart_item, $cart_item_key );
?>
<li class="woocommerce-mini-cart-item <?php echo esc_attr( apply_filters( 'woocommerce_mini_cart_item_class', 'mini_cart_item', $cart_item, $cart_item_key ) ); ?>">
<?php
echo apply_filters( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'woocommerce_cart_item_remove_link',
sprintf(
'<a href="%s" class="remove remove_from_cart_button" aria-label="%s" data-product_id="%s" data-cart_item_key="%s" data-product_sku="%s" data-success_message="%s">×</a>',
esc_url( wc_get_cart_remove_url( $cart_item_key ) ),
/* translators: %s is the product name */
esc_attr( sprintf( __( 'Remove %s from cart', 'woocommerce' ), wp_strip_all_tags( $product_name ) ) ),
esc_attr( $product_id ),
esc_attr( $cart_item_key ),
esc_attr( $_product->get_sku() ),
/* translators: %s is the product name */
esc_attr( sprintf( __( '“%s” has been removed from your cart', 'woocommerce' ), wp_strip_all_tags( $product_name ) ) )
),
$cart_item_key
);
?>
<?php if ( empty( $product_permalink ) ) : ?>
<?php echo $thumbnail . wp_kses_post( $product_name ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
<?php else : ?>
<a href="<?php echo esc_url( $product_permalink ); ?>">
<?php echo $thumbnail . wp_kses_post( $product_name ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</a>
<?php endif; ?>
<?php echo wc_get_formatted_cart_item_data( $cart_item ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
<?php echo apply_filters( 'woocommerce_widget_cart_item_quantity', '<span class="quantity">' . sprintf( '%s × %s', $cart_item['quantity'], $product_price ) . '</span>', $cart_item, $cart_item_key ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</li>
<?php
}
}
do_action( 'woocommerce_mini_cart_contents' );
?>
</ul>
<?php do_action( 'flatsome_after_mini_cart_contents' ); ?>
<div class="ux-mini-cart-footer">
<?php do_action( 'flatsome_before_mini_cart_total' ); ?>
<p class="woocommerce-mini-cart__total total">
<?php
/**
* Hook: woocommerce_widget_shopping_cart_total.
*
* @hooked woocommerce_widget_shopping_cart_subtotal - 10
*/
do_action( 'woocommerce_widget_shopping_cart_total' );
?>
</p>
<?php do_action( 'woocommerce_widget_shopping_cart_before_buttons' ); ?>
<p class="woocommerce-mini-cart__buttons buttons"><?php do_action( 'woocommerce_widget_shopping_cart_buttons' ); ?></p>
<?php do_action( 'woocommerce_widget_shopping_cart_after_buttons' ); ?>
</div>
<?php else : ?>
<div class="ux-mini-cart-empty flex flex-row-col text-center pt pb">
<?php do_action( 'flatsome_before_mini_cart_empty_message' ); ?>
<p class="woocommerce-mini-cart__empty-message empty"><?php esc_html_e( 'No products in the cart.', 'woocommerce' ); ?></p>
<?php do_action( 'flatsome_after_mini_cart_empty_message' ); ?>
</div>
<?php endif; ?>
<?php do_action( 'woocommerce_after_mini_cart' ); ?>