kostyanet

Рейтинг
45
Регистрация
03.06.2015
Должность
design
Интересы
design
designer

А еще в php есть такая фишка

$array3 = $array1 + $array2;

:)

---------- Добавлено 23.06.2015 в 16:51 ----------

Однако тут явно была оказана помощь в изготовлении костылей, ибо диагноз: нарушение нормализации.

Не поможет. У него индекс не скрывается, поэтому урлы нельзя чепушить. Покажу свой


Options -Indexes # чтоб по адресу папки без индекса нельзя было посмотреть ее содержание
<IfModule mod_rewrite.c>
RewriteEngine On # вкл
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] # это редирект с ввв на без-ввв
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule \.(jpg|png|gif) assets/images/noimage.png [NC,L] # тут указываете путь до картинки которая покажет нет-фото
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L] # а тут скрывается index.php и вся работа в скрипте идет с path
</IfModule>

Потому что остальные методы потребуют переноса в хтассесс всех сущностей из вашей бд и моделей и тп. Файл будет зело огромен и лайя. А path переносит всю логику роутера внутрь скрипта.

---------- Добавлено 23.06.2015 в 12:00 ----------

UPD, не индекс не скрывается, а индекс не скрывается как обычно это для чпу на базе роутера-контроллера в скрипте.

Чтобы не маятся избегать спец-символов, используйте одинарные кавычки

echo '<a href="/',$strsil,'">',$strsil,'</a>';

Нашел хорошую метафору юзабилити - вооружения. Любое оружие должно стрелять в руках даже очень тупого бойца. Даже такое как Бук.

Ну повешайте на load документа этот кусок где Confirm определяется. Или надо его переписать чтобы он сам по load инициализировался.

Тогда у меня свой вопрос - вы же новичок, да? Кто вас научил этой ереси - избегать js в хтмле? Тем самым вы сильно будете осложнять жизнь. Посмотрите как устроена страница на сайте google.com и убедитесь что в лучших доман Ландона js находится именно в хтмле и именно там, где нужен.

---------- Добавлено 23.06.2015 в 07:45 ----------

Хорошо, вот такой пример. Допустим у вас есть тележка - список заказов. Коню ясно что обновляется она через js. Ну да, вы можете по кукам ее сразу сгенерить с сервера, для начала. А можете не генерить, ибо куки - те же самые на клиенте. Но тогда обновить элемент вы должны как только так сразу, иначе получится что страница загрузится, а список все еще пуст, потом бамц - появилось. Только положив js сразу за хтмлей корзины вы можете ее обновить немедленно.

---------- Добавлено 23.06.2015 в 08:41 ----------

Для самоинициализации делается так, по простому:


var Confirm=(function() {

/* забиваем в скоп привата все переменные, пустышки */

var dlg,bty,btn,title,hide_dlg=function(){dlg.className=''},yCallback,nCallback,

/* и пишем функцию которая их наполнит смыслом */

init=function(){

dlg = document.getElementById('hidden'),
bty = document.getElementById('yes'),
btn = document.getElementById('no'),
title=document.getElementById('warn-title');

dlg.addEventListener('click',function(e){e.stopPropagation});

bty.addEventListener('click',function(e){hide_dlg();if(yCallback) yCallback();});
btn.addEventListener('click',function(e){hide_dlg();if(nCallback) nCallback();});

};

/* и запускаем отложенную инициализацию после загрузки документа */

window.addEventListener('load',init);

return function(title,yesCallback,noCallback){
yCallback=yesCallback;
nCallback=noCallback;
title.textContent=title;
dlg.className = 'substrate';
};


})();

Слушать надо .product-grid и затем разбираться через target кого именно кликнули.

---------- Добавлено 23.06.2015 в 07:24 ----------

Да, и вот эта строчка

$('.product-list > div').each(function(index, element) {

бред.

Ибо product-list сам все можете перелопатить при условии что все данные загружены.

Собственный confirm может работать только через callback функции.

---------- Добавлено 23.06.2015 в 06:48 ----------

Примерно вот так, по вашему исходнику


var Confirm=(function() {
var dlg = document.getElementById('hidden'),
bty = document.getElementById('yes'),
btn = document.getElementById('no'),
title=document.getElementById('warn-title'), /* span не нужен */
hide_dlg=function(){dlg.className=''},
yCallback, nCallback;

dlg.addEventListener('click',function(e){e.stopPropagation});

bty.addEventListener('click',function(e){hide_dlg();if(yCallback) yCallback();});
btn.addEventListener('click',function(e){hide_dlg();if(nCallback) nCallback();});

return function(title,yesCallback,noCallback){
yCallback=yesCallback;
nCallback=noCallback;
title.textContent=title;
dlg.className = 'substrate';
};
})();

/*

пример применения

где-то в контексте имеется table и определена строка r

*/

Confirm('Товар будет удален из заказа. Продолжить?',function(){
table.deleteRow(r.rowIndex);
do_something_else();
});

/*

или такой пример

в контексте есть функция remove_all

*/

if(some_checks())
Confirm('Список заказов будет очищен. Продолжить?',remove_all);


---------- Добавлено 23.06.2015 в 06:58 ----------

Пояснения новичку. var Confirm=(function(){})(); - такая конструкция запускает безымянную функцию непосредственно сразу после того как интерпретатор отпарсит ее текст. Безымянная функция возвращает closure-функцию - то есть функцию из своего внутреннего scope. Так на js вообще делаются объекты с приватными свойствами и методами и публичными свойствами и методами. Все что до return - приват, все что внутри return - паблик. В данном случае это - функция. Это значит что Confirm будет функцией которая "знает" про все приватные свойства и методы которые больше никому не видны кроме нее. Функция Confirm имеет 3 аргумента - сообщение, которое названо заголовок диалога и 2 калбека. Ни один не обязательный. То есть можете юзать ее как алерт в том числе, но кнопок будет 2. На каждую команду требуется передать функцию из контекста вызова конфирма. Это может быть обычная функция с именем - второй пример, или безымянная как в первом примере.

---------- Добавлено 23.06.2015 в 07:14 ----------

Да, строчка

dlg.addEventListener('click',function(e){e.stopPropagation});

нужна если ваши диалоги исчезают автоматически при щелчке куда-то кроме самого диалога. Это делается через поиск элементов с заранее согласованным именем класса по щелчку на body.

В смысле целевой скрипт которой берет эту самую переменную в которую вы подставляете реальные данные. Как он ее ищет, что ждет?

Так вот невозможно кому-то прыгнуть выше юзабилити рунета, который не может прыгнуть выше юзабилити наших зачаточных экономических и общественных отношений. Только поиск, понимание и признание большинством участников всех вредных факторов позволит повысить юзабилитю торговли.

Теперь, внимание, вопрос. Пресловутое общество потребления это благо или вред? Ну вот, а как повышать юзабилити, если мы против того, чтобы становиться буржуями? Это уже оффтоп, конечно, я лишь хотел показать то место, куда все приходят и стоят в недоумении. Столько сил положено, а толку все нет и нет...

Ну да, надо знать контекст. Если в name = рыба, то и проверить на эту рыбу. Что берет целевой скрипт? Ну может быть !=='undefined', или выдать пустой объект {}

Здесь нет ничего кроме присвоения переменной каких-то значений. Никакой логики, никаких активных действий. Вам придется дописать сверзху типа

if(name!='ноутбук')

Всего: 913