Новая строка в таблице Pages


#1

Здравствуйте. Подскажите, как с помощью модуля создать новую строку в таблице page, чтобы при добавлении модуля в панели администратора во вкладке Веб-сайт->Страницы появлялась новая страница New, на которую потом на сайте будет ссылка типа cs-cart/new? А при удалении модуля данная страница должна удалиться.

Спасибо.


#2

[quote name=‘Guest’ timestamp=‘1437725733’ post=‘224160’]

Здравствуйте. Подскажите, как с помощью модуля создать новую строку в таблице page, чтобы при добавлении модуля в панели администратора во вкладке Веб-сайт->Страницы появлялась новая страница New, на которую потом на сайте будет ссылка типа cs-cart/new? А при удалении модуля данная страница должна удалиться.

Спасибо.

[/quote]



Переношу в отдельную тему, раздела форума “Сделай сам”.



То что Вам нужно описывается в видео-уроках по разработке.

Видео 16-19 в плейлисте:


#3

[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


Многие стандартные модули добавляют демо данные при установке. Например, модуль "Блог" или "Конструктор форм" добавляют страницы.

#4

Здравствуйте. Спасибо за ответ, но я имел в виду немного другое:

Например, в админской части я перехожу в Веб-сайт->Страницы. Там можно создать страницу, добавить на неё описание и настройки. И в клиентской части можно на неё перейти. Мне с помощью модуля нужно воссоздать этот процесс, чтобы добавить в Веб-сайт->Страницы новую страницу. В какие таблицы нужно добавлять строки, чтобы создать новую страницу и ссылку на неё?


#5

[quote name=‘Alex’ timestamp=‘1437848115’ post=‘224305’]

Здравствуйте. Спасибо за ответ, но я имел в виду немного другое:

Например, в админской части я перехожу в Веб-сайт->Страницы. Там можно создать страницу, добавить на неё описание и настройки. И в клиентской части можно на неё перейти. Мне с помощью модуля нужно воссоздать этот процесс, чтобы добавить в Веб-сайт->Страницы новую страницу. В какие таблицы нужно добавлять строки, чтобы создать новую страницу и ссылку на неё?

[/quote]



Я вам и сказал, как с помощью модуля можно выполнить SQL запросы и добавить записи в базу данных:



http://forum.cs-cart.com/topic/41218-новая-строка-в-таблице-pages/page__view__findpost__p__224168



Модули “Блог” и “Конструктор форм” при установке создают страницы.



У меня есть ощущение, что вы не с того конца заходите. Всё проще чем кажется.



Когда устанавливается модуль, можно выполнить SQL запрос.


#6

Здравствуйте. Я добавляю в модуль следующий код:

<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` = &#39;new page&#39;, `lang_code` = &#39;ru&#39;, `description` = &#39;<p>123</p>&#39;;<br /> INSERT INTO `?:seo_names` SET `object_id` = 300, `name` = &#39;new_page&#39;, `type` = &#39;a&#39;, `company_id` = 1, `lang_code` = &#39;ru&#39;;<br /> </item><br />

Тут примерно все поля, которые задействованы для страницы “О компании”. Но при переходе по ссылке http://localhost/csc…31/o-kompanii/ открывается страница “О компании”, а при переходе по ссылке http://localhost/csc…3.31/new_page/ ошибка 404. Что я делаю не так?


#7

[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` = &#39;new page&#39;, `lang_code` = &#39;ru&#39;, `description` = &#39;<p>123</p>&#39;;<br /> INSERT INTO `?:seo_names` SET `object_id` = 300, `name` = &#39;new_page&#39;, `type` = &#39;a&#39;, `company_id` = 1, `lang_code` = &#39;ru&#39;;<br /> </item><br />

Тут примерно все поля, которые задействованы для страницы “О компании”. Но при переходе по ссылке http://localhost/csc…31/o-kompanii/ открывается страница “О компании”, а при переходе по ссылке http://localhost/csc…3.31/new_page/ ошибка 404. Что я делаю не так?

[/quote]



Ещё есть таблица cscart_ult_object_sharing , где для разных типов данных задаётся ID компании.


#8

[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` = &#39;new page&#39;, `lang_code` = &#39;ru&#39;, `description` = &#39;<p>123</p>&#39;;<br /> INSERT INTO `?:seo_names` SET `object_id` = 300, `name` = &#39;new_page&#39;, `type` = &#39;a&#39;, `company_id` = 1, `lang_code` = &#39;ru&#39;;<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 /> &#39;name&#39; => &#39;new page&#39;,<br /> // и другие параметры принимаемые функцией из формы создания страницы<br /> );<br /> <br /> $page_id = fn_update_page($page_data, 0, DESCR_SL);<br /> <br /> }


#9

Спасибо, после добавления в [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), то на моей странице выводится вся информация. А при добавлении информации в моём хуке ничего не происходит.


#10

[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


#11

Извиняюсь за неточность моего вопроса.

Мне нужно с помощью модуля создавать новых сотрудников. И потом необходимо вывести их всех на странице магазина. С помощью ваших рекомендаций я добавил новую страницу модулем. Теперь на этой странице мне необходимо вывести всех сотрудников из базы данных. Я посмотрел, что за вывод на всех страницах отвечает файл, который находится в design\themes\responsive\templates\views\pages view.tpl. Там я обнаружил хук {hook name=“pages:page_content”}. Я добавляю подключение к этому хуку в своём модуле, как показано в видеоуроках и по аналогии с другими модулями, но у меня ничего не выводится. Даже если написать fn_print_r(‘Test’).


#12

[quote name='Alex' timestamp='1437984313' post='224426']

Извиняюсь за неточность моего вопроса.

Мне нужно с помощью модуля создавать новых сотрудников. И потом необходимо вывести их всех на странице магазина.

[/quote]



Не правильный способ решения задачи



Вы в админке свой контроллер (и шаблон) создали, чтобы добавлять сотрудников?



Создайте свой контроллер (и шаблон) на витрине чтобы отобразить сотрудников! Зачем эти пляски с pages, sql и хуками.


#13

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


#14

[quote name=‘Alex’ timestamp=‘1438086641’ post=‘224586’]

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

[/quote]



В первых про “Разработка: PHP” и в текстовой документации про платформу.


#15

Spasibo!

I need to take a look on this later, thanks!