Antwort #4 am: 05. März 2023, 01:36:31
So knifflige Sachen reizen mich immer.
Hier ein Vorschlag:
Für den Warenkorb steht in der
order_details.html noch
$shipping_data.QUOTE.id
zur Verfügung, was jedoch bislang nirgends ausgegeben wird.
Es enthält jeweils den Namen des Versandmoduls.
Das könnte man in ein data-Attribute geben und dann alle die nicht in
$OBJECT->cheapest() ausgegeben werden mittels JS ausblenden.
Ein Beispiel für den Warenkorb:
In
/temnplates/YOUR_TEMPLATE/module/order_detals.html anstatt
{foreach name=aussen item=shipping_data from=$shipping_content}
<li class="otl_row3 cf">
das
{foreach name=aussen item=shipping_data from=$shipping_content}
<li class="otl_row3 cf" data-shipp-module="{$shipping_data.QUOTE.id}">
und in einer Hook-Datei in
/includes/application_bottom/ für Warenkorb und Checkout
<?phpif(basename($PHP_SELF, '.php') == 'shopping_cart') { if(!isset($shipping) || !is_object($shipping)) { $shipping = new shipping
; } $chpst = $shipping->cheapest(); $data_module = explode('_', $chpst['id'])[0];?><script>
$(function() {
let $desired_lis = $('.ord_total_list li.otl_row3');
$desired_lis.each(function() {
if($(this).data('shipp-module') != '
<?php echo $data_module; ?>') {
$(this).hide();
}
});
});
</script>
<?php} else if(basename($PHP_SELF, '.php') == 'checkout_shipping') { if(!isset($shipping_modules) || !is_object($shipping_modules)) { $shipping_modules = new shipping
; } $chpst = $shipping_modules->cheapest(); $data_module = $chpst['id'];?><script>
$(function() {
let $desired_lis = $('.resp-tabs-container').find('input[name="shipping"]');
$desired_lis.each(function() {
if($(this).val() != '
<?php echo $data_module; ?>') {
$(this).parent().parent('h2').hide();
}
});
});
</script>
<?php}?> Getestet und funktioniert.
Hab' aber bestimmt irgend etwas übersehen.
Gruß,
noRiddle