Jump to content

<Solved> Kleines problemchen mit der Product-list.tpl


Claudiocool

Recommended Posts

Hallo Leute, irgendwie will mein Denkapparat heute nicht so recht...

 

Ich habe ein ausverkauftes Produkt, welches aber dennoch bestellbar sein soll. Dooferweise wird es, sobald bestellbar, in der Product-List zwar mit orangem Hintergrund (label-.warning) angezeigt aber eben leider nicht mit "Out of stock"

 

Die Zeile mit den megamäßig verschachtelten if's sieht so aus:

{if $product.quantity <= 0}{if $product.allow_oosp}{if isset($product.available_later) && $product.available_later}{$product.available_later}{else}{l s='In Stock'}{/if}{else}{l s='Out of stock'}{/if}{else}{if isset($product.available_now) && $product.available_now}{$product.available_now}{else}{l s='In Stock'}{/if}{/if}

So, jetzt fehlt also quasi wohl eine Bedingung, oder?

Edited by Claudiocool (see edit history)
Link to comment
Share on other sites

Lieber Claudio,

 

Was für andere gilt auch hier.... ein Beispiel eines Produktes in Deinem Shop würde helfen.

So sähe der entwirrte Code aus - jedoch sehen wir da auch nicht die CSS Klasse für die Warnung:

{if $product.quantity <= 0}
    {if $product.allow_oosp}
        {if isset($product.available_later) && $product.available_later}
            {$product.available_later}
        {else}
            {l s='In Stock'}
        {/if}
    {else}
        {l s='Out of stock'}
    {/if}
{else}
    {if isset($product.available_now) && $product.available_now}
        {$product.available_now}
    {else}
        {l s='In Stock'}
    {/if}
{/if}
Edited by Scully (see edit history)
Link to comment
Share on other sites

Das Besipiel kann man sehen, wenn man im Shop auf RDKS-Sensoren-->Alligator geht....

 

Und vor dem ersten {else} sollte m.E. eine Ausgabe stehen, sonst tut er gar nix, baiu ich da was ein, bleibt die Seite weiss.... Die CSS-Klasse für die Warnung wird weiter oben aufgerufen, in dem Programmteil wird nur die Ausgabe generiert, aber der Fall, dass Bestand = 0 und Verkauf erlaubt ist, scheint hier nicht zu greifen, da kommt dann "In Stock", was ich aber nicht will :)

Edited by Claudiocool (see edit history)
Link to comment
Share on other sites

Ich denke mal, das ist die Originaldatei, zumindest in dem Bereich.....

