Спасибо, исправил.
А каким образом можно получить значения? К примеру с ссылки : localhost/site/pics/123 Как получить значение 123? |
Цитата:
$param = isset($uri['list'][0]) ? $uri['list'][0] : null; $uri это массив, там есть некоторые параметры... Смотрите его свойства. |
выглядеть он будет примерно так:
Array( [module] => pics [params] => 123 [uri] => /123 [list] => Array( [0] => 123 ) [protocol] => http [domain] => localhost [host] => localhost ) |
Если я правильно понял, то поймать параметр можно в index.php или в main.php ? Я поймал этот параметр в main.php
if ( isset( $modules[ $uri['module'] ] ) ) { foreach( $modules[ $uri['module'] ]['templates'] as $file ) { $param = isset($uri['list'][0]) ? $uri['list'][0] : null; if ($param == "") { $param = "empty";} echo 'parametr - <b>'.$param.'</b>'; include _TEPMLATE_PATH.$file; } } А каким образом мне передать этот параметр в _TEPMLATE_PATH.$file; |
Mateus,
ну можно упростить: $param = empty($uri['list'][0]) ? "empty" : $uri['list'][0]; echo 'parametr - <b>'.$param.'</b>'; Цитата:
|
Цитата:
|
У меня опять вопрос к Вам :
В main.php я подключаю скрипт : <script type="text/javascript" src="<?php echo _LINK_PATH;?>js/test.js"></script> У меня есть див в модульном файле: <div id="box" onclick="test('123')">TEST</div> В самом же скрипте : function test(data){ $.ajax({ type: "POST", url: "file.php", data: {data: data }, success: function(msg){ alert(msg) $('#box').empty().append(msg); } Проблема в том, что js не может правильно найти адрес file.php и #box. Как это можно исправить? П.с. Еще как совет, почему бы не трансформировать url в lowercase или uppercase? site.com/url != site.com/URL Или это сделано нарочно? |
Цитата:
<base href="<?php echo _LINK_PATH;?>" />и тогда браузер будет знать что нужно к пути добавить этот префикс. Цитата:
|
Возможна ли отправка Ajax POST запросов?
К примеру : $.ajax({ type: "POST", url: "file.php", data: {data : data }, success: function(msg){ alert(msg) } Т.к. получилось отправить запрос и получить GET запрос : $.ajax({ type: "GET", url: "file.php?data=123", success: function(msg){ alert(msg) } |
Цитата:
|
Может я делаю что то не так или чего то не хватает?
В index.php я дописал : $allow_include = array( "/file.php" =>1, ); в ajax.js : $.ajax({ type: "POST", url: "file.php", data: {data: 123}, success: function(msg){ alert(msg) } file.php $data = $_POST['data']; echo $data По-сути, должен вернуть alert'ом 123, но ничего не возвращает. |
Цитата:
|
Да, супер, получилось. Очередной раз спасибо :) Хорошо провести Лиго!
|
Как правильно подключитьjquery?
В main.php подключаю библиотеку : <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>Пробовал и так <script type="text/javascript" src="<?php echo _LINK_PATH;?>js/jquery.js"></script> Но не могу подключить, т.е. проверяю версию jquery и выдает, что Jquery не установлен. $(document).ready(function(){ var msg; if (window.jQuery) { msg = 'You are running jQuery version: ' + jQuery.fn.jquery; } else { msg = 'jQuery is not installed'; } alert(msg); |
Цитата:
|
А как добавить исключение для определенного урл в .htacess? Т.е. если я захожу по ссылке site.com/admin, то загрузить не из templates, а admin/index.php. Как это сделать?
|
RewriteEngine On RewriteBase / RewriteRule ^admin/(.*)$ admin/$1 [L] |
Спасибо большое! Правда я убрал RewriteBase.
|
Привет всем!
Давно я не писал об обновлениях, хотя и порадовать новыми версиями не могу. Хотя может оно и к лучшему. Ведь на сегодняшний день библиотека работает просто идеально, даже не пришлось ничего исправлять для работы в iOS7. Вот такие вот дела. На сегодняшний день библиотека имеет версию 4.0.5 за прошедшее время, особых изменений толком и не было, в основном мелкие правки/фиксы. Качайте библиотеку, используйте в своих проектах. Ибо она на мой взгляд одна из лучших в своем роде (хотя я бы сказал самая лучшая, но о своем хорошо говорить не принято). Еще я обновил немного документацию, хотя нового в ней мало) Всем спасибо! |
А как быть с динамически сгенерированными ссылками? Т.е. с теми ссылками, которые были сгенерированы, к примеру, путем javascripta уже после загрузки страницы? К примеру на моём сайте стрелки вправо и влево генерируются во время загрузки страницы и работают правильно (переходят на другую страницу без перезагрузки), а картинки превью под большой фотографией генерируются после скролла вниз (При клике переходят на другую страницу как обычная ссылка). Как "правильно" сгенерировать ссылки?
|
Mateus,
вам просто нужно переписать /js/main.php на систему делегирования вместо обычного навешивания событий на элементы. |
Можно, пожалуйста, поподробней?
|
Цитата:
<?php header("Content-Type: application/javascript"); ?> $(function(){ // keep a reference to the query processor, so you can stop a query if necessary var xhr; function loadContent(url, push) { // previous operation interrupt request if (xhr) xhr.abort(); var fragmentsUrl = url.split("?"), reqUrl = fragmentsUrl.shift(); // ask for new data xhr = $.ajax({ url: "<?php echo _LINK_PATH;?>ajax/core.php" + (fragmentsUrl.length ? "?" + fragmentsUrl.join("?") : ""), data: {"action": "page", "url": reqUrl}, type: "post", dataType: "json", success: function(data, textStatus, xhr) { if (data.status == 1) { // change the content $("#dynamic_content").html(data.page.template); // iterate through all the tags with the name script $("script").each(function(){ // looking for a modular script if (/(.*)<?php echo str_replace('/', '\\/', _LINK_PATH );?>js\/jscore.php\?module(.*)$/i.test(this.src)) { var parent = this.parentNode; // remove the script found to free up memory parent.removeChild( this ); // Create a new script var script = document.createElement('script'); script.type = "text/javascript"; script.async = "async"; script.src = "<?php echo _LINK_PATH;?>js/jscore.php?module=" + data.page.module; // load it for execution parent.appendChild(script); return false; } }); if (data.page.title) { document.title = data.page.title; } if (push) { // replace the link in your browser history.pushState(null, null, url); } } }, complete: function(xhr, textStatus) { //alert(xhr.responseText); }, error: function(xhr, textStatus) { } }); } $(window).on('popstate', function(e){ /* * mind you, this is the only difference when working with the library, * Because the object document.location not be rebooted, so * History library returns generated by "location" object inside * Object window.history, so get it out of the "history.location". * For browsers support "history.pushState" get * Shaped object "location" with the usual "document.location". */ var loc = history.location || document.location; // load the desired content loadContent(loc.href); }); $(document).on('click', 'a.ajax', function(e) { if (window.history.pushState) { var href = $(e.target).closest('a').attr('href'); href && loadContent(href, true); e.preventDefault(); } }); // if the link has a class of 'external' means to open it in another browser tab $(document).on('click', 'a.external', function(e) { var href = $(e.target).closest('a').attr('href'); href && window.open(this.href); e.preventDefault(); }); }); |
Давно не писал про обновления, но что-то новое уже в нее внес... Так же появилась поддержка AMD, ну и что-то еще... Правки всякие и т.д.
|
Привет All
Создал клон своего демо-сайта, без серверного языка. Смотрим тут http://devote.github.io/demos/history/ |
Привет, devote. На примере вашего демо-сайта пытаюсь сделать так, чтоб страницы можно было загружать не только из template, но и из template/pages
файл test.php находится в templates/pages В menu_top.php я прописываю ссылку <a class="ajax" href="<?php echo _LINK_PATH;?>pages/test">test</a> В файле includes/modules.php пишу <?php $modules = array( "pages/test" => array( "title" => "Test", "templates" => array( "pages/test.php", ), ), ); $modules[""] = $modules["home"]; ?> Но при клике ничего не происходит. Подскажите пожалуйста, как мне добиться желаемого результата? |
shuff22,
привет, на самом деле я давно уже не открывал этот демо пример да и не помню где он у меня валяется. А вообще рекомендую дебажить. А вообще имя модуля не может содержать что-то более одного подуровня. Попробуй вместо "pages/test" => array(написать это: "pages" => array(а потом тебе нужно будет обрабатывать переменную она покажет все параметры, что и как.. вообщем дерзай. |
devote, здравствуйте. Есть вопрос по html5 history api.
Использую history.js. При переходе по ссылкам которые находятся на том же уровне все хорошо, т.е.index.html, one.html, two.html. Если же пытаюсь перейти по ссылке на втором уровне, например, papka/three.html, то переход идет почему-то на papka/papka/three.html. А такого файла соответственно нет. В чем может быть ошибка? |
Часовой пояс GMT +3, время: 16:11. |