Изпълнение на PHP код на страниците на уебсайта
Извикване на PHP функции, създаване на помощни класове, инсталиране на приложения и добавки
Страниците на сайта и темите за дизайн използват езика за шаблони Smarty. Този език има способността да добавя фрагменти от PHP код с помощта на тагове. , но рамката Webasyst блокира тази функция, за да гарантира, че сайтът е защитен. Има няколко начина да заобиколите това блокиране.
Извикване на PHP функции
Някои PHP функции, които се считат за безопасни, могат да се изпълняват в страници и шаблони за дизайн. За да направите това, извикването на функцията трябва да бъде затворено във фигурни скоби.
Създайте помощен клас
Създаването и използването на персонализирани помощници е описано в документацията за програмисти.
Създайте персонализиран клас shopCustom във файла wa-apps/shop/lib/classes/shopCustom.class.php:
Добавете извикване към метода на класа в HTML шаблона:
Възможността за зареждане на ваши собствени помощни класове в облака Webasyst не е налична. В облака използвайте други опции за инжектиране на PHP код: извикване на PHP функции и изграждане на приложения и добавки.
Създайте плъгин или приложение
Това е най-мащабният вариант за вграждане на PHP код на страниците на сайта. Процесът на писане на приложения и добавки за Webasyst е описан в документацията за разработчици.
Едно приложение или плъгин може да използва съществуващи програмни събития - кукички - в кода на други приложения. Ако съществуващите кукички не са достатъчни, тогава ще трябва да добавите извиквания на метод на приложение или плъгин към шаблони на HTML страници или теми за дизайн.
Можете ли да ми кажете дали е възможно да се използва включване в тази конфигурация? Например:
include ще работи точно както навсякъде другаде в PHP кода.
По-добре е да залепите пълния път. Например, използвайкифункция wa()->getConfig()->getRootPath() която ще върне пътя към инсталационната директория на рамката (където се намира index.php). Без наклонена черта в края.
И обръщам внимание на факта, че не е много мъдро решение да съхранявате скриптове в wa-data, особено в wa-data/public. Изглежда опасно. За какво е?
Благодаря за бързия отговор! Няма особена нужда, при инсталирането на Script-Shop създадохме папки за изображения, скриптове и документи в Public и ги използваме, по-добре ли е да ги прехвърлим в Protected?
wa-data е правилното място за снимки и документи, но лошо място за изпълними файлове. Публичните PHP файлове могат да бъдат извикани директно от браузъра, ако познаването на URL адреса е опасно и това е основната причина. Това не е така при защитените и от тази гледна точка защитените са по-добри от публичните. Но идеологически погрешно. Освен ако няма специална причина да съхранявате файлове там, най-добре е да не го правите.
Добро място за вашия файл е или wa-config, или wa-apps/shop/lib, до вашия shopCustom.class.php
Ако файлът например съдържа масив с настройки, то самото му място е в wa-config. И ако има много сложна логика, оставете я да живее в приложението.
Леонид, благодаря ти ясно и ясно! Моля, помогнете ми да получа правилния път с помощта на функцията wa()->getConfig()->getRootPath(), ако файлът е поставен в wa-apps/shop/lib. Благодаря ви предварително!
return include wa('shop')->getAppPath('lib/file.php');
ще включва файла wa-apps/shop/lib/file.php
Здравейте. Моля, помогнете ми да го настроя правилно. Изглежда, че е направил всичко, както е описано в инструкциите, но не работи.
В директорията wa-apps/shop/lib/classes/ създадох файла shopGetIpUser.class.php със съдържанието:
Обаждам се по този начин, но не става, отваря празенстраница. Какво не е наред?
Проверете регистрационните файлове на сървъра, може би грешките са посочени там. Ако не, тогава проверете стъпка по стъпка в коя част имате грешка.
Ако го направите, работи .. Проблемът изглежда е във включването.
Може би нещо е написано грешно? (
include('http://. ') е странно. Ако разбирам правилно, файлът е на собствения ви сървър. И ако не на вашия, тогава във всеки случай го изтеглете и го поставете на вашия сайт. Вместо да се свързвате през мрежата, свържете локален файл:
(include_once, така че нищо да не се повреди, ако файлът бъде извикан повече от веднъж)
Като цяло нещата биха се развили много по-бързо, ако можете да включите извеждането на PHP грешка в браузъра или да намерите лог файла. Нямаше да има нужда да гадаете по утайката от кафе какво се е объркало.
Разбрах го, благодаря за помощта!
Трябва да вмъкнем този код на всички страници на сайта
include_once $_SERVER['DOCUMENT_ROOT'].'/clickfrogru_udp_tcp.php';
Прочетете отново темата по-горе - php кодът не се изпълнява в шаблони. Абсолютно. Следователно съдържанието на вашия файл трябва да бъде форматирано като помощник и извикано.
Кажете ми как да направя това нещо < shopCustom :: getExchangeRatesHtml ()> работи, ако е поставено в Разширените опции на страницата. При мен работи в темплейта, но не и в допълнителните параметри.
Изглежда не. Добавете допълнително. параметър
И в шаблона на темата за дизайн използвайте условието за изглед
Кажете ми как да предам ajax нещо към този клас wa-apps/shop/lib/classes/shopCustom.class.php,към някакъвметод?
Най-просто, обвийте вашия клас като контролер, като например waJsonController, ако искате да върнете JSON отговор. В задната част това може да работи, защото няматрябва да конфигурирате правила за маршрутизиране.
Просто няма да работи в интерфейса - трябва да редактирате правилата за маршрутизиране на приложението, в което поставяте файла с класа на контролера. Коригирането на оригиналния код е лоша практика, защото всяка актуализация ще премахне вашите корекции. Поради това е по-добре да опаковате вашия контролер като част от плъгин, в който можете да създадете свои собствени правила за маршрутизиране на предния край за URL адресите, към които ще изпращате AJAX заявки.
Направих плъгин. Трябва да предам ajax стойността на входа към метода. Не разбирам как да използвам моя метод.
Поставете папката wa-apps/shop/plugins/myplugin/lib/shopMyplugin.plugin.php,
добави публичен метод там. Как мога сега да изпратя ajax заявка към този метод от страна на клиента. По тип: клиентът щракна върху бутона и отлетя ajax към този метод с параметъра стойност от същия бутон?