<div class="button-container">
	<if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.customizable != 2 && !$PS_CATALOG_MODE}
		{if (!isset($product.customization_required) || !$product.customization_required) && ($product.allow_oosp || $product.quantity > 0)}
		{capture}add=1&id_product={$product.id_product|intval}{if isset($product.id_product_attribute) && $product.id_product_attribute}&ipa={$product.id_product_attribute|intval}{/if}{if isset($static_token)}&token={$static_token}{/if}{/capture}
		<a class="button ajax_add_to_cart_button btn btn-default" href="{$link->getPageLink('cart', true, NULL, $smarty.capture.default, false)|escape:'html':'UTF-8'}" rel="nofollow" title="{l s='Add to cart'}" data-id-product-attribute="{$product.id_product_attribute|intval}" data-id-product="{$product.id_product|intval}" data-minimal_quantity="{if isset($product.product_attribute_minimal_quantity) && $product.product_attribute_minimal_quantity >= 1}{$product.product_attribute_minimal_quantity|intval}{else}{$product.minimal_quantity|intval}{/if}">
		<span>{l s='Add to cart'}</span>
		</a>
		{else}
		<span class="button ajax_add_to_cart_button btn btn-default disabled">
		<span>{l s='Add to cart'}</span>
		</span>
		{/if}
	{/if}
	<a class="button lnk_view btn btn-default" href="{$product.link|escape:'html':'UTF-8'}" title="{l s='View'}">
	<span>{if (isset($product.customization_required) && $product.customization_required)}{l s='Customize'}{else}{l s='More'}{/if}</span>
		</a>
		</div>
		{if isset($product.color_list)}
			<div class="color-list-container">{$product.color_list}</div>
			{/if}
		<div class="product-flags">
	        	{if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))}
		        	{if isset($product.online_only) && $product.online_only}
				<span class="online_only">{l s='Online only'}</span>
				{/if}
			{/if}
			{if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}
			{elseif isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}
				<span class="discount">{l s='Reduced price!'}</span>
			{/if}
		</div>
			{if (!$PS_CATALOG_MODE && $PS_STOCK_MANAGEMENT && ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))}
			{if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}
				<span class="availability">
				{if ($product.allow_oosp || $product.quantity > 0)}
					<span class="{if $product.quantity <= 0 && isset($product.allow_oosp) && !$product.allow_oosp} label-danger{elseif $product.quantity <= 0} label-warning{else} label-success{/if}">
					{if $product.quantity <= 0}{if $product.allow_oosp}{if isset($product.available_later) && $product.available_later}{$product.available_later}{else}{l s='In Stock'}{/if}{else}{l s='Out of stock'}{/if}{else}{if isset($product.available_now) && $product.available_now}{$product.available_now}{else}{l s='In Stock'}{/if}{/if}
						</span>
					{elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}
						<span class="label-warning">
						{l s='Product available with different options'}
						</span>
					{else}
						<span class="label-danger">
						{l s='Out of stock'}
				</span>
					{/if}
					</span>
				{/if}
		{/if}
		</div>
				{if $page_name != 'index'}
				<div class="functional-buttons clearfix">
				{hook h='displayProductListFunctionalButtons' product=$product}
		        	{if isset($comparator_max_item) && $comparator_max_item}
			       	<div class="compare">
				<a class="add_to_compare" href="{$product.link|escape:'html':'UTF-8'}" data-id-product="{$product.id_product}">{l s='Add to Compare'}</a>
				</div>
		{/if}
		</div>
	{/if}
</div><!-- .product-container> -->
Link to comment
Share on other sites

Zeile 14 in meinem der Lesbarkeit halber formatierten Ausschnitt zeigt "in Stock", obschon in Zeile 9 die Abfrage wie folgt lautet: if $product.quantity <= 0

Das heisst zu Deutsch übersetzt: wenn A) die die Bestellbarkeit des Produktes trotz fehlendem Bestand gegeben ist UND B) kein Verfügbarkeitsdatum im Produkt angegeben, dann zeigt es "in Stock". Musst halt Text in Zeile 14 ändern. Oder ein Verfügbarkeitsdatum setzen.

                <span class="availability">
                {if ($product.allow_oosp || $product.quantity > 0)}
                    <span class="{if $product.quantity <= 0 && isset($product.allow_oosp) && !$product.allow_oosp}
                        label-danger
                {elseif $product.quantity <= 0}
                        label-warning
                {else}
                    label-success{/if}">
                {if $product.quantity <= 0}
                        {if $product.allow_oosp}
                            {if isset($product.available_later) && $product.available_later}
                                {$product.available_later}
                            {else}
                                {l s='In Stock'}
                        {/if}
                    {else}
                        {l s='Out of stock'}
                    {/if}
                {else}
                    {if isset($product.available_now) && $product.available_now}
                        {$product.available_now}
                    {else}
                        {l s='In Stock'}
                    {/if}
                {/if}
                        </span>
                    {elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}
                        <span class="label-warning">
                        {l s='Product available with different options'}
                        </span>
                    {else}
                        <span class="label-danger">
                        {l s='Out of stock'}
                </span>
Link to comment
Share on other sites

Scully, danke, du hast mir den passenden Denkanstoss gegeben, programmtechnisch konnte ich keinen Fehler finden, weil da keiner da ist...

 

Es ist nur so, dass da eine textvariable zu wenig da ist. Also hab ich die gesetzt und den passenden Text dazu in den Übersetzungen erstellt. jetzt gehts.

  • Like 1
Link to comment
Share on other sites

Es ist nur so, dass da eine textvariable zu wenig da ist. Also hab ich die gesetzt und den passenden Text dazu in den Übersetzungen erstellt. jetzt gehts.

 

 

So kann man das sicher auch auch sehen. Ich vermute, die Entwickler haben das mit Absicht so gemacht, ich verstehe aber Deinen Ansatz in der Denke schon.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...