Здравствуйте. Подскажите, как с помощью модуля создать новую строку в таблице page, чтобы при добавлении модуля в панели администратора во вкладке Веб-сайт->Страницы появлялась новая страница New, на которую потом на сайте будет ссылка типа cs-cart/new? А при удалении модуля данная страница должна удалиться.
Спасибо.
[quote name=‘Guest’ timestamp=‘1437725733’ post=‘224160’]
Здравствуйте. Подскажите, как с помощью модуля создать новую строку в таблице page, чтобы при добавлении модуля в панели администратора во вкладке Веб-сайт->Страницы появлялась новая страница New, на которую потом на сайте будет ссылка типа cs-cart/new? А при удалении модуля данная страница должна удалиться.
Спасибо.
[/quote]
Переношу в отдельную тему, раздела форума “Сделай сам”.
То что Вам нужно описывается в видео-уроках по разработке.
Видео 16-19 в плейлисте:
[quote name='Guest' timestamp='1437725733' post='224160']
Здравствуйте. Подскажите, как с помощью модуля создать новую строку в таблице page, чтобы при добавлении модуля в панели администратора во вкладке Веб-сайт->Страницы появлялась новая страница New, на которую потом на сайте будет ссылка типа cs-cart/new? А при удалении модуля данная страница должна удалиться.
Спасибо.
[/quote]
Перепутал, вам нужна не новая настройка, а новая строка.
Для этого можно в файле addon.xml вашего модуля добавить SQL запросы, которые будут выполнятся при установке и удалении модуля.
[CODE]
<queries><br />
<!-- Если параметр for="install" или его вообще нет - запрос выполняется во время установки аддона--><br />
<item for="install"><br />
CREATE TABLE `?:addon_test_123456789` (<br />
`queue_id` mediumint NOT NULL auto_increment,<br />
PRIMARY KEY (`queue_id`)<br />
) ENGINE=MyISAM DEFAULT CHARSET=UTF8<br />
</item><br />
<!-- Если задан атрибут editions, то запрос будет выполнен только для тех редакций которые указаны в нём через запятую --><br />
<item for="install" editions="ULTIMATE,MULTIVENDOR"><br />
ALTER TABLE `?:addon_test_123456789` ADD company_id INT NOT NULL DEFAULT 0;<br />
</item><br />
<!-- Если параметр for="uninstall", запрос выполняется во время удаления аддона--><br />
<item for="uninstall">DROP TABLE IF EXISTS `?:addon_test_123456789`</item><br />
</queries>[/CODE]<br />
Полную схему модуля можно посмотреть здесь:
[url="http://www.cs-cart.ru/docs/4.3.x/developer/core/addons/addon3.html#id2"]http://www.cs-cart.r...addon3.html#id2[/url]
Второй вариант, это использовать функции.
Тут потребуется:
1. Добавить названия функций в схему модуля addon.xml
[CODE]
fn_google_export_add_features
fn_google_export_add_feed
fn_google_export_remove_features
fn_google_export_remove_feed
[/CODE]
2. Написать сами функции в фале func.php
Многие стандартные модули добавляют демо данные при установке. Например, модуль "Блог" или "Конструктор форм" добавляют страницы.
Здравствуйте. Спасибо за ответ, но я имел в виду немного другое:
Например, в админской части я перехожу в Веб-сайт->Страницы. Там можно создать страницу, добавить на неё описание и настройки. И в клиентской части можно на неё перейти. Мне с помощью модуля нужно воссоздать этот процесс, чтобы добавить в Веб-сайт->Страницы новую страницу. В какие таблицы нужно добавлять строки, чтобы создать новую страницу и ссылку на неё?
[quote name=‘Alex’ timestamp=‘1437848115’ post=‘224305’]
Здравствуйте. Спасибо за ответ, но я имел в виду немного другое:
Например, в админской части я перехожу в Веб-сайт->Страницы. Там можно создать страницу, добавить на неё описание и настройки. И в клиентской части можно на неё перейти. Мне с помощью модуля нужно воссоздать этот процесс, чтобы добавить в Веб-сайт->Страницы новую страницу. В какие таблицы нужно добавлять строки, чтобы создать новую страницу и ссылку на неё?
[/quote]
Я вам и сказал, как с помощью модуля можно выполнить SQL запросы и добавить записи в базу данных:
http://forum.cs-cart.com/topic/41218-новая-строка-в-таблице-pages/page__view__findpost__p__224168
Модули “Блог” и “Конструктор форм” при установке создают страницы.
У меня есть ощущение, что вы не с того конца заходите. Всё проще чем кажется.
Когда устанавливается модуль, можно выполнить SQL запрос.
Здравствуйте. Я добавляю в модуль следующий код:
<br />
<item for="install"><br />
INSERT INTO `?:pages` SET `page_id` = 300, `id_path` = 300, `company_id` = 1;<br />
INSERT INTO `?:page_descriptions` SET `page_id` = 300, `page` = 'new page', `lang_code` = 'ru', `description` = '<p>123</p>';<br />
INSERT INTO `?:seo_names` SET `object_id` = 300, `name` = 'new_page', `type` = 'a', `company_id` = 1, `lang_code` = 'ru';<br />
</item><br />
Тут примерно все поля, которые задействованы для страницы “О компании”. Но при переходе по ссылке http://localhost/csc…31/o-kompanii/ открывается страница “О компании”, а при переходе по ссылке http://localhost/csc…3.31/new_page/ ошибка 404. Что я делаю не так?
[quote name='Alex' timestamp='1437907281' post='224337']
Здравствуйте. Я добавляю в модуль следующий код:
<br />
<item for="install"><br />
INSERT INTO `?:pages` SET `page_id` = 300, `id_path` = 300, `company_id` = 1;<br />
INSERT INTO `?:page_descriptions` SET `page_id` = 300, `page` = 'new page', `lang_code` = 'ru', `description` = '<p>123</p>';<br />
INSERT INTO `?:seo_names` SET `object_id` = 300, `name` = 'new_page', `type` = 'a', `company_id` = 1, `lang_code` = 'ru';<br />
</item><br />
Тут примерно все поля, которые задействованы для страницы “О компании”. Но при переходе по ссылке http://localhost/csc…31/o-kompanii/ открывается страница “О компании”, а при переходе по ссылке http://localhost/csc…3.31/new_page/ ошибка 404. Что я делаю не так?
[/quote]
Ещё есть таблица cscart_ult_object_sharing , где для разных типов данных задаётся ID компании.
[quote name='Alex' timestamp='1437907281' post='224337']
Здравствуйте. Я добавляю в модуль следующий код:
<br />
<item for="install"><br />
INSERT INTO `?:pages` SET `page_id` = 300, `id_path` = 300, `company_id` = 1;<br />
INSERT INTO `?:page_descriptions` SET `page_id` = 300, `page` = 'new page', `lang_code` = 'ru', `description` = '<p>123</p>';<br />
INSERT INTO `?:seo_names` SET `object_id` = 300, `name` = 'new_page', `type` = 'a', `company_id` = 1, `lang_code` = 'ru';<br />
</item><br />
Тут примерно все поля, которые задействованы для страницы “О компании”. Но при переходе по ссылке http://localhost/csc…31/o-kompanii/ открывается страница “О компании”, а при переходе по ссылке http://localhost/csc…3.31/new_page/ ошибка 404. Что я делаю не так?
[/quote]
Я бы рекомендовал посмотреть в сторону функций, которые можно выполнять при инсталяции.
Делаете свою функцию, в ней выполняете функцию создания страницы, профит. Ваш модуль будет независим от изменений структуры базы данных.
Посмотрите мод update в контроллере создания страницы
/app/controllers/backend/pages.php
Там всего одна функция, в которую нужно передать массив с данными, в результате в Вашем модуле будет:
<br />
function fn_my_addon_install() {<br />
<br />
$page_data = array(<br />
'name' => 'new page',<br />
// и другие параметры принимаемые функцией из формы создания страницы<br />
);<br />
<br />
$page_id = fn_update_page($page_data, 0, DESCR_SL);<br />
<br />
}
Спасибо, после добавления в [color=#282828][font=arial, verdana, tahoma, sans-serif]cscart_ult_object_sharing всё заработало.[/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif]У меня ещё один вопрос: я хочу теперь вывести информацию на созданной странице. Создаю хук [/font][/color]hooks\pages и файл page_content.post.tpl. Но на странице ничего не выводится. Смотрю по аналогии с блогом. Или Переменную $page тоже не выводит. В оригинальном файле, где находится данный хук, если написать fn_print_r($page), то на моей странице выводится вся информация. А при добавлении информации в моём хуке ничего не происходит.
[quote name='Alex' timestamp='1437932424' post='224385']
Спасибо, после добавления в [color=#282828][font=arial, verdana, tahoma, sans-serif]cscart_ult_object_sharing всё заработало.[/font][/color]
[color=#282828][font=arial, verdana, tahoma, sans-serif]У меня ещё один вопрос: я хочу теперь вывести информацию на созданной странице. Создаю хук [/font][/color]hooks\pages и файл page_content.post.tpl. Но на странице ничего не выводится. Смотрю по аналогии с блогом. Или Переменную $page тоже не выводит. В оригинальном файле, где находится данный хук, если написать fn_print_r($page), то на моей странице выводится вся информация. А при добавлении информации в моём хуке ничего не происходит.
[/quote]
Какую информацию, зачем хук? Можете описать задачу, которую делаете, чтобы я мог помочь. Я реально не понимаю зачем Вам это. У меня складывается ощущение, что Вы выбрали сложный способ решения задачи.
Какой хук используете? Опубликуйте код из файлов func.php и init.php
Извиняюсь за неточность моего вопроса.
Мне нужно с помощью модуля создавать новых сотрудников. И потом необходимо вывести их всех на странице магазина. С помощью ваших рекомендаций я добавил новую страницу модулем. Теперь на этой странице мне необходимо вывести всех сотрудников из базы данных. Я посмотрел, что за вывод на всех страницах отвечает файл, который находится в design\themes\responsive\templates\views\pages view.tpl. Там я обнаружил хук {hook name=“pages:page_content”}. Я добавляю подключение к этому хуку в своём модуле, как показано в видеоуроках и по аналогии с другими модулями, но у меня ничего не выводится. Даже если написать fn_print_r(‘Test’).
[quote name='Alex' timestamp='1437984313' post='224426']
Извиняюсь за неточность моего вопроса.
Мне нужно с помощью модуля создавать новых сотрудников. И потом необходимо вывести их всех на странице магазина.
[/quote]
Не правильный способ решения задачи
Вы в админке свой контроллер (и шаблон) создали, чтобы добавлять сотрудников?
Создайте свой контроллер (и шаблон) на витрине чтобы отобразить сотрудников! Зачем эти пляски с pages, sql и хуками.
Спасибо. А вы не подскажите в каких видеоуроках можно посмотреть про контроллеры и шаблоны витрины?
[quote name=‘Alex’ timestamp=‘1438086641’ post=‘224586’]
Спасибо. А вы не подскажите в каких видеоуроках можно посмотреть про контроллеры и шаблоны витрины?
[/quote]
В первых про “Разработка: PHP” и в текстовой документации про платформу.
Spasibo!
I need to take a look on this later, thanks!