Автор Тема: Как вывести производителя в админке  (Прочитано 770 раз)

02 Июнь 2016, 14:16:00
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
PS 1.4.5.1

Есть в Административной панель "таблица товаров"
за их вывод отвечает файл  AdminTracking.php
В этом файле 2 раза повторяется строка
<td align="center">'.($prod['manufacturer_name'] != NULL ? stripslashes($prod['manufacturer_name']) : '--').'</td>которая должна выводить имя производителя,
но вместо имени показывает две черточки что то тут не доделано.

Какой код надо вписать, чтобы появилось имя
производителя ссылкой для вывода всех товаров производителя.

Следующая строка выводит наименование товара
ссылкой для перехода на этот товар:
<td><a href="index.php?tab=AdminCatalog&id_product='.$product->id.'&addproduct&token='.Tools::getAdminToken('AdminCatalog'.(int)(Tab::getIdFromClassName('AdminCatalog')).(int)($cookie->id_employee)).'">'.stripslashes($product->name).'</a></td>

Надо что то приблизительно такое:
<td align="center">'.($prod['manufacturer_name'] != NULL ? stripslashes($prod['manufacturer_name']) : '--').''.stripslashes($manufacturer->name).'</td>но эта команда не работает.
Не боги горшки обжигают, не зачем им такой хренью заниматься.
04 Июнь 2016, 12:29:28
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Не понял, никто с Админкой не возился?

На картинке под рубрикой Авторы должны появляться производители.
Не боги горшки обжигают, не зачем им такой хренью заниматься.
04 Июнь 2016, 13:44:46
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Со старой версией никто не возится, обновляют и проблем не знают.
04 Июнь 2016, 13:50:50
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Я бы с удовольствием, но модуля на котором построен
весь функционал сайта для новых версий до сих пор нет.

По этому приходится выкручиваться.
Не боги горшки обжигают, не зачем им такой хренью заниматься.
04 Июнь 2016, 15:02:08
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Вам сначало нужно удостовариться, что в объекте prod есть manufacturer_name.
Для этого сделать проверку
var_dump ($prod);
04 Июнь 2016, 22:58:00
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Добился интересного результата
Добавил строку:
$manufacturer = new Manufacturer((int)($prod['id_manufacturer']));Вместо:
<td>'.($prod['manufacturer_name'] != NULL ? stripslashes($prod['manufacturer_name']) : '--').'</td>Вставил:
<td><a href="index.php?tab=AdminManufacturers&id_manufacturer='.$manufacturer->id.'&viewmanufacturer&token='.Tools::getAdminToken('AdminManufacturers'.(int)(Tab::getIdFromClassName('AdminManufacturers')).(int)($cookie->id_employee)).'">'.stripslashes($manufacturer->name).'</a></td>
Получилось как на картинке:

Верхняя таблица заполнилась нормально, а нижняя
не хочет заполняться  хотя для них один общий код.

Но если посмотреть код страницы видно, что во
второй таблице не отображается manufacturer->id

<td><a href="index.php?tab=AdminManufacturers&amp;id_manufacturer=162&amp;viewmanufacturer&amp;token=4a17b7a5231d5b77edb912a69cc7dab6">Бареев Альберт </a></td>
<td><a href="index.php?tab=AdminManufacturers&amp;id_manufacturer=&amp;viewmanufacturer&amp;token=4a17b7a5231d5b77edb912a69cc7dab6"></a></td>
Не боги горшки обжигают, не зачем им такой хренью заниматься.
06 Июнь 2016, 10:12:40
Ответ #6
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Возможер что вторая таблица заполняется другим контороллером и в нем нет определения этой переменной.
Вам нужно найти этот контроллер и добавить точно такой-же код в этот файл
06 Июнь 2016, 13:54:08
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Все вроде просмотрел другого контроллера нет, просто почему то в первом случае $manufacturer->id отрабатывает а во втором нет.  PrestaShop™ 1.4.5.1:

public function displayProducts()
{
global $currentIndex, $cookie;

if (isset($this->_list['obj']))
{
$nbProducts = sizeof($this->_list['obj']);
echo '<h3>'.$this->_list['message'].' '.$nbProducts.' '.$this->l('found').'</h3>';
if (!$nbProducts)
return ;
$this->fieldsDisplay = (array(
'ID' => array('title' => $this->l('ID')),
'manufacturer' => array('title' => $this->l('Manufacturer')),
'name' => array('title' => $this->l('Name')),
'price' => array('title' => $this->l('Price')),
'tax' => array('title' => $this->l('Tax')),
'stock' => array('title' => $this->l('Stock')),
'weight' => array('title' => $this->l('Weight')),
'status' => array('title' => $this->l('Status')),
'action' => array('title' => $this->l('Actions'))
));
$currency = new Currency(Configuration::get('PS_CURRENCY_DEFAULT'));
echo '
<table class="table" cellpadding="0" cellspacing="0">
<tr>';
foreach ($this->fieldsDisplay AS $field)
echo '<th'.(isset($field['width']) ? 'style="width: '.$field['width'].'"' : '').'>'.$field['title'].'</th>';
echo '
</tr>';
foreach ($this->_list['obj'] AS $k => $prod)
{
$product = new Product((int)($prod['id_product']));
$product->name = $product->name[(int)($cookie->id_lang)];
$manufacturer = new Manufacturer((int)($prod['id_manufacturer']));
$product->product = $product->product[(int)($cookie->id_lang)];
$manufacturer->manufacturer = $manufacturer->manufacturer[(int)($cookie->id_lang)];
/*
                    //Вариант строки с установкой ссылки.
<td><a href="index.php?tab=AdminManufacturers&id_manufacturer='.$manufacturer->id.'&viewmanufacturer&token='.Tools::getAdminToken('AdminManufacturers'.(int)(Tab::getIdFromClassName('AdminManufacturers')).(int)($cookie->id_employee)).'">'.stripslashes($manufacturer->name).'</a></td>

                    //Стандартная строка файла
<td>'.($prod['manufacturer_name'] != NULL ? stripslashes($prod['manufacturer_name']) :'--').'</td>
*/
$taxrate = Tax::getProductTaxRate($product->id);
echo '
<tr>
<td>'.$product->id.'</td>

<td><a href="index.php?tab=AdminManufacturers&id_manufacturer='.$manufacturer->id.'&viewmanufacturer&token='.Tools::getAdminToken('AdminManufacturers'.(int)(Tab::getIdFromClassName('AdminManufacturers')).(int)($cookie->id_employee)).'">'.($prod['manufacturer_name'] != NULL ? stripslashes($prod['manufacturer_name']) :'--').' '.$manufacturer->name.'</a></td>

Вместо -- должно появляться имя производителя
Не боги горшки обжигают, не зачем им такой хренью заниматься.