Leafy Market Bag (EN)

About Leafy Market Bag (EN)

Leafy Market Bag is an elegant and practical mesh bag design from Dorte Bak Knitting, perfect for light shopping, knitting projects, and everyday use. The bag is knitted on 3.5 mm needles with a sturdy seed-stitch base and a decorative leaf pattern that gives it a feminine and airy look.

The pattern recommends Norma from Lang Yarns or Line from Sandnes Garn, and uses 150 g of yarn. The finished bag measures approx. 35 x 28 cm after washing and blocking, and is completed with long I-cord handles tied together in a decorative knot.

Leafy Market Bag is knitted in cotton or linen for optimal durability and is a beautiful, functional alternative to disposable bags.

Designer

Craft

Meterage (per 50 g)

Needle / Hook Size

Language

Gauge

Stitch Pattern & Technique

, ,

Difficulty Level

Collection

,

About this Pattern

Leafy Market Bag is a beautiful and functional mesh bag design by Dorte Bak Knitting, created for everyday use with a focus on both aesthetics and durability. The bag features an elegant leaf pattern that gives it a feminine and airy look, while the construction is sturdy enough for light groceries, knitting projects, baby clothes, and other essentials on the go.


The bag is knitted primarily in the round, but begins with a base that is worked back and forth in seed stitch. This base gives the bag stability and shape. Stitches are then picked up along the entire base, and the bag is knitted in the round with the leaf pattern placed in panels, while the sides continue in seed stitch. The combination of texture and lace pattern gives the bag both strength and a decorative expression.


Leafy Market Bag is finished with long I-cord handles, tied together in a decorative knot. This solution provides a flexible carrying handle and emphasizes the handmade look. The bag measures approx. 35 x 28 cm after washing and blocking, making it spacious without feeling heavy or bulky.


The pattern is knitted on 3.5 mm needles - either circular (60 cm) or using DPNs / magic loop.
The gauge is 23 stitches in the pattern repeat, measured after soaking and blocking.


A sturdy yarn is recommended, one that does not stretch unnecessarily with use. The pattern suggests Norma from Lang Yarns (50 g = 135 m) or Line from Sandnes Garn (50 g = 110 m). Yarn consumption is 150 g regardless of yarn choice.
Calculated yardage per 50 g is approx. 110–135 m, depending on yarn selection.


It is recommended to choose cotton and/or linen blends, as these fibres are more hard-wearing and hold their shape better than wool, making them particularly suitable for bags and market nets.


Leafy Market Bag is a well-thought-out knitting project that combines technique, function, and timeless design - perfect for anyone wanting a beautiful, reusable bag with a personal touch.

Meet

Dorte Bak Knitting

Dorte Bak Knitting was founded in 2018 and has since published patterns in a classic style with "whimsical" details. I grew up among creative women; all the women in my family have sewn, knitted, and created with their hands. Therefore, it felt entirely natural that, at the age of six, I was given my first knitting needles. Even so, it was only later in life that knitting truly captured me—and since then I haven’t been able to let it go.

Related patterns

Other patterns you might enjoy.

<?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">&times;</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( __( '&ldquo;%s&rdquo; 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 &times; %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' ); ?>