javascript:
$(document).ready(function(){
var session;
var secpic=document.getElementById('secpic');
$.ajaxSetup({cache:false})
$.get('gs.php',{requested:'captcha'},function (data) {
session=data;
secpic.value=$.trim(session);
});
});
php:
session_start();
if (isset($_GET['requested'])) {
print $_SESSION[$_GET['requested']];
}
else {
print json_encode($_SESSION);
}
html:
<input type="hidden" id="secpic" name="secpic" value=""/>
http://stackoverflow.com/questions/2765175/how-to-get-session-variables-from-php-server-with-ajax-function-php-html-js-aj
Отправляя
header("HTTP/1.0 404 Not Found");
exit();
в .htaccess
ErrorDocument 404 /404.php
работать не будет.
Можно отправлять заголовок
header("Location:/404.php");
но тогда ответ будет HTTP/1.1 302 Moved Temporarily
Решение: содержимое файла 404.php переносим в функцию
function Print404() {
echo '<h1>404</h1><a href="/">back</a>';
}
и в коде:
header("HTTP/1.0 404 Not Found");
Print404();
exit();
В примере будут отображаться товары с дополнительным свойством типа «флажок», где он отмечен. (Нужно было отображать товары, вручную отмеченные как новинки)
66 — id
дополнительного свойства
$Shop_Controller_Show
->shopItems()
->queryBuilder()
->join('property_value_ints', 'property_value_ints.entity_id', '=', 'shop_items.id')
->where('property_value_ints.property_id', '=', 66)
->where('property_value_ints.value', '=', 1)
->clearOrderBy()
->orderBy('id','DESC');
1. Модификация xsl карточки товара (по умолчанию /hostcmsfiles/xsl/56.xsl)
В начале документа:
xmlns:php="http://php.net/xsl"
т.е. до вида:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:php="http://php.net/xsl"
xmlns:hostcms="http://www.hostcms.ru/"
exclude-result-prefixes="hostcms">
Где будет отображаться блок:
<xsl:value-of disable-output-escaping="yes" select="php:function('GetSpecialPrices',string(@id),string(price))" />
2. В /bootstrap.php
function GetSpecialPrices($id,$price) {
$out='';
$oCore_QueryBuilder_Select = Core_QueryBuilder::select()
->from('shop_specialprices')
->where('shop_item_id', '=', $id);
$sRows = $oCore_QueryBuilder_Select->execute()->asAssoc()->result();
$out='<table cellpadding="3" cellspacing="0" class="item_special_prices">';
$out.='<tr><td colspan="7">Цена за сутки</td></tr>';
$out.='<tr><td>1 д.</td><td>2-3 д.</td><td>4-7 д.</td><td>8-15 д.</td><td>16-30 д.</td><td>Свыше 30 д.</td></tr>';
$spec_2=$spec_4=$spec_8=$spec_16=$spec_30=0;
foreach ($sRows as $spec) {
if ($spec['min_quantity']==2) {
$spec_price_2=ceil($spec['price']);
$spec_2=1;
}
if ($spec['min_quantity']==4) {
$spec_price_4=ceil($spec['price']);
$spec_4=1;
}
if ($spec['min_quantity']==8) {
$spec_price_8=ceil($spec['price']);
$spec_8=1;
}
if ($spec['min_quantity']==16) {
$spec_price_16=ceil($spec['price']);
$spec_16=1;
}
if ($spec['min_quantity']==30) {
$spec_price_30=ceil($spec['price']);
$spec_30=1;
}
}
if ($spec_2==0) {
$spec_price_2="—";
}
if ($spec_4==0) {
$spec_price_4="—";
}
if ($spec_8==0) {
$spec_price_8="—";
}
if ($spec_16==0) {
$spec_price_16="—";
}
if ($spec_30==0) {
$spec_price_30="—";
}
$out.='<tr><td>'.ceil($price).'</td><td>'.$spec_price_2.'</td><td>'.$spec_price_4.'</td><td>'.$spec_price_8.'</td><td>'.$spec_price_16.'</td><td>'.$spec_price_30.'</td></tr>';
$out.='</table>';
return $out;
}
Недостатки: диапазон специальных цен вписан статикой, но для конкретного случая такое решение подошло.
<script type="text/javascript">
function SearchBlur(text,input) {
$inp = document.getElementById(input);
if ($inp.value!='') {
return false;
}
else {
$inp.value=text;
}
}
function SearchFocus(text,input) {
$inp = document.getElementById(input);
if ($inp.value==text) {
$inp.value='';
}
else {
return false;
}
}
</script>
<?php
function show_form() {
?>
<form action="" method="post">
<table class="blitz_feedback" border="0" cellspacing="0">
<tr>
<td class="label"><label for="name">ФИО</label></td>
<td><input id="name" name="name" size="40" type="text"/></td>
</tr>
<tr>
<td class="label"><label for="tel">Телефон</label></td>
<td><input id="tel" name="tel" size="40" type="text"/></td>
</tr>
<tr>
<td class="label"><label for="email">Почта</label></td>
<td><input id="email" name="email" size="40" type="text"/></td>
</tr>
<tr>
<td colspan="2">
<textarea id="mess" name="mess" cols="41" rows="7" onfocus="SearchFocus('Ваше сообщение..','mess');" onblur="SearchBlur('Ваше сообщение..','mess');">Ваше сообщение..</textarea>
</td>
</tr>
<tr>
<td colspan="2" class="label" align="right"><input type="submit" value="Отправить" name="submit"/></td>
</tr>
</table>
</form>
<?
}
function complete_mail() {
$_POST['mess']=htmlspecialchars(trim($_POST['mess']));
$_POST['name']=htmlspecialchars(trim($_POST['name']));
$_POST['tel']=htmlspecialchars(trim($_POST['tel']));
$_POST['email']=htmlspecialchars(trim($_POST['email']));
if ((empty($_POST['name']))||(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i",$_POST['email']))||(empty($_POST['mess']))||(empty($_POST['tel']))) {
$errors=array();
if (empty($_POST['name'])) {
$errors[]=0;
}
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i",$_POST['email'])) {
$errors[]=1;
}
if(empty($_POST['mess'])) {
$errors[]=2;
}
if(empty($_POST['tel'])) {
$errors[]=3;
}
output_err($errors);
}
else {
$oCore_QueryBuilder_Select = Core_QueryBuilder::select()
->from('constants')
->where('name','=','SUPERUSER_EMAIL');
$aRows = $oCore_QueryBuilder_Select->execute()->asAssoc()->result();
$to=$aRows[0]['value'];
$mess='Имя отправителя:'.$_POST['name'].'
Контактный телефон:'.$_POST['tel'].'
Контактный email:'.$_POST['email'].'
'.$_POST['mess'];
$title=$_SERVER['HTTP_HOST']." | Обратная связь";
$from=$_POST['email'];
$headers="From: {$from}\r\n";
$headers.= "MIME-Version: 1.0\r\n";
$headers.="Content-type: text/plain; charset=utf-8\r\n";
$headers.="Content-Transfer-Encoding: 8bit";
mail($to,$title,$mess,$headers);
echo 'Спасибо! Ваше письмо отправлено.';
}
}
function output_err($errors) {
$err[0]='ОШИБКА! Не введено имя.';
$err[1]='ОШИБКА! Неверно введен e-mail.';
$err[2]='ОШИБКА! Не введено сообщение.';
$err[3]='ОШИБКА! Не введен телефон.';
foreach ($errors as $error) {
echo '<p class="mess_err">'.$err[$error].'</p>';
}
show_form();
}
if (isset($_POST['submit'])) {
complete_mail();
}
else {
show_form();
}
?>
Взято за основу: http://www.hostcms.ru/forums/17/981/