Producten op je catalog.php

Gepost op 19 november 2009 om 14:07u, door hiranthi | geen reacties | reageren

Deze post is deel 3 van 5 in de serie "Shopp custom templates bewerken"
GD Star Rating
loading...

Een vraag die ik steeds meer tegenkom op de Shopp forums is de volgende: "Hoe geef ik al mijn producten weer op de Shopp indexpagina?". Ofwel: hoe pas ik mijn catalog.php aan zodat al mijn producten worden weergegeven in plaats van de smart categories?

:!: Voor ik de code weergeef en deze uitleg moet je rekening houden met het volgende: om ervoor te zorgen dat alle producten eenmaal worden weergegeven moeten ze toegewezen zijn aan één categorie (dus niet meerdere). Op het moment dat je een product in meerdere categorieën hebt staan zal deze even vaak weergegeven worden als de hoeveelheid categorieën hij is toegewezen.

De code

<ul class="products">
	<li class="row"><ul>
<?php
if (shopp('catalog','has-categories')) : 
	while (shopp('catalog','categories')) :
		if (shopp('category','hasproducts')) : while (shopp('category','products')) :
			if (shopp('category','row')): ?></ul><hr /></li><li class="row"><ul><?php endif; ?>
            <li class="product">
                <div class="frame">
					<a href="<?php shopp('product','link'); ?>"><?php shopp('product','thumbnail'); ?></a>
                    <h3><a href="<?php shopp('product','link'); ?>"><?php shopp('product','name'); ?></a></h3>
                    <?php shopp('product','summary'); ?>
            	</div>
            </li>
<?php
        endwhile; endif; // shopp('category','hasproducts')
	endwhile; // shopp('catalog','categories')
endif; // shopp('catalog','has-categories')
?>
	</ul></li>
</ul>

Uitleg van de code

Net als de inhoud van de category pagina worden de producten in een ul geplaatst. De weergave is de zogenaamde 'gridview' en het aantal producten dat op 1 regel wordt weergegeven is in te stellen in je Shopp instellingen (Shopp -> Instellingen -> Presentatie).

Als eerste moeten we er zeker van zijn dat de catalogus wel categorieën heeft, dit doen we met if (shopp('catalog','has-categories')). Daar staat eigenlijk hetzelfde als "als de catalogus categorieën heeft, dan ...". Daarna gaan we met behulp van de while-loop door alle categorieën heen. Alles wat in die while-loop staat wordt eenmaal per categorie uitgevoerd.

De if (shopp('category','hasproducts')) zorgt ervoor dat de code - binnen die if - alleen wordt uitgevoerd als de huidige categorie, in de loop, producten heeft. De while-loop die meteen daarna komt (while (shopp('category','products'))) zorgt ervoor dat we alle producten van de huidige categorie doorlopen. Alles in die while-loop wordt eenmaal per product (in de huidige categorie) doorgelopen.

Om de gridview te krijgen hebben we de if nodig die ervoor zorgt dat het aantal kolommen - zoals in je Shopp instellingen is ingevuld - juist is:

<?php if (shopp('category','row')): ?></ul><hr /></li><li class="row"><ul><?php endif; ?>

De code in die if wordt alleen uitgevoerd als we bij het aantal producten zijn die op 1 regel weergegeven moeten worden (standaard is overigens 3).

Het product

Per product geven we de thumbnail weer, inclusief link naar de productpagina. Dan de titel van het product (die ook gelinkt is) en daar onder de korte omschrijving.

Voorbeeld

Producten weergeven in catalog.php




Navigeer in deze serie


Laat een reactie achter




CommentLuv Enabled

:wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!:

UserOnline

4 bezoekers bezoekers
3 gasten1 bot