Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Получение ссылки на статью


fjodor
 Поделиться

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

Ребят, всем привет! Есть такой вопросик. Мне необходимо на странице статьи вывести сслыки на следующие 3 статьи. В opencart я профан и написал такие костыли в контроллере article.php:

if (isset($this->request->get['article_id'])) {
            $id_item = $this->request->get['article_id'];

            if ($id_item == 135) {
                $data["first_art"] = $this->model_catalog_article->getArticle(1);
                $data["second_art"] = $this->model_catalog_article->getArticle(2);
                $data["third_art"] = $this->model_catalog_article->getArticle(3);
            } elseif ($id_item == 134) {
                $data["first_art"] = $this->model_catalog_article->getArticle($id_item + 1);
                $data["second_art"] = $this->model_catalog_article->getArticle(1);
                $data["third_art"] = $this->model_catalog_article->getArticle(2);
            } elseif ($id_item == 133) {
                $data["first_art"] = $this->model_catalog_article->getArticle($id_item + 1);
                $data["second_art"] = $this->model_catalog_article->getArticle($id_item + 2);
                $data["third_art"] = $this->model_catalog_article->getArticle(2);
            } else {
                $data["first_art"] = $this->model_catalog_article->getArticle($id_item + 1);
                $data["second_art"] = $this->model_catalog_article->getArticle($id_item + 2);
                $data["third_art"] = $this->model_catalog_article->getArticle($id_item + 3);
            }
        }

С горем пополам получил массивчик:

Array
(
    [article_id] => 3
    [image] => catalog/test/Foto11.jpg
    [date_added] => 2016-05-27
    [date_modified] => 2021-05-18
    [sort_order] => 3
    [status] => 1
    [viewed] => 0
    [language_id] => 2
    [name] => test
    [description] => <p><br></p>
    [meta_title] => test
    [meta_description] => test   

)
						

Всё бы ничего, но чёрт возьми нет ссылки на статью. Подскажите, пожалуйста, как получить seo-ссылку? И можно ли как-то оптимизировать эти костыли?

Изменено пользователем fjodor
Ссылка на комментарий
Поделиться на других сайтах


4 часа назад, Blade сказал:

а почему просто не вставить ссылку в статью при редактировании ?

Это динамически генерируемый блок, а не статика. 

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


Не совсем понятно откуда у Вас 

$this->model_catalog_article->getArticle()

Я могу путать, но мне казалось, что модель получения статьи находится в блоге:

$this->model_blog_article->getArticle()

Но, на самом деле, раз у Вас работает, значит реализовано либо шаблоном либо дополнением каким-то. Не суть.
По факту ссылку на статью можно вывести напрямую по article_id

/index.php?route=blog/article&article_id=123

В Вашем случае (судя по модели) возможно так:
 

/index.php?route=catalog/article&article_id=123

 

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

5 часов назад, nogocuHoBuk сказал:

/index.php?route=catalog/article&article_id=123

Спасибо за ответ! Я уже рассматривал такой вариант. И он действительно рабочий, но есть один нюанс.  Передо мной стоит задача вывести блок похожих статей на странице самой статьи. Дабы сделать перелинковку на смежные статьи. Естественно понятно, что ветерок дует со стороны сеошников. И их такой варик вряд ли вдохновит, ведь суть именно в том, чтобы вывести чпушные-урлы и скормить их поисковым роботам. Судя по тому, что никто не стремится отвечать из вариантов у меня остаётся только прямой запрос к базе. Жаль... Я думал в 21 веке, есть способы намного проще, а оказывается не во всех движках...

Изменено пользователем fjodor
Ссылка на комментарий
Поделиться на других сайтах


23 минуты назад, fjodor сказал:

ветерок дует со стороны сеошников

Дык там же урлреврайт уже работать будет. 
 

 

23 минуты назад, fjodor сказал:

прямой запрос к базе

Так Вы, опять же, если SEOURL не прописан ничего толком то и не получите. А если прописан то, опять же, никак, кроме прямого запроса к БД его не получить.
Так что да. Получаем article_id.
По нему тыкаемся к базе "со словами":
 

SELECT `keyword` FROM `oc_seo_url` WHERE `query` = 'article_id=123' AND `language_id` = '" . (int)$this->config->get('config_language_id') . "'



 

Изменено пользователем nogocuHoBuk
  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.