Добавляем новую страницу (схему) в OpenCart

 

Иногда возникает потребность в создание новой страницы или схемы под OpenCart, под страницей я буду  понимать новую связку файла представления (.tpl) и контроллера (php).

file_web

Как пример мы хотим сделать страницу, где будет выводиться все последние поступления. Это будет пустая страница типа home.tpl, в админпанели OpenCart мы установим стандартный модуль «Последние» и добавим его на вывод в наш новую схему.

 

Итак создаем новую страницу или схему в CMS OpenCart

 

Первым делом создадим директорию latest по адресу catalog\controller. Заходим в нее и создаем php файл контроллера, назовем его также, т.е. latest.php

Внутри контроллера пропишем

Это стандартный контроллер для шаблона home.tpl, изменили мы только название класса с «ControllerCommonHome» на «ControllerLatestLatest» и строки с
«/template/common/home.tpl» на «/template/latest/latest.tpl».

Для страницы где выводиться последние поступления это будет достаточно, по сути мы создаем клон шаблона common/home.tpl.

Далее создаем файл представления для нашей страницы, переходим в catalog/view/theme/имя_вашей_темы/template

и создаем одноименную директорию, как и в контроллере, т.е. «latest». Переходим в нее и создаем файл шаблон latest.tpl. Наполняем его содержимым, т.к. мы создаем клон home.tpl, то наполним его идентичным содержимым, т.е.

Переходим в панель администратора, далее в Система->Дизайн->Схема. Добавляем новую схему с именем «Поступления» и указываем  путь к контроллеру нашей новой страницы, т.е. к «latest/latest».

Если мы хотим чтобы на нашей страницы выводились новые поступления, мы должны разрешить модулю «Последние» отображаться на страницы «Поступления». Для этого заходим в Дополнения->Модули и напротив модуля «Последние» нажимаем изменить, после чего выбираем схему «Поступления», положение вверх страницы и статус «Включено».

Проверяем, вводим в строке браузера http://s-engineer.ru/index.php?route=latest/latest (s-engineer.ru — в случае локального расположенния OpenCart, иначе доменное имя вашего сайта), должно все открыться без ошибок.

Теперь добавим переменную с ссылкой на наш шаблон. Для этого открываем контролер шаблона в котором хотим что бы была видна данная ссылка и добавляем следующие строки

Например, это может быть контроллер представления header.tpl, т.е. catalog\controller\common\header.php

Теперь в файле представления header.tpl будет видна переменная $latest с ссылкой, мы можем ее использовать  таким образом

При нажатие на данную ссылку, мы перейдем на нашу новую схему или страницу.




Буду признателен если вы поделитесь данным постом

