Zahlung und Lieferung in Artikel anzeigen

So wie verstehe habe…

[{block name="details_tabs_longdescription"}]
[{oxhasrights ident="SHOWLONGDESCRIPTION"}]
[{assign var="oLongdesc" value=$oDetailsProduct->getLongDescription()}]
[{if $oLongdesc->value}]
    [{capture append="tabs"}]<a class="nav-link[{if $blFirstTab}] active[{/if}]" href="#productDeliveryTime" data-toggle="tab">[{oxmultilang ident="shipping_and_charges"}]</a>[{/capture}]
    [{capture append="tabsContent"}]
     <div id="productDeliveryTime" class="tab-pane[{if $blFirstTab}] active[{/if}]" itemprop="shipping_and_charges">

Hier ruft das Zahlung und Lieferung Fenster, mit id="productDeliveryTime" ruft der Zahlung und Lieferung Kommando…

[{if $oDetailsProduct->oxarticles__oxmaxdeltime->value}]
                <a id="productExturl" class="js-external" href="[{$oDetailsProduct->oxarticles__oxmindeltime->value}]">
                [{if $oDetailsProduct->oxarticles__oxexturl->value}]
                    [{$oDetailsProduct->oxarticles__oxexturl->value}]
                [{else}]
                    [{$oDetailsProduct->oxarticles__oxexturl->value}]
                [{/if}]
                </a>
            [{/if}]
             [{oxcontent ident="oxdeliveryinfo"}]
        </div>

Hier sagt, wenn $oDetailsProduct->oxarticles__oxmaxdeltime->value , zeigen ihn…mit else wenn gibt es nicht…

es gibt kein [{else}] für [{if $oDetailsProduct->oxarticles__oxmaxdeltime->value}], das eine [{else}]ist für [{if $oDetailsProduct->oxarticles__oxexturl->value}].

So wie es da steht, wird der Inhalt im Tab nur dann angezeigt, wenn die Lieferzeit im Artikel konfiguriert ist.
Und dann hast du [{$oDetailsProduct->oxarticles__oxmindeltime->value}] als URL beim Link hinterlegt, wobei [{$oDetailsProduct->oxarticles__oxexturl->value}] als Text des Links angezeigt werden soll.

Kannst du bitte geben mir der Lösung code ?

Ohne solchen einfachsten Code zu verstehen, kannst du nicht mit OXID eShop arbeiten.
Ich halte immer noch das hier für eine bessere Lösung:

1 Like

Danke für deine Vorschlag aber als ich mehr als 1 Monat hier bin, und die halbe gemacht habe, ich möchte weiter in Oxid bleiben…

Dann solltest Du evtl. programmieren lernen oder über die Analyse des bestehenden Codes lernen, was er macht. Sonst wird es eine Odyssee…
Gruss
Marcel

gehen wir mal den original unveränderten Tab-Code durch und ich zeige dir Schritt für Schritt das, was du hättest tun sollen.

Das hier ist die original tabs.tpl Datei:


Dort finden wir Code für 4 Tabs:
  • Beschreibung - Zeilen 3-25
  • Attrbute - Zeilen 27-35
  • Preisalarm - Zeilen 37-47
  • Media - Zeilen 52-60

In jedem Tab-Code finden wir zwei fast identische HTML Elemente:

  • <a class="nav-link[{if $blFirstTab}] active[{/if}]" href="#media" data-toggle="tab">...</a>
  • <div id="media" class="tab-pane[{if $blFirstTab}] active[{/if}]">...</div>

Also müssen diese HTML Tags für die Tabs auf der Seite zuständig sein. Um ganz sicher zu sein, schauen wir in die Bootstrap Dokumentation und tatsächlich, das entspricht in etwa dem Tab-Markup.

Daraus folgt, dass der Code in dem <div id="xxx" class="tab-pane"> Container dem Inhalt des Tabs entspricht und die Überschrift ist im <a class="nav-link" href="#xxx">...</a>.

