Недавно я купил расширение для создания настраиваемых полей для моих продуктов. Это расширение отлично работает на моей странице продуктов, отображает всю информацию, которую я положил на admin. Но мне нужно также отображать эти настраиваемые поля на странице категории, поэтому я могу перечислить некоторые данные.Получить пользовательские поля в категории Страница
Я попытался скопировать код и поставить на категории (контроллер и View), но он возвращает пустой - не отображается ничего: никаких ошибок, никаких предупреждений .. и нет информации.
Расширение поставляется с файлом vqmod, в основном, с операциями в каталоге папки:
Изменения в каталоге: Продукт/Controller:
$this->data['text_download'] = $this->language->get('text_download');
if ($this->config->get('cpf_fields')) {
$fields = $this->config->get('cpf_fields');
} else {
$fields = array();
}
$field_data = array();
if (!empty($product_info['cpf'])) {
$cpf = unserialize($product_info['cpf']);
} else {
$cpf = array();
}
$this->load->model('catalog/option');
foreach ($fields as $field) {
$option = $this->model_catalog_option->getOption($field['option_id']);
if ($option) {
if ($option['type'] == 'select' || $option['type'] == 'radio') {
$values = array();
$option_values = $this->model_catalog_option->getOptionValues($field['option_id']);
foreach ($option_values as $option_value) {
$selected = (!empty($cpf[$field['option_id']])) ? $cpf[$field['option_id']] : 0;
$values[] = array(
'option_value_id' => $option_value['option_value_id'],
'name' => $option_value['name'],
'selected' => $selected
);
}
$field_data[] = array(
'name' => $option['name'],
'type' => $option['type'],
'status' => $field['status'],
'sort_order' => $field['sort_order'],
'values' => $values
);
} elseif ($option['type'] == 'checkbox') {
$values = array();
$option_values = $this->model_catalog_option->getOptionValues($field['option_id']);
foreach ($option_values as $option_value) {
$selected = (!empty($cpf[$field['option_id']]) && is_array($cpf[$field['option_id']]) && in_array($option_value['option_value_id'], $cpf[$field['option_id']])) ? $option_value['option_value_id'] : 0;
$values[] = array(
'option_value_id' => $option_value['option_value_id'],
'name' => $option_value['name'],
'selected' => $selected
);
}
$field_data[] = array(
'name' => $option['name'],
'type' => $option['type'],
'status' => $field['status'],
'sort_order' => $field['sort_order'],
'values' => $values
);
} else {
$value = (!empty($cpf[$field['option_id']])) ? $cpf[$field['option_id']] : '';;
$field_data[] = array(
'name' => $option['name'],
'type' => $option['type'],
'status' => $field['status'],
'sort_order' => $field['sort_order'],
'value' => $value
);
}
}
}
$sort_order = array();
foreach ($field_data as $key => $value) {
$sort_order[$key] = $value['sort_order'];
}
array_multisort($sort_order, SORT_ASC, $field_data);
$this->data['fields'] = array();
foreach ($field_data as $field) {
$this->data['fields'][] = $field;
}
Продукт Вид:
<?php foreach ($fields as $field) { ?>
<?php if ($field['status'] && (!empty($field['value']) || !empty($field['values']))) { ?>
<?php $selected = false; ?>
<?php if ($field['type'] == 'select' || $field['type'] == 'radio') { ?>
<?php foreach ($field['values'] as $value) { ?>
<?php if ($value['selected'] && !$selected) { ?>
<?php $selected = true; ?>
<span><?php echo $field['name']; ?></span>
<?php } ?>
<?php if ($value['selected'] == $value['option_value_id']) { ?>
<?php echo $value['name']; ?>
<?php } ?>
<?php } ?><?php if ($selected) { ?><br /><?php } ?>
<?php } elseif ($field['type'] == 'checkbox') { ?>
<?php $checkbox_value = ''; ?>
<?php foreach ($field['values'] as $value) { ?>
<?php if ($value['selected'] && !$selected) { ?>
<?php $selected = true; ?>
<span><?php echo $field['name']; ?></span>
<?php } ?>
<?php if ($value['selected'] == $value['option_value_id']) { ?>
<?php $checkbox_value .= $value['name'] . ', '; ?>
<?php } ?>
<?php } ?>
<?php echo substr($checkbox_value, 0, -2); ?><?php if ($selected) { ?><br /><?php } ?>
<?php } elseif ($field['type'] == 'file') { ?>
<span><?php echo $field['name']; ?></span>
<a href="index.php?route=product/product/download&file=<?php echo $field['value']; ?>"><?php echo $text_download; ?></a><br />
<?php } else { ?>
<span><?php echo $field['name']; ?></span>
<?php echo $field['value']; ?><br />
<?php } ?>
<?php } ?>
<?php } ?>
Модель продукта только:
'cpf' => $query->row['cpf']
Однако в ADMIN модели продукта следующий код вводится:
if (isset($data['cpf'])) {
foreach ($data['cpf'] as $language_id => $cpf) {
$cpf = serialize($cpf);
$this->db->query("UPDATE " . DB_PREFIX . "product_description SET cpf = '" . $this->db->escape($cpf) . "' WHERE product_id = '" . (int)$product_id . "' AND language_id = '" . (int)$language_id . "'");
}
} else {
$this->db->query("UPDATE " . DB_PREFIX . "product_description SET cpf = '' WHERE product_id = '" . (int)$product_id . "'");
}
Мой вопрос, как я могу получить эти же данные и отобразить его в другой точке зрения, как категории или поиск, или производитель?
Большое спасибо заранее.
Привет @shadyyx благодарю вас за ответ. Я думаю, мне не повезло, потому что единственный код, введенный в модель каталога, - это простая строка, которую я предоставил. Однако я редактировал вопрос, добавляя Admin/Model. Это единственный код модели *, который я нашел в файле vqmod. Я видел, что расширение использует OPTIONS для добавления этих настраиваемых полей, и я предполагаю, что он не использует другую таблицу :) – Carol