
Доброго дня, шановні читачі, недавно зіштовхнувся з такою частою проблемою, як "відображення списку оплат та доставок на певних сторінках вітрини".
Так як список доставок, можна отримати, маючи дані "країни та області", та список оплат вже потрібно витягувати, маючи загальну суму ($total), без котрої не можна отримати всі дані.
Якщо змоделювати ситуацію по типу "виводити список доставок та оплат на сторінці товару", то можна за загальну суму $total взяти ціну самого товару, а дані краіни та області брати з налаштувань по замовчуванню:
тепер, щоб отримати список даних нам потрібно визначити, як саме ми це робитимемо, зазвичай, я роблю це через окремий метод, по типу
працюємо з контроллером: catalog\controller\product\product.php
знаходимо нейтральний сектор в коді та додаємо семантичний коментар по типу: //Здесь был Вася //SOF shipping methods
далі, нам потрібно створити массив, куди додамо дані по замовчуванню, для отримання списку потрібних доставок:
тепер важливим кроком буде підвантаження моделі з розширеннями, для отримання встановлених доставок:
ну і сама логіка отримання:
наприкінці рекомендую додати аналогічний семантичний коментар, щоб інший розробник міг розуміти, що блок по доставкам завершено, по типу: //EOF shipping methods
ну і в фіналі, в самому tpl\twig файлі нам потрібно тільки перебрати та вивести дані массиву 'shipping_methods', тому переходимо в catalog\view\theme\YOU_THEME\template\product\product.twig, знаходимо потрібний сектор в коді, та додаємо наступний код:
де {{ key }} - код доставки, {{ shipping.cost }} - вартість, ну і {{ shipping.title }} - назва способу доставки
Так як список доставок, можна отримати, маючи дані "країни та області", та список оплат вже потрібно витягувати, маючи загальну суму ($total), без котрої не можна отримати всі дані.
Якщо змоделювати ситуацію по типу "виводити список доставок та оплат на сторінці товару", то можна за загальну суму $total взяти ціну самого товару, а дані краіни та області брати з налаштувань по замовчуванню:
PHP:
$default_country_id = $this->config->get('config_country_id');
$default_zone_id = $this->config->get('config_zone_id');
getShippingMethodsByDefault
прямо в контроллері потрібної сторінки, але то довше розписувати, та й там зі своїми шаблонами підвантаження, я спробую описати загальний алгоритм, а майстер зможе це вже оформити як слід... отже:працюємо з контроллером: catalog\controller\product\product.php
знаходимо нейтральний сектор в коді та додаємо семантичний коментар по типу: //Здесь был Вася //SOF shipping methods
далі, нам потрібно створити массив, куди додамо дані по замовчуванню, для отримання списку потрібних доставок:
PHP:
$address = array();
$address['country_id'] = $this->config->get('config_country_id');
$address['zone_id'] = $this->config->get('config_zone_id');
PHP:
$this->load->model('setting/extension');
PHP:
$data['shipping_methods'] = array();
// оголошуєм массив, в котрий помістимо наш список доставок
if ($address) {
$method_data = array();
$results = $this->model_setting_extension->getExtensions('shipping');
// в змінну $results отримуємо список "встановлених" доставок
foreach ($results as $result) {
if ($this->config->get('shipping_' . $result['code'] . '_status')) {
// перевіряємо, чи включений "статус" доставки
$this->load->model('extension/shipping/' . $result['code']);
$quote = $this->{'model_extension_shipping_' . $result['code']}->getQuote($address);
// отримаємо детальну інформацію по кожній із доставок
if ($quote) {
if (isset($quote['quote'])) {
foreach ($quote['quote'] as $code => $full_method) {
$method_data[$full_method['code']] = array(
'title' => $full_method['title'],
'cost' => $full_method['cost']
);
}
}
}
}
}
// заносимо весь список (код, як ключ, назва методу доставки та вартість) в массив 'shipping_methods'
$data['shipping_methods'] = $method_data;
}
ну і в фіналі, в самому tpl\twig файлі нам потрібно тільки перебрати та вивести дані массиву 'shipping_methods', тому переходимо в catalog\view\theme\YOU_THEME\template\product\product.twig, знаходимо потрібний сектор в коді, та додаємо наступний код:
HTML:
{% if shipping_methods %}
<div id="input-shipping-method" class="form-control">';
{% for key, shipping in shipping_methods %}
<span id="{{ key }}" data-summ="{{ shipping.cost }}">{{ shipping.title }}</span>
{% endfor %}
</div>
{% endif %}