Jetzt könnte man den Code eines Tabs kopieren und den ursprünglichen Inhalt anpassen bzw. durch [{oxcontent ident="oxdeliveryinfo"}] ersetzen. Du hast den Tab mit der Beschreibung kopiert, also arbeiten wir damit weiter.
Ich hatte dir gesagt, du solltest jede einzelne Zeile des Codes verstehen.
Nehmen wir den Code in den Zeilen 3 bis 25:

Infos zum [{block ... }] Tag hast du in deinem allerersten Topic bekommen, du müsstest also wissen, was das ist.

Für [{oxhasrights}] hättest du im Forum nach “oxhasrights” suchen und das hier finden können.

Aus dem OXID Video-Kurs, den du ebenfalls im allerersten Topic bekommen hast, müsstest du wissen, dass du die Infos zu den Funktionen in Templates in der Smarty V2 Dokumentation nachschlagen kannst. Dass OXID Smarty nutzt, wurde aber auch in deinem allerersten Topic erwähnt.

Als nächstes kommt [{assign ... }], dazu findet man folgendes in der Doku:
https://www.smarty.net/docsv2/es/language.custom.functions.tpl#language.function.assign
Dann weiß man, dass hier “oxlongdescription” aus den Produktdaten geladen und in der Variable “$oLongdesc” hinterlegt wird. Da du den Tab der Beschreibung kopiert hast, muss es sich hierbei also um die Beschreibung des Produktes handeln.

Da du die Beschreibung nicht nochmal brauchst, könnte man jetzt alles, was mit oxlongdesc oder $oLongdesc zu tun hat, aus dem Code des neuen Tabs entfernen. Dann bleibt folgendes übrig:

[{capture append="tabs"}]<a class="nav-link[{if $blFirstTab}] active[{/if}]" href="#description" data-toggle="tab">[{oxmultilang ident="DESCRIPTION"}]</a>[{/capture}]
[{capture append="tabsContent"}]
    <div id="description" class="tab-pane[{if $blFirstTab}] active[{/if}]" itemprop="description">
        [{if $oDetailsProduct->oxarticles__oxexturl->value}]
            <a id="productExturl" class="js-external" href="[{$oDetailsProduct->oxarticles__oxexturl->value}]">
                [{if $oDetailsProduct->oxarticles__oxurldesc->value}]
                    [{$oDetailsProduct->oxarticles__oxurldesc->value}]
                [{else}]
                    [{$oDetailsProduct->oxarticles__oxexturl->value}]
                [{/if}]
           </a>
        [{/if}]
    </div>
[{/capture}]
[{assign var="blFirstTab" value=false}]

Was [{capture append...}] macht, wurde in dem Video-Lurs ebenfalls erklärt, du müsstest es also wissen.
Es bleibt nur noch das hier übrig:

[{if $oDetailsProduct->oxarticles__oxexturl->value}]
    <a id="productExturl" class="js-external" href="[{$oDetailsProduct->oxarticles__oxexturl->value}]">
        [{if $oDetailsProduct->oxarticles__oxurldesc->value}]
            [{$oDetailsProduct->oxarticles__oxurldesc->value}]
        [{else}]
            [{$oDetailsProduct->oxarticles__oxexturl->value}]
        [{/if}]
   </a>
[{/if}]

Was [{if ...}] allgemein macht, wird in der Dokumentation erklärt. In diesem Fall wird “oxexturl” geprüft. Wenn der Name nicht selbsterklärend ist, kann man in der Datenbank den Kommentar nachsehen:


Die Externe URL also.
Wenn die externe URL im Artikel vorhanden ist, wird ein HTML Link mit dieser externen URL im href-Parameter eingefügt.
Der verlinkte Text dabei wird durch den Code zwischen <a ...> und </a> gesteuert:

[{if $oDetailsProduct->oxarticles__oxurldesc->value}]
    [{$oDetailsProduct->oxarticles__oxurldesc->value}]
[{else}]
    [{$oDetailsProduct->oxarticles__oxexturl->value}]
[{/if}]

Dieser Teil dürfte nichts neues sein: wenn es oxurldesc gibt, dann wird oxurldesc als Text für den Link genommen, sonst oxexturl selbst.

Nach dem wir jetzt wissen, welcher Code was macht, dürfte es kein Problem mehr sein, den ungewollten Code zu entfernen oder durch gewünschte Variablen zu ersetzen.

Da wir den Code nichts jedes mal vorkauen können, musst du selbstständig solchen Code verstehen können.

3 Likes

Erste möchte mich dir bedanken für deinen bemühst!

Wie habe jetzt der code,

[{block name="details_tabs_longdescription"}]
[{oxhasrights ident="SHOWLONGDESCRIPTION"}]
    [{capture append="tabs"}]<a class="nav-link[{if $blFirstTab}] active[{/if}]" href="#productDeliveryTime" data-toggle="tab">[{oxmultilang ident="shipping_and_charges"}]</a>[{/capture}]
 
[{capture append="tabsContent"}]
<div id="productDeliveryTime" class="tab-pane[{if $blFirstTab}] active[{/if}]" itemprop="shipping_and_charges">
    [{if $oDetailsProduct->oxarticles__oxmindeltime->value}]
        <a id="productExturl" class="js-external" href="[{$oDetailsProduct->oxarticles__oxexturl->value}]">
             [{if $oDetailsProduct->oxarticles__oxurldesc->value}]
                [{$oDetailsProduct->oxarticles__oxurldesc->value}]
             [{else}]
                [{$oDetailsProduct->oxarticles__oxexturl->value}]
             [{/if}]
            </a>
          [{/if}]
        [{oxcontent ident="oxdeliveryinfo"}]
       </div>
      [{/capture}]
    [{assign var="blFirstTab" value=false}]
  [{/oxhasrights}]
[{/block}]

Jetzt versuche erklärt was neu von deiner Codes hinzufüge habe…

[{capture append="tabs"}]<a class="nav-link[{if $blFirstTab}] active[{/if}]" href="#productDeliveryTime" data-toggle="tab">[{oxmultilang ident="shipping_and_charges"}]</a>[{/capture}]

href = Wird der Seite geruft
#productDeliveryTime = Ist der id für Zahlung und Lieferung

<div id="productDeliveryTime" class="tab-pane[{if $blFirstTab}] active[{/if}]" itemprop="shipping_and_charges">

Der div der wird in der Seite gezeigt, gebe die id die Zahlung und Lieferung ruft, itemprop="shipping_and_charges", itemprop ist ein globales Attribut, der Attribut ist was in der cust_lang.php Dateien gegeben habe 'shipping_and_charges' => "Zahlung und Lieferung".

[{if $oDetailsProduct->oxarticles__oxmindeltime->value}]

Der bedingte Anweisung nested if prüft ob $oDetailsProduct->oxarticles__oxmindeltime->value ob dabei ist…mit $oDetailsProduct->oxarticles__oxmindeltime->value ruft der Seite Zahlung und Lieferung.

<a id="productExturl" class="js-external" href="[{$oDetailsProduct->oxarticles__oxexturl->value}]">

Mit a und href verlinke $oDetailsProduct->oxarticles__oxexturl->value mit der Seite $oDetailsProduct->oxarticles__oxmindeltime->value.

Da wir den Code nichts jedes mal vorkauen können, musst du selbstständig solchen Code verstehen können.

Das auf jeden fall…, nächste Mal vor ich etwas frage und mit code zu tun hat, versuche jeden Zeilen seine Bedeutung zu verstehen und wenn nicht verstehe, fragen hier…

Ich bedanke mich dir, ohne deinem hilft, ich wurde das nicht geschafft…

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.