Forums / National / Russian / Модули и плагины / Как сделать ID четырехзначным в модуле page?

prostogorod
#1 2017-04-10 11:37

Подскажите, пожалуйста! В модуле page добавление страниц начинаеться с id=1
Как можно реализовать чтобы добавление начиналось с четырех значного айдишника, например id=0001, id=0002, id=0003....id=1233 и т.д В каких функциях правки сделать? А также чем черевато ли эта манипуляция на работу модуля page?

Kopusha
#2 2017-04-10 11:41

Зачем? И потом после 999 стр само станет 4значным

Added 1 minute later:

#42797 prostogorodнапример id=0001, id=0002, id=0003....id=1233 и т.д 

В 1233 куда по вашей логике ноли делись?

prostogorod
#3 2017-04-10 13:15
#42798 Kopusha:

Зачем?

Потому что надо...

Хотелось бы конструктивные ответы услышатьsmiley

Kort
#4 2017-04-11 06:06
#42799 prostogorod:

Потому что надо...

Хотелось бы конструктивные ответы услышатьsmiley

Никак

SED.by - создание сайтов, разработка плагинов и тем для Котонти
Kopusha
#5 2017-04-11 07:51
#42799 prostogorod:
#42798 Kopusha:

Зачем?

Потому что надо...

Хотелось бы конструктивные ответы услышатьsmiley

Надо значит надо, делайте. 

DenDevin
#6 2017-04-12 07:17
Я скажу лишь мнение, как бы я попытался такое реализовать. Хотя может и не получиться. Перед добавлением страницы в контроллере модуля page (по моему это файл page.add.PHP) делал бы проверку на длину значения ID функцией strlen(), и если в ай-ди меньше 4- х символов, то в начало строки подставлять нужное количество нулей. И лмшь если соблюдено условие, вносить запись в базу.

Добавлено 24 минуты спустя:

В РНР есть замечательная функция str_pad, я думаю это то что вам нужно. В функцию можно передать четыре аргумента: str_pad( исходная строка, количество добавляемых символов, тип символов ( нули, запятые, пробелы), и направление добавления (справа, слева, с обеих сторон). Но эту функцию нужно применять только с проверкой количества символов в исходной строке, для того чтобы верно указать кол-во добавляемых символов слева. К примеру, if(strlen($id_page) < 2) /////ай ди статьи имеет длину строки меньше 2 символов, то.. { $nulles = "0"; str_pad($id_page, 3, $nulles, STR_PAD_LEFT); } Направление в общем я вам дал.
This post was edited by DenDevin (2017-04-12 07:41, 6 years ago)
Kort
#7 2017-04-12 15:44

А то, что в таблице cot_pages page_id -- это ведущее поле с целочисленным типом и автоинкрементом вы не учитываете?

Есть более простой и "бережный" вариант -- устанавливать цифровой page_alias плагином с хуками page.add.add.import и page.edit.update.import. Сейчас не проверял (там после хука выполняется cot_page_validate), но когда-то такое делалось для аналогичной задачи, как оказалось в дальнейшем, такой же бессмысленной ))

SED.by - создание сайтов, разработка плагинов и тем для Котонти
Macik
#8 2017-04-12 17:09

По похожему вопросу я писал в соседнем топике. Рекомендую прочитать.

Если тезисно изложить суть, то:

  1. Крайне не рекомендую менять внутренн.. логику работы таких основополагающих механизмов, как идентификаторы. Они привязаны кроме прочего к ID записей в таблице. На них может базироваться какой либо дополнительный функционал или доп. расширения.
  2. Если все же задачу надо решить — посмотрите в сторону URLeditor, через функции которого можно попробовать переопределять URL параметры.
https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
DenDevin
#9 2017-04-12 18:15
Я думаю, не обязательно это привязывать к автоинкрементному полю ID, проще все таки в таблице создать еще одно поле и туда вносить данные с этими нулями, а после делать с ними все что нужно - сортировать, удалять и прочее. Так будет логичнее наверно.
Dayver
#10 2018-05-22 20:41

Это конечно старая тема (редко захожу, пропустил ее) но вдруг кому то еще понадобится столкнутся с такой же задачей напишу свое мнение. Какой бы она странной и не была но решение крайне простое (и не надо писать что "никак не решить") и не нужно создавать 999 страниц или менять логику php кода каких либо модулей или ядра просто заходите в PhpMyAdmin в свойства таблицы cot_page и там есть поле AUTO_INCREMENT значение которому можно задать 999 тогда страницы создаваемые после даного изменения будут иметь требуемый id

Pavlo Tkachenko aka Dayver
Kopusha
#11 2018-05-23 08:14
#43401 Dayver:

 страницы создаваемые после даного изменения будут иметь требуемый id

Овация)