Показати сторінкуСтарі ревізіїПосилання сюдиЕкспорт до PDFПовернутися наверх Ця сторінка доступна тільки для перегляду. Ви можете продивитися вихідний текст, але не можете змінювати його. Якщо ви вважаєте, що це не вірно, зверніться до адміністратора. ====== Програмування ====== ===== Внесення змін ===== Цілком можливо вам знадобиться внести будь-які зміни в код NoDeny+, наприклад, поміняти деякі тексти, повідомлення, а можливо видалити або додати якусь фічу. Ми наполегливо рекомендуємо не правити безпосередньо існуючий код, оскільки наступні оновлення затруть ваші зміни і вам доведеться їх заново вносити. NoDeny+ не стоїть на місці, постійно з'являються нові можливості, тому необхідно час від часу оновлювати його. Практично гарантовано оновлення не порушать роботу вашої системи, вони проходитимуть безболісно. В особливих випадках, ми будемо попереджати у форумі про важливі зміни та їх наслідки. У будь-якому випадку, svn дозволяє дуже просто відкотитися до будь-якої з попередніх версій, якщо раптом щось не запрацює або просто з'явиться почуття, що щось не так. У NoDeny+ є система, яка накладає патчі на код. Вона працює за іншим принципом, ніж, скажімо, утиліта patch. Остання вимагає, щоб у файлі був певний фрагмент у певному рядку коду, якщо він буде іншим, то патч не буде застосований. Через таку поведінку, часто не вдасться накласти патч іншу версію файлу, тобто. Майже пишуться під конкретну версію продукту. У NoDeny+ ми постаралися, щоб патчі не залежали від версії білінгу. Тут не змінюються будь-які фрагменти коду, тут вносяться цілісні фрагменти коду у певні місця, які називаються «хуками». Хук - це мітка у файлі, що починається з фрагмента "#<HOOK>". При зміні файлу, наприклад, при виході нової версії NoDeny+ або накладанні патча від іншого модуля, положення мітки може змінитися, що не призведе до проблем як утиліти patch. Давайте напишемо патч "web-заглушки" - змінимо текст повідомлень для клієнтів. Скопіюємо в папку /usr/local/nodeny/modules/MyNetwork файл web/lang/RU_cap.pl та перейменуємо його на create.lang.RU_cap.pl. <code> cd /usr/local/nodeny/modules/MyNetwork cp ../../web/lang/RU_cap.pl create.lang.RU_cap.pl </code> Якщо ім'я файлу починається з create. - інсталятор (install.pl -x) створюватиме новий файл, якщо «patch.» - Модифікувати існуючий. Друга частина імені не є важливою, але автор рекомендує давати їй осмислене ім'я. У цьому випадку ми натякнули (собі), що буде створено файл lang/RU_cap.pl. Ім'я файлу, що створюється, знаходиться всередині самого файлу і воно буде web/lang/RU_cap.pl. Абсолютно всі створені та змінені файли матимуть імена, що починаються зі знака підкреслення! Це фантоми. Фантом вважається головнішим за основний файл, тобто. якщо існує фантом – основний файл ігнорується. Якщо видалити фантом, дані братимуться з основного файлу. Запам'ятайте, що основні файли не змінюються. Створюється фантом на основі основного файлу і до нього вносяться зміни. Під час оновлення NoDeny+ оновлюються основні файли. install.pl -x знову створює фантоми на основі змін в основних файлах. Інсталятор створить web/lang%%/_%%RU_cap.pl, який матиме пріоритет перед web/lang/RU_cap.pl, вірніше, останній ігноруватиметься системою. Також ми згадали, що ім'я створюваного файлу задається в самому файлі create.lang.RU_cap.pl, тому на початку цього файлу додаємо рядок: <code> #<ACTION> file=>'web/lang/RU_cap.pl',hook=>'new' </code> Також вносимо зміни до тексту. Запускаємо патчинг: <code> cd /usr/local/nodeny perl install.pl -x less web/lang/_RU_cap.pl </code> Якщо ж необхідно внести будь-яку зміну в існуючий файл, а не створювати новий, то нагадуємо ім'я файлу, починаємо з «patch.», скажімо, patch.RU.pl з текстом: <code> #<ACTION> file=>'web/lang/RU.pl',hook=>'end' $test_test = { msg => 'Yes!!!' }; </code> Тут ми дали вказівку додати текст «$test_test...» у файл web/lang/RU.pl у місце, де знаходиться рядок «#<HOOK>end». Якщо вам не вистачає якихось хуків, тобто ви хочете внести зміну в місце, де немає хука, зверніться до форуму – ми внесемо цей хук у код. ===== Зміна меню клієнтської статистики ===== Прочитавши як слід вносити зміни в NoDeny, замінимо назву пункту меню Liqpay клієнтської статистики. Для цього необхідно змінити мовні файли web/lang/RU.pl та web/lang/UA.pl. Створимо файл modules/MyNetwork/patch.LANG.pl: <code> #<ACTION> file=>'web/lang/RU.pl',hook=>'user_menu_buttons' u_lpay => 'сплатити пластиковою карткою', </code> nodeny/docs/start.txt Востаннє змінено: 15/05/2024 14:02повз Method Увійти