И третий вариант - cx_Freeze
, который является кросс-платформенным.
Погуглив, я нашел Drupal custom_url_rewrite_inbound, которая делает именно то, что мне нужно.
Я вставил функцию в свой /sites/default/settings.php:
function custom_url_rewrite_inbound(&$result, $path, $path_language) {
if(preg_match("/^shop(\/)/", $path, $matches)) {
$result = 'node/XX'; //XX is the ID of my Page Node with the ecommerce code.
}
}
Она работает как шарм!
Если вы создадите модуль, а не узел, это будет довольно просто.
используйте hook_menu() для соответствия строке URL
function example_menu() {
$menu = array()
$menu['shop'] = array(
'page callback' = 'example_callback';
)
}
function example_callback() {
// use arg() to get arguments.
return shop_php();
}
Создание обратного вызова с помощью hook menu позволяет вам вызывать свой собственный код, значение, возвращаемое обратным вызовом, будет отображаться на странице. Когда drupal увидит URL, который соответствует shop*, он вызовет функцию example_callback. В эту функцию вы можете поместить код, который у вас сейчас есть в узле страницы. И вернуть содержимое, которое вы хотите отобразить на странице.