Комментарии
  1. Funny пишет:

    Отличная статья. коротко и о главном. Спасибо!!!

  2. Андрей пишет:

    10 баллов из 5! Огромное спасибо автору статьи!

  3. admin пишет:

    Всегда спасибо)

  4. Сергей пишет:

    Шикарно! Спасибо большое, очень подробно.

  5. Feofan пишет:

    может пригодится чуваки замутили, платные модули, бесплатно ссылка

  6. kabasik пишет:

    Большое спасибо, толк!

  7. Максим пишет:

    Да, страница получается но выводится с:
    Запрашиваемая страница не найдена.

    Можно только модули к ней прикрутить, а сообщение это все равно выдается.

  8. admin пишет:

    Если «страница не найдена», значит вы сделали что то не так. В качестве результат вы должны получить новую страница без контента (т.е. с шапкой с колонками и с подвалом)

  9. Олеся пишет:

    с версией 1.5.5.1.1 такая штука пройдет?

  10. admin пишет:

    Должно, принцип от версий не меняется. Если что то не получиться, напишите, посмотрим

  11. Олеся пишет:

    Все получилось, спасибо. Добавила не в header, а в футер ссылку. Такой вопрос как поменять ссылку http://мой-домен/index.php?route=latest/latest на ЧПУ типа http://мой-домен/novinki?

  12. admin пишет:

    Пожалуйста Олеся.

    Честно говоря, не пробывал ЧПУ на OpenCart.

    Но, насколько я знаю в OpenCart есть встроенная подержка ЧПУ (система -> настройки -> сервер). В рунете пишут что данная реализация с проблемами, появляется дублирование страниц (т.е. два урла на одну страницу, пример: мой_домен/карандаши/белый_карандаш и мой_домен/белый_карандаш), что для поисковиков не есть хорошо.

    Думаю копать надо к модулям … поищите модуль реализующий ЧПУ, на примете могу сказать «SeoPro».

  13. Олеся пишет:

    ЧПУ для всех страниц прописаны.
    Имеется в виду для той страницы, которая создается в этой статье.

  14. admin пишет:

    Хм…
    для ЧПУ вы используете модуль SEO Pro?

  15. Олеся пишет:

    Да. Стоит модуль SEO Pro. ЧПУ прописывала для каждой страницы через админ панель. А как быть с этой страницей, в админке ведь ее нет, как быть?

  16. admin пишет:

    Я проработаю этот вопрос, установлю SEO Pro и посмотрю что можно сделать.

  17. Олеся пишет:

    В любом случае спасибо за статьи. Такой полной информации мало в сети.

  18. admin пишет:

    Олеся, зайдите в phpmyadmin и сделайте следующий запрос:

    INSERT INTO oc_url_alias (query, keyword) VALUES (‘latest/latest’, ‘novinki’);

    Модуль «SEO Pro» хранит свои настройки в базе данных, а если быть точнее то в таблице url_alias. Т.к. мы нашу новую страницу в админ. панели не видим, то мы добавим настройки напрямую в таблицу. Это должно сработать.

    novinki — ЧПУ
    lastest/latest — адрес на который привязываем выше указанный ЧПУ

  19. Олеся пишет:

    Выдает #1054 — Unknown column ‘‘latest’ in ‘field list’

  20. admin пишет:

    Странно…
    Такого рода ошибки возникают только при использование SELECT и UPDATE.
    Олеся, вы уверены что вы вели
    INSERT INTO oc_url_alias (query, keyword) VALUES (‘latest/latest’, ‘novinki’);

    Кстати, проверьте как у вас называется таблица url_alias, у меня допустим таблица с префиксом «oc», т.е. «oc_url_alias».

  21. Олеся пишет:

    Получилось. Запрос скопировала от сюда — выдавало #1054 – Unknown column ‘‘latest’ in ‘field list’, потом заново перепечатала запрос в блокноте и вставила — результат добавлена 1 строка. Видимо ошибка была в коде — недопустимый символ.
    Еще раз спасибо. Отняла у вас столько времени.

  22. admin пишет:

    Ошибка скорее всего была в кавычках, забыл вам сказать, при копирование напрямую с сайта это может возникать.

    Давайте под итожим для будущих посетителей, теперь при запросе «доменное_имя_сайта/novinki» открывается наша новая схема latest.tpl?

    Всегда пожалуйста, Олеся я всегда вас рад видеть на моем блоге «записки инженера».

  23. Олеся пишет:

    Да. Теперь страница имеет ЧПУ “доменное_имя_сайта/novinki”. Еще раз спасибо. Буду применять ваши знания.

  24. alexey пишет:

    здравствуйте.
    шикарные у вас статьи …конечно я мало что понимаю(в опенкарте совсем зеленый), но за 3 дня поисков в интернете ничего более глубокого не нашел. хотя и это не совсем то, что я ищу.
    не подскажете как вывести на главной все товары с пагинацией? но не через стандартные модули.
    отличные уроки по opencart*у, жаль что мало.
    спасибо.
    п.с. капча не работает: семь*…=21 …ввожу 3 – выдает ошибку

  25. admin пишет:

    Спасибо за комментарий.
    Про OpenCart в рунете сам ничего найти не мог) информации очень мало, поэтому решил написать сам.
    Спасибо, что сообщили про капчу. Оставил только сложение и вычитание, вроде все работает.

    Под пагинацией вы имеете ввиду нумерацию страниц? Если мне память не изменяет, то она вроде есть по умолчанию, количество товаров на странице (и соотвествено количество страниц) настраивается в панели администратора.

  26. alexey пишет:

    да, под пагинацией понимаю нумерацию страниц. если это есть, то подскажите где найти в админке? ато кроме как через модули акций, последних и рекомендованных ничего не нашел, а они не подходят

    спасибо за скорый ответ — аж как-то не привычно)

  27. admin пишет:

    Всегда пожалуйста, но у меня к сожалению на текущий момент нет развернутого OpenCart-а под рукой, чтобы я мог посмотреть и сориентировать вас. Я постараюсь завтра или послезавтра посмотреть и ответить вам.

  28. alexey пишет:

    ок, спасибо

  29. admin пишет:

    Здравствуйте Алексей.

    Установить кол-во товаров, при превышение которых появляется пагинация (нумерация страниц) можно в админ панели, по адресу:
    Система -> Настройки, далее жмете “Изменить”, в появившейся окне выбираете вкладку “Опции” и в поле “Витрина” указываете кол-во товаров.

    По поводу, вывода товара. Вы можете установить, что-бы по умолчанию товар всегда выводился сеткой. Для этого надо открыть файл представления “catalog\view\theme\default\template\product\category.tpl” и в самом конце (примерно на ~194 строке), вам нужно закомментировать:

    view = $.cookie(‘display’);

    if (view) {
    display(view);
    } else {
    display(‘list’);
    }

    после чего добавьте, следующею строку:

    display(‘grid’);

    Все, теперь товар по-умолчанию всегда будет выводиться сеткой.

  30. alexey пишет:

    спасибо конечно, но опять не то. меня интересовало как на главной вывести все товара магазина не через «рекомендуемые» или «последнее».
    после длительных и безрезультатных поисков было принято решение плюнуть на все и сделать по другому.
    спасибо за участие)

  31. admin пишет:

    Спасибо за комментарий. Извиняюсь, я наверное не понял Вас)

  32. Дмитрий пишет:

    Прошу прощения за мелочность, но в самом конце статьи тег указан со свойствами тега . У тега не бывает alt=»» width=»» height=»»
    И нет закрывающего тега
    .
    Мелочь, а кто-то может и не заметить

  33. admin пишет:

    Дмитрий, спасибо за замечание, вы кому то спасли бессонную ночь).

    Подправил.

  34. Игорь пишет:

    Реально полезная статья, до этого 2 смотри ничего понятно не было

  35. Арсен пишет:

    Здраствуйте схему я создал подключил прописал
    при добавлении модуля категории и прочего работает отображаеться а вот если в схему добавть код то он не отображаеться почему ?

  36. admin пишет:

    Добрый день Арсен, ошибки есть какие нибудь?

    Если я скажу: «что дело, скорее всего в коде, которым вы наполняете схему», то это проблему вам не решит. Надо смотреть конкретику.

  37. netang пишет:

    Пока копался вручную в опенкарте, разобрался как он работает. Хорошая cms, понять код не составляит труда, если человек знаком c MVC, чего не скажешь о битриксе. Отправлю эту страницу в закладки, чтобы подглядывать, если что-то забуду, спасибо!

  38. admin пишет:

    Спасибо за комментарий!

    Мне очень приятно осознавать, что мои посты кому то приносят пользу.

    Да, 1С-Битрикс придерживается идеологии MVC скажем «не так сильно» как OpenCart, но изучать её тоже можно.
    Для ознакомления, рекомендую пост Обзор 1С-Битрикс, принцип работы

  39. netang пишет:

    Я немного знаком с битриксом, в нём тоже приходилось копаться, но сделать что-то в опенкарте для меня намного быстрее чем в битриксе. Спасибо за ссылку) Может пригодится.

  40. admin пишет:

    Всегда пожалуйста.

    В сентября начну выкладывать статьи о микроконтроллерах и интерфейсах. Если вас интересует данные «железные» темы, всегда рад вас здесь видеть…

  41. netang пишет:

    //Если вас интересует данные “железные” темы, всегда рад вас здесь видеть…
    Я бы с радостью, очень интересует это направление, спасибо, но возможно у меня просто не будет времени, диплом, госы, вот что меня ждёт очень скоро 🙂

  42. admin пишет:

    Понимаю)

    Удачной сдачи Государственных экзаменов и защиты диплома!

  43. netang пишет:

    Спасибо!)

  44. Alex Spacon пишет:

    Низкий поклон автору! 2 дня искал что-то подобное, а оказалось как два байта об асфальт! Надо было замутить библиотеку, т.е. статьи, но отдельной страницей. тут всё просто, делаем новую страницу и лепим на неё модуль Новости. Вуа-ля! СПАСИБО!!!
    Только есть маленький нюанс, хотелось бы узнать как сделать в 100% похожим дизайн на все страницы? А то немного новая страничка скривилась, сместилась чуток влево. Может сам что накосячил, может где-то в стилях или других кодах уже раньше покопался…
    Я уже полностью код из файла home.tpl в latest.tpl один к одному скопировал. Что еще отвечает за прорисовку?

  45. Alex Spacon пишет:

    Пишу вдогонку. Тысяча извинений, проблема не в вашем коде. Просто страница Библиотека открывается как и положено по аналогии ваших ссылок (я заменил на своё) …biblioteka/biblioteka, а вот потом при кликах открываются страницы от модуля Новости, например http://www.fentezi43.ru/index.php?route=information/news&news_id=1 тут-то и развал! при возврате на Все новости переход не на …biblioteka/biblioteka, а на http://www.fentezi43.ru/index.php?route=information/news
    Значит тут собака порылась, именно в новостном модуле.
    Еще раз СПАСИБО за статью!

  46. admin пишет:

    Спасибо вам Alex, за то что читаете мои посты =)

  47. Юрий пишет:

    Добрый день.
    Прошу прощения, а как добавить мета-теги description и keywords в новосозданную страницу? Я имею ввиду description отличный от главной страницы.
    Спасибо

  48. admin пишет:

    Юрий здравствуйте. Вы можете управлять мета-тегами description и keywords через контроллер вашей новой страницы. Откройте контроллер (для нашего примера «catalog\controller\latest\latest.php»), найдите строки :

    $this->data[‘description’] = $this->document->getDescription();
    $this->data[‘keywords’] = $this->document->getKeywords();

    присвойте данным переменным ваши значения, например

    $this->data[‘description’] = «Ваше описание для данной страницы»;
    $this->data[‘keywords’] = «Ваши ключи для вашей страницы»;

  49. Юрий пишет:

    Добрый день!

    Давно я таких легких и подробных статей не видел. Всё разжевано и по полочкам. ОГРОМНОЕ ВАМ СПАСИБО!

    Есть не большой вопрос.

    Как можно сделать перелистывание страниц на информационных страницах? Например как в продукции. Если товаров больше 10, то следующая страница и т.д. А то создал пустую страницу, загрузил туда фотки, и страница получилась очень длинной. Какую часть кода, можно перенести из продукции, чтобы на информационных страницах, тоже работал ограничитель длинны страницы?

    Заранее благодарен.

  50. admin пишет:

    Добрый вечер Юрий, спасибо что читаете мои статьи.

    Я посмотрю как решить эту проблем, если она окажется технически не сложна, постараюсь в понедельник (1 декабря) дать рекомендацию.
    Сейчас с набегу не скажу) что да как

  51. admin пишет:

    Доброе утро Юрий, я посмотрел, вашу задачу сразу не решить. Я могу вам предложить свои услуги по внедрению «пагинатора» (перелистывание страниц) на страницу информация, если заинтересуетесь пишите комментарий и я отвечу по электронной почте.

  52. Артем пишет:

    Здравствуйте. Внимательно изучил эту статью, но так и не смог решить свой вопрос. Мне необходимо создать новый макет/схему на основе product.tpl. Задача состоит в том, чтобы в карточке товара выбирать дизайн product_new.tpl и отображение товара происходило по данным нового макета.
    Беда в том, что внесенные изменения в новый макет, после назначения его какому-то продукту не отображаются…

  53. admin пишет:

    Добрый день Артем!

    А почему бы просто не подправить шаблон «product.tpl» под ваш новый макет? И не создавать новый.

  54. Артем пишет:

    Дело в том, что для разных товаров должна быть разная схема вывода. И стандартный “product.tpl” уже используется…

  55. Ирина пишет:

    Добрый день!

    Огромное спасибо! Все просто и легко оказывается) Не могла вывести все категории на одной странице с созданием пункта меню. А это оказывается просто) Спасибо!

  56. admin пишет:

    Всегда спасибо Ирина, заходите еще =)

  57. Павел пишет:

    $this->data[‘description’] = $this->document->getDescription();
    $this->data[‘keywords’] = $this->document->getKeywords();

  58. Павел пишет:

    Но у вас в “catalog\controller\latest\latest.php” нет
    $this->data[‘description’] = $this->document->getDescription();
    $this->data[‘keywords’] = $this->document->getKeywords();
    Что тогда делать?

  59. Александр пишет:

    Я хочу вывести акционные товары отдельной страницей. для этого я создал директорию special по адресу catalogcontroller, в ней и создал php файл контроллера- special.php
    document->setTitle($this->config->get(‘config_title’));
    $this->document->setDescription($this->config->get(‘config_meta_description’));
    $this->data[‘heading_title’] = $this->config->get(‘config_title’);
    if (file_exists(DIR_TEMPLATE . $this->config->get(‘config_template’) . ‘/template/special/special.tpl’)) {
    $this->template = $this->config->get(‘config_template’) . ‘/template/special/special.tpl’;
    $this->data[‘template’] = $this->config->get(‘config_template’);
    } else {
    $this->template = ‘default/template/special/special.tpl’;
    }

    $this->children = array(
    ‘common/column_left’,
    ‘common/column_right’,
    ‘common/content_top’,
    ‘common/content_bottom’,
    ‘common/footer’,
    ‘common/header’
    );
    $this->response->setOutput($this->render());
    }
    }
    ?>

    Далее создал файл представления для страницы catalog/view/theme/shadow/template и создал директорию, как и в контроллере, т.е. «special». в ней создал файл special.tpl

    в панели администратора, Система->Дизайн->Схема добавил новую схему с именем «Скидки» и указал путь т.е. к «special/special». http://sbo@@@av.ru/с…ial/special.php

    По идее для вывода на новой странице новых акций, нужно разрешить модулю «Акции» отображаться на странице «Скидки». Для этого в Дополнения->Модули напротив модуля «Акции» изменяем и выбираем схему «Скидки».

    Я хотел чтобы на новую страницу акционных товаров выходить можно было щелкнув на картинку. для этого я вставил в header.tpl ссылку на http://sbo@@@av.ru/i…special/special картинкой Skidki4.png

    При нажатие на данную картинку переходим на новую страницу.

    НО в ней нет акционных товаров. Подскажите уважаемые гуру что не так? sb@@@rav.ru

  60. admin пишет:

    Добрый день Александр!

    Трудно ответить, в чем загвоздка.
    Александр попробуйте выбрать для данного модуля уже «стандартную» схему, посмотрите работает ли он вообще.

  61. Александр пишет:

    стандартная схема работает http://sb@@@av.ru/index.php?route=product/special

  62. admin пишет:

    Хм… удаленно так проблему не решить.

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

  63. Людмила пишет:

    Здравствуйте, у вас такие хорошие уроки! Может сможете подсказать, как добавить вывод последних новостей из блога в футере? Т к , стандартными средствами их можно расположить только в теле контента

  64. admin пишет:

    Добрый день Людмила!

    Я посмотрел, для того что-бы добавить новую позицию для модуля, нужно отредактировать контроллер footer.php и footer.tpl. Редактировать кода не мало и я пока такие вещи делать не пробовал, поэтому советовать не буду, что бы не вводить в заблуждение.
    В будущем обязательно напишу статью по данному вопросу!

  65. Сергей пишет:

    Доброго дня. Спасибо еще раз огромное за статьи. у меня opencart 2.0.3.1 (последняя версия) сделал все как сказали) но вот в последнем этапе не появляется переменная с новой страницей в header.tpl. а так все работает и страницу открывает. то есть не получается в головной странцие вывести на нее ссылку. подскажите в чем может быть проблема. заранее спасибо.

  66. admin пишет:

    Добрый день Сергей!

    Возможно в данной свежей версии, разработчики сделали какие-то изменения и объявляют переменную ссылку

    $this->data[‘latest’] = $this->url->link(‘latest/latest’, », ‘SSL’);

    другим образом.
    Посмотрите как дело обстоит с другими переменными ссылками на другие страницы в вашей версии… в header.php должны быть обязательно ссылки на другие схемы.

  67. Сергей пишет:

    Спасибо за ответ. скажите пожалуйста вновь создаваемая катеригория родительская товаров, где располагается ее html код. создал категорию, а внизу выходит кнопка, которая мне не нужна с текстом желаю удалить ее, но никак не могу на код выйти где он находится в браузере путь пишет: «http://ocstore/index.php?route=product/category&path=71» никак это path=71 не могу найте. Спасибо заранее. Opencart стоит 2.0.3.1 напомню.

  68. admin пишет:

    Ссылка

    http://оcstоre/index.php?route=product/category&path=71

    означает, что необходимо выполнить файл контроллера product/category (файл category.php) и ему передать параметр path с значением 71. Если вы откроете контроллер product/category (файл category.php), то в коде мы найдет фрагмент

    $this->request->get[‘path’]

    который как раз принимает значений данного параметр и присваивает какой-то переменной.

  69. Светлана пишет:

    Здравствуйте!
    Помогите решить задачу. Мне нужно, чтобы для определенной категории применялся макет, отличный от дефолтного, т.е. другой файл шаблона .tpl. Сделала все по Вашей инструкции, только клонировала не home, а product/category. В header.php переменную прописала. В новый .tpl внесла изменения, но они не отображаются на странице нужной категории, там все как и было, в адресной строке http://имя-домена.рф/index.php?route=product/category&path=66. А если в браузере напрямую ввести маршрут, страница отображается правильно, шапка, подвал, даже модули показывает, но пишет «Категория не найдена». OpenCart последней версии.
    Спасибо)

  70. admin пишет:

    Добрый день Светлана!

    Интересная задача, с таким дело пока еще не имел.

    Попробуйте в панели администратора зайти в категории, далее дизайн и выбрать вашу схему (который вы создали). Если не получится, то придется поколдовать с контроллером (т.е. с header.php файлом),
    нужно добавить условие которое проверяет что за текущая категория, далее если для неё нужно вывести другой шаблон, прописываем

    $this->template = $this->config->get(‘config_template’) . ‘/template/product/ваш_новый_шаблон.tpl’;

    если нет, то

    $this->template = $this->config->get(‘config_template’) . ‘/template/product/category.tpl’;

    Если нужна помощь, мы можем договориться, я могу отработать данный прием у себя и вам уже выдать готовую пошаговую инструкцию.

  71. Светлана пишет:

    Здравствуйте! Спасибо за ответ)
    Первый способ сразу попробовала, не работает.
    Насчет контроллера — почему header.php, а не category.php? Ваша мысль понятна, но сама реализовать не смогу, только если с Вашей помощью). Можно узнать, каковы условия Вашей помощи?
    Еще такой момент — OpenCart последней версии сам делает ЧПУ для страниц, без дополнительных модулей. У страниц с новым шаблоном также должны быть ЧПУ, введенные в админке для данной категории.
    Вообще мне нужна возможность делать разные «превьюшки» товаров для разных категорий. Может, Вы знаете какой-то другой способ?

  72. admin пишет:

    Да, я опечатался)
    Только править нужно product.php, этот контроллер принимает запрос и далее передает данные в шаблон category.tpl.

    Светлана давайте я вам напишу на почту и дальше мы будем вести диалог там.

  73. Светлана пишет:

    Здравствуйте!

    Я тут пока писала Вам ответ, случайно решила свою задачу другим способом)) Мне нужно было для разных категорий выводить разные «превью» одного и того же товара. Можно было конечно использовать разные category.tpl шаблоны, но встал вопрос — как выводить «превью» в модулях — Рекомендуемые, Акции и т.д.? В общем, я в админке в поле UPC товара ввожу номер (пусть будет называться номер шаблона вывода «превью»), а в файле category.tpl уже вывожу кусок кода, отвечающий за вывод «превью», в зависимости от значения этого поля. И во всех модулях можно сделать аналогично. Как думаете, пойдет такой способ? Вроде работает)

    Не подскажете, можно ли этот кусок кода вынести в отдельный файл, а в шаблонах его подключать? Как это делается? Я php совсем не знаю. Или может ссылку дадите, где посмотреть?

    Вам большое спасибо, у Вас замечательный сайт, много полезного нашла. Если еще будут сложные вопросы, обращусь к Вам))

  74. admin пишет:

    Добрый день Светлана!

    Я думал вам надо выводить разные оформленные страницы для каждой категории, походу я вас не правильно понял)

    Ну а почему и нет, идея интересная, я как понимаю вам придется создавать несколько копий одного продукта с разными превью?
    Светлана выложите в комментарий этот кусок кода, в будущем это возможно кому-то поможет.

    Кусок вынести можно и подключить его с помощью include (см. официальную документацию). Другое дело, что это работать будет, но не будет считаться грамотным, все логику работы лучше выносить в контроллер, а потом уже результат выдавать в шаблон, который просто вырисовывает.

    Спасибо вам большое Светлана, заходите и спрашивай, я всегда постараюсь помочь =)

  75. Роман пишет:

    День добрый.
    Не могу понять. Задача: сделать страницу информации без хедера/футера/сайдбаров. Создал новые контроллер new.php (копия home.php) и шаблон empty.tpl(без хедера и тд) В админке>схемы создал новый макет, в которой прописал путь к шаблону empty/empty
    Создаю новую статью и задаю ей эту схему. Но почему-то страница все равно отображается по шаблону information/information.tpl
    1.5.4.1

  76. admin пишет:

    Добрый день Роман!

    Скорее всего проблема в контроллере, найдите строки

    if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/home.tpl')) {
    $this->template = $this->config->get('config_template') . '/template/common/home.tpl';
    } else {
    $this->template = 'default/template/common/home.tpl';

    Что у вас указанно вместо home.tpl ?

  77. Роман пишет:

    Здравствуйте, спасибо. Я нашел решение, как посадить новость на другой шаблон.

    if (file_exists(DIR_TEMPLATE . $this->config->get(‘config_template’) . ‘/template/information/information_’ . $information_id . ‘.tpl’)) {
    $this->template = $this->config->get(‘config_template’) . ‘/template/information/information_’ . $information_id . ‘.tpl’;
    } elseif (file_exists(DIR_TEMPLATE . $this->config->get(‘config_template’) . ‘/template/information/information.tpl’)) {
    $this->template = $this->config->get(‘config_template’) . ‘/template/information/information.tpl’;
    } else {
    $this->template = ‘default/template/information/information.tpl’;
    }

  78. admin пишет:

    Спасибо, что привели решение, возможно это кому-то поможет.

    Буду рад вас видеть на s-engineer.ru

  79. Елена пишет:

    Тоже хочу сказать автору, огромное спасибо! И в свою очередь поделиться решением своей проблемы с ЧПУ (я создала новую схему, и в базу данных в таблицу oc_url_alias внесла свои значения, но ничего не произошло, ссылки остались старыми). Как оказалось, опенкарт имеет внутреннее кеширование запросов, я зашла в папку system/cashe/ нашла файл cache.seo_pro, и очистила его содержимое — в итоге все ссылки встали на свои места

  80. admin пишет:

    Спасибо вам Елена!

    Ваш совет обязательно кому-то пригодиться.

    Всегда вас рад видеть на s-engineer.ru!

  81. Елена пишет:

    ОГРОМНОЕ СПАСИБО ЗА ПОДРОБНЫЙ И ПРОСТОЙ, ПОНЯТНЫЙ ОТВЕТ НА ЧАСТОИНТЕРЕСУЕМЫЙ ВОПРОС. Делала по аналогии — акции!

  82. admin пишет:

    Всегда пожалуйста Елена!
    Заходите еще =)

  83. Алексей пишет:

    Здравствуйте.

    Помогите решить.
    Задача — необходимо вывести содержимое, например, из файла temp.tpl в любое место на сайте. Т.е. создал и с помощью вывести это в любом месте любого шаблоне опенкарта.

    Если есть урок по данной теме, буду признателен.

  84. admin пишет:

    Добрый вечер Алексей, я написал вам на почту.

  85. alexgoo пишет:

    Здравствуйте! Спасибо за толковое разъяснение.

    Есть задача. В админпанели во вкладке Клиенты есть таблица со списком клиентов:
    Имя клиента | E-mail | Группа клиентов | Статус | IP | Дата |

    Мне нужно вывести эту таблицу на вновь созданной странице latest/latest.

    Я попытался прописать путь к этой странице в контроллере customer.php (вставка после строки 668):
    $this->response->setOutput($this->load->view(‘default/template/latest/latest.tpl’, $data));

    В файл latest.tpl я добавил строки, выводящие эту таблицу, взятые из файла customer_list.tpl

    Но в итоге выходит ошибка Notice: Undefined variable:…..

    Подскажите, пожалуйста, что не так.

  86. Роман пишет:

    доброй ночи! Спасибо огромное за статью!
    Интересует следующий вопрос — как в схеме сайта удалить определенный блок? допустим футер.
    Огромное вам спасибо

  87. admin пишет:

    Доброе утром Роман.

    За отображение той или иной схеме сайта отвечает tpl файл представления (который лежит в catalog/view/theme/имя_вашей_темы/template), если вы, хотите удалить какой либо блок, то делать это нужно там. Вам нужно найти файл представления интересующей вас схемы.
    Как это сделать? Могу ошибаться, но напротив схемы есть кнопка «изменить», нажимая её, вы увидите что за контроллер отвечает за данную схему. Например latest/latest, т.е. в папке latest есть файл контроллера latest.php. В контроллере найдите следующий фрагмент
    $this->template = 'default/template/latest/latest.tpl';
    Здесь как раз, описан, какой файл представления отвечает за данный контроллер (соответственно и схему). Открываете его и редактируйте.

    Если возникнут проблемы, пишите я всегда отвечу.

  88. Роман пишет:

    Создать новую схему получилось без проблем — визуально она тоже выглядела как и home. В файле контроллера latest.php — лежит путь к файлу latest.tpl — когда я начинаю редактировать файл .tpl визуально ничего не изменяется, схема моего latest.tpl полностью дублирует и Вашу, данные действия пытаюсь сделать на голой версии opencart 1.5.6.4.

    Как я пытаюсь тестировать данные изменения. Я создал новую категорию через админ панель, применил к ней созданную схему latest и пытаюсь редактировать файл latest.tpl, заливая новую версию на хост — но ничего не меняется, даже если файл latest.tpl оставить полностью пустым. Всегда выводится текст и картинки, которые я залил при создании категории.

    Кстати, как показывает firebag — по сути нету отдельно хедера, нету отдельно футера у базовой темы опенкарт, все сидит в теге body, и дивы класса body имеют id «header», «footer» і тд…

    Но задача стоит прежняя убрать лже-футер и лже-хедер с новой схемы — чтобы выводился только нужный текст.
    Очень прошу помощи, где я мог допустить ошибку?
    Беспокоит так же и то, что когда я оставляю полностью чистым файл latest.tpl — визуальных изменений нет.
    Спасибо большое за помощь!

  89. Роман пишет:

    Главная ошибка может крыться на поверхности — новосозданную схему можно применить к категории, которая была создана через админ панель?

  90. fdddddddd пишет:

    Здравствуйте!

    Суть проблемы.
    В пункте Дизайн, в подпункте Макеты, далее Главная я установил модули: Слайдер, Новые поступления, Хиты продаж, Рекомендуемые, Карусель производителей.
    Шаблон Дефолтный, тестирую на локалке.
    На главной странице отображается только Слайдер, а далее
    — Новые поступления, причем только 5 шт товара
    — Хиты продаж — 4 шт

    Но не выводятся — рекомендованные товары, хотя очередность установлена данного модуля — 3

    Вопрос. Подскажите, как исправить или изменить количество товаров в модуле «Новые поступления», сейчас 5 шт, нужно хотяб для симметрии — 8 шт и почему не отображается модуль — «Рекомендованные», хотя при дефолтных демо товарах все отображалось, а после удаления оных рекомендованные товары перестали отображаться на главной, хотя в связях товара я все указал?

  91. admin пишет:

    Добрый день.

    Честно говоря, с версией 2.0 я работал мало. Так что сразу не подскажу, но могу попытаться помочь в персональном порядке, если интересует дайте мне знать и мы спишемся по e-mail.

  92. fdddddddd пишет:

    версия у меня 2.1.0.0

  93. Андрей пишет:

    Здравствуйте, здравствуйте))

    Много подобных решений реализации задуманного встретилось в сети. Возможно с Вашего источника, блогеры сделали рерайт. Но не суть. Благодарю за материал ваш.. Но есть вопрос следующий:

    1.Как сделать вывод последних товаров на отдельную страницу, только из конкретной категории.
    2.И как разделить такие страницы вывода последних товаров (правильно создать клоны), где на каждую выводится последние поступления только из своей категории, не из всех?

  94. admin пишет:

    Добрый день Андрей =)

    Я завтра отвечу на ваш вопрос, сегодня много дел.

    Интересно насчет рерайта моей статьи, можете дать ссылочки?

  95. Андрей пишет:

    Не то чтобы один к одному изложено всё у других, просто все примеры, которые «нагуглил» — они с таким же примером, где для случая создания дополнительной страницы latest (последние поступления) те же правки.. Но окружающий текст другой. Так что всё норм.

    Я вот добился вывода товаров из нужных категорий, правкой SQL-запроса в этом файле: …/catalog/model/catalog/product.php
    Запрос в самой функции lastes — public function getLatestProducts($limit), где он чуть ниже, но урезан где не менялось

    SELECT p.product_id….
    …………………
    AND p2c.category_id NOT IN (57,88,87,86,85,84,)
    …………..

    Вот этот «AND p2c.category_id» указывает далее какие ID-категории пропускать, а из всех остальных выводить. Можно там и прировнять конкретную категорию, но как-то на мой взгляд нелепо это лезть, и менять запрос таким образом. И надо было сначала увидеть все эти ненужные ID из базы данных..
    Короче вроде то, но не то. Так как нужен вывод 3 разных групп последних товаров, на страницы-клоны lastes

  96. admin пишет:

    Добрый вечер Андрей, не было времени ответить ранее.

    Статьи мои походу действительно воруют, погуглил, примеры на многих сайтах совпадают, печаль…

    Прировнять конкретную категорию не вариант.
    Вы можете добавить свой аргумент в функцию getLatestProducts, в теле этой функции добавьте код, который в зависимости от параметра будет делать нужный вам SQL запрос.

    В контроллере, вы уже можете передать в функцию getLatestProducts параметр указывающий какие категории надо вывести.

    Если есть трудности в реализации, я могу помочь, дайте мне знать.

  97. Андрей пишет:

    И снова Здравствуйте.. )

    Я тоже отвлёкся немного по другим вопросам, потому и позже отвечаю по своей проблеме. Да, снова не получилось реализовать задуманное. Возможно по невнимательности где-то запутался.

    Делал дубликат такой же страницы «Последние поступления», можно сказать клон от новосозданной «latest» по описанному вами способу. Всё в новых директориях лежит «latest-dub», в схемах(админка) всё новое отображается, но ничего не выводит на сайт этим клоном.
    Да и вообще, а как второй клон (копия первого «latest») будет работать, если он зависит от модуля «Последние», где и указывается тащить всё в подряд, а не из конкретной категории.. Там в админке этого модуля только указывается количество, размеры картинок, и схему указать.

  98. admin пишет:

    Добрый день Андрей =)

    Вам нужно выводить в каждом клоне latest товары определенной категории?

  99. Андрей пишет:

    Совершенно верно! Появилась потребность из всех 20 категорий магазина, выделить(подчеркнуть) три популярных. И сделать ссылки на них в слайдере.
    Но нужно чтобы последние поступившие товары в эти свои категории, каждые выводились на отдельные страницы «latest», «latest2», «latest3″…

  100. admin пишет:

    Думаю, тут надо подправить модуль latest, добавить в его настройку (в панели управления) опцию какую категорию (или категории) выводить.

    Я делал алогичные вещи (добавлял дополнительные опции), но для панели управления сайтом, а не модуля.
    ссылка на пост

    Попробуйте сделать по аналогии, но для модуля.
    Если не получиться, вы всегда можете обратиться ко мне, напишите мне и мы свяжемся по почте.

  101. Timur пишет:

    Добрый день! Такой вопрос, мне нужно на отдельно созданной странице выводить ссылки на другие страницы, причём ссылки при каждой загрузке страницы должны выводиться разные. Я создал массив php, куда включил все ссылки нужные мне, и завёл переменную которая рандомно выводит ссылки из массива.
    Вопрос: как можно вывести эту переменную на фронт, на конкретную страницу? Я так понимаю что массив можно хранить в information.php, а вот как вывести переменную на определенную страницу?

  102. admin пишет:

    Добрый день!

    За вывод чего-либо на отдельной страницы отвечают ptl шаблоны (которые называются «представления»). За какие страницы отвечает какой шаблон можно посмотреть в моей статье
    Структура OpenCart.

    Реализация «вывести рандомный элемент» лучше сделать в контроллере (файлы php), который подготовит данные (выберет рандомный элемент) и передаст его шаблону.

    OpenCart построен по методологии MVC, Тимур, если возникают трудности с пониманием о чем я написал выше, то рекомендую сначала разобраться с MVC.

  103. Веломир пишет:

    А как сделать что бы не выводило из конкретной категории, у меня на главной странице отображается модуль, мне нужно что бы из категории с ид 90 не отображался товар, как сделать?

  104. admin пишет:

    Добрый день Веломир.

    Надо работать с массивом products в контроллере category, у меня сейчас в обрез время, но я могу вам помочь.
    Если интересует моя услуга дайте мне знать и мы спишемся по e-mail.

  105. Evgen пишет:

    А подскажите как сделать схему чтоб в категории вверху выводилась статья потом был каталог и после ниже продолжение статьи. например как здесь http://e******.ru

  106. admin пишет:

    Добрый день Evgen, ссылку которую вы дали заблокирована.

    В вашем случае нужно править контроллер… возьмите как образец контроллер /catalog/controller/information/information.php, он отвечает за страницу с выводом статьи.
    Вам нужно взять его функционал и поместить в контроллер вашей страницы. Например если вы хотите для главной, то контроллер следующий /catalog/controller/common/home.php.
    Далее нужно доработать файл представление home.tpl, добавить в него вывод статьи.

    Evgen, если нужна более подробная консультация, свяжитесь со мной на странице услуги

  107. rodigy пишет:

    хочу сделать такую же страницу, выдает ошибку
    на строку 6: Notice: «Indirect modification of overloaded property ControllerPagesNewinshop::$data has no effect in … pages/newinshop.php адрес сайта

    Что не так то?

  108. admin пишет:

    Добрый день!

    Данную статью я писал для Opencat до версий 2.0.

    Делайте по аналогии с другими страницами вашей версии OpenCart, если будут проблемы вы можете связаться со мной на странице услуги

  109. Алиса пишет:

    Огромное спасибо за статью!!! Это именно то, что искала. Буду пробовать.

  110. admin пишет:

    Спасибо вам Алиса, что вы читаете меня =)

  111. DizeL пишет:

    Спасибо, за статью! А как быть с языками?
    Переключение между языками со страницы /index.php?route=latest/latest не работает!!!

  112. admin пишет:

    Добрый день DizeL!

    Хм, переключение должно работать в любом случае.
    А что происходит, выскакивает ошибка?

  113. DizeL пишет:

    Добрый день! Нет ошибки. Вопрос, как перевести текст модуля на другой язык.

    Пока решил, вставив в контроллер схемы текст простой страницы (в моем случае с 10 ID):

    $this->language->load(‘information/information’);
    $this->load->model(‘catalog/information’);
    $information_id =10;
    $information_info = $this->model_catalog_information->getInformation($information_id);
    $this->data[‘description’] = html_entity_decode($information_info[‘description’], ENT_QUOTES, ‘UTF-8’);

  114. admin пишет:

    DizeL, посмотрите как это реализовано в других контроллерах, я сейчас загружен работой.
    Идея такова, что текст модуля хранится в его языковых файлах, которые для разных языках располагаются в разных директориях.

    Например для контроллера \catalog\controller\information\contact.php
    языковые файлы находятся в директориях
    catalog\language\russian\information\contact.php — для русского языка
    и
    catalog\language\english\information\contact.php — для английского языка

    При переключение языка, используется тот или иной языковой файл.

  115. Gals пишет:

    Здравствуйте. Все делаю по инструкции, а страница все-равно пустая остается. И еще в файле представления header.tpl нигде не могу найти свою переменную. Может где-то допущена ошибка? Помогите разобраться.

  116. Gals пишет:

    Так, страница заполнилась, нашла ошибку. А ссылку сделать, как Вы описываете так и не получилось.

  117. admin пишет:

    Добрый день Gals!

    Посмотрите по аналогии как реализована ссылка в других схема, возможно в версиях OpenCart произошли изменения.

  118. Gals пишет:

    Я мало понимаю в этом, но кажется у меня все точно также как и в других ссылках прописано.:(

  119. admin пишет:

    Добрый день Gals! Ответил Вам на почтовый ящик.

  120. Виктор пишет:

    Добрый день. По Вашей схеме создал страницу, присвоил ей url и разместил в ней модуль категорий, выглядит так http://www.my_domain/store. Но при переходе с нее в категорию или продукт получается http://www.my_domain/category/product. Подскажите, пожалуйста, как добиться вида в строке http://www.my_domain/store/categoty/product?

  121. admin пишет:

    Добрый день Виктор.

    Вам нужно смотреть в сторону ЧПУ. Погуглите как работать с ЧПУ на OpenCart, на данном сайте я эту тему не освещал.

  122. Антон пишет:

    Спасибо огромное!


Узорчатый полоз: фото, содержание и уход на http://worldencyclo.ru/ имеет достаточно широкий ареал по всей Азии.

Ваш комментарий


Ответ в цифрах

 
© s-engineer.ru, 2012-2017 | Все права защищены