elscept

[Решено] Вывод seo-url в списке товаров в админке

Рекомендуемые сообщения

elscept    1

Пришла в голову идея реализовать отображение ЧПУ (seo-url, keyword, url_alias) в списке товаров в админке, а то открывать каждый товар чтобы посмотреть его ЧПУ - это просто каменный век какой-то.

 

В файле admin/view/template/catalog/product_list.tpl добавил в ячейку с названием товара код

<br />
<span style="font-size:11px;color:#777;">
    <?php echo $product['keyword']; ?>
</span>

В файле admin/controller/catalog/product.php после

$this->data['products'][] = array(
    'product_id' => $result['product_id'],
    'name'       => $result['name'],

добавил

    'keyword'    => $result['url_alias'],

В файле admin/model/catalog/product.php после

$sql = "SELECT p.*, pd.*,  m.name as 'm_name' FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)";

добавил

$sql .= " LEFT JOIN " . DB_PREFIX . "url_alias ua ON (query = CONCAT('product_id=', p.product_id))";

Но ничего не получилось. В Opencart привязка ЧПУ к товарам выполняется через сопоставление поля product_id из таблицы product с полем query из таблицы url_alias, в котором данные хранятся не в виде цифры, а в виде строки вида "product_id=XX", а канкотенация в моем запросе, по всей видимости, не работает. Пол дня и почти всю ночь на это убил :ugeek:

Люди добрые, помогите написать правильный запрос, думаю, реализация ЧПУ в списке товаров ни для кого не будет лишней.

post-681976-0-64630500-1452909429_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
nikifalex    329

программист не должен использовать слово "по всей видимости" или "вроде бы". Программист должен использовать мозг по прямому назначению.

$sql = "SELECT p.*, pd.*,  m.name as 'm_name', ua.keyword FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)";
Изменено пользователем nikifalex

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
elscept    1

Спасибо за пинок и за исправление! Так сложилось, что пришлось воспользоваться еще и чужим  ;)

 

Итак, готовое решение.

В файле admin/view/template/catalog/product_list.tpl добавляем в ячейку с названием товара (или любую другую) код

<br />
<span style="font-size:11px;color:#777;">
    <?php echo $product['keyword']; ?>
</span>
В файле admin/controller/catalog/product.php после

$this->data['products'][] = array(
    'product_id' => $result['product_id'],
    'name'       => $result['name'],
добавляем

    'keyword'    => $result['keyword'],
В файле admin/model/catalog/product.php вместо

$sql = "SELECT p.*, pd.*,  m.name as 'm_name' FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)";
вставляем

$sql = "SELECT p.*, pd.*,  m.name as 'm_name', ua.keyword FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)";
$sql .= " LEFT JOIN " . DB_PREFIX . "url_alias ua ON (query = CONCAT('product_id=', p.product_id))";
Результат - очень удобно и можно визуально определять "шероховатые" ссылки наподобие трех последних :-)

2016-01-16_111921.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    925

Увы, здесь не нужны никакие SQL запросы

Нужен некий api для получения ЧПУ

 

можно на каждую ссылку делать запрос к api (очень затягивает по времени)

 

можно отсылать запрос на получение ЧПУ списка (один внешний запрос)

 

Можно сделать копию seo_url, seo_pro и внедрить их в админку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу