Marat_Kh

Рейтинг
126
Регистрация
18.08.2005
slavok:
Чего мелочиться-то?) Давайте для каждого поддомена делать разные сайты)

В некоторых случаях идея не настолько бессмысленна, как кажется;) Да и та ситуация, когда ПС держат в индексе кучу поддоменов, которые отличаются только городом в мета и Н1 может измениться, а сайт долгосрочная инвестиция.

slavok:
Касательно 2 пункта, как вы собираетесь уникализировать параметры товара?) Где-то выводить вес, а где-то нет? Или указывать везде рандомный вес)

Параметры никак, а отображение в листинге/карточке возможно. Например, есть стоимость доставки до города - ценаВгороде = цена+стоимость доставки. И да, где то вес, а где то цвет.

Пример: такой шаблон элемента листинга

<div data-catid="{{cat_id}}" data-parent="{{parent_id}}" class="row cat_menu_item mb20"> 

<div class="col-sm-2 col-xs-12">
<a href="{{image}}"><img src="{{thumb}}" alt="{{full_item_name}}, цена {{price}} руб" class="img-responsive img-thumbnail"></a>
</div>
<div class="col-sm-6 col-xs-12 item-caption">
<a href="{{model_url}}" class="lead"> {{vendor_name}} {{model_name}}</a> - бортовой автомобиль {{D}}, {{G}} л.с., грузоподъемность {{F}} т., платформа объемом {{K}} куб.м.
<p>Особенности комплектации: {{P}}</p>
</div>
<div class="col-sm-4 col-xs-12">
<div class="price" data-price="{{price}}">{{formatted_price}}</div>
<p>Стоимость с учетом доставки до {{city_3}}</p>
</div>
</div>
<div>
</div>

Покажет следующее в листинге категории


КАМАЗ 43118 - бортовой автомобиль 6х6, 300.0 л.с., грузоподъемность 11.22 т., платформа объемом 27.5 куб.м.

Особенности комплектации: МКБ, МОБ, дв. КАМАЗ 740. 705-300 (Е-5) , ТНВД BOSCH, система нейтрализ. ОГ (AdBlue) , Common Rail, тент, каркас, внутр. размеры платформы 6112х2470х730 мм, тахограф российского стандарта с блоком СКЗИ

Цена: 3,765,380.00 руб.
Стоимость с учетом доставки до УФЫ

А вот другой шаблон

<div data-catid="{{cat_id}}" data-parent="{{parent_id}}" class="row cat_menu_item mb20"> 

<div class="col-sm-2 col-xs-12">
<a href="{{image}}"><img src="{{thumb}}" alt="Купить {{vendor_name}} {{model_name}}" class="img-responsive img-thumbnail"></a>
</div>
<div class="col-sm-6 col-xs-12 item-caption">
<a href="{{model_url}}" class="lead">{{vendor_name}}-{{model_name}}</a>
<br>&bull; Спальное место: {{L}};
<br>&bull; колесная формула: {{D}};
<br>&bull; грузоподъемность: {{F}} т.;
<br>&bull; объем платформы: {{K}} м3;
<br>&bull; ТСУ: {{O}}
<br>&bull; Типоразмер шин: {{M}}
<br>&bull; Вместимость топливного бока, л: {{N}}
</div>
<div class="col-sm-4 col-xs-12">
<div class="price">{{formatted_price}}</div>
<p>Стоимость с учетом доставки до Самары</p>
</div>
</div>
<div>
</div>
КАМАЗ-43118
• Спальное место: 1;
• колесная формула: 6х6;
• грузоподъемность: 11.22 т.;
• объем платформы: 27.5 м3;
• ТСУ: кр-пет.
• Типоразмер шин: 425/85R21 390/95R20
• Вместимость топливного бока, л: 210+350

Цена: 3,768,760.00 руб.
Стоимость с учетом доставки до Самары

По моему, достаточно наглядно. Причем, это еще не все что можно

Я почему в тему вошел, тоже хотелось бы услышать конструктивную критику + идеи какие нибудь по этому поводу.

slavok:
Актуальный мини-мануал для Яндекса

А Гугл? Кто ж знает, как оно повернется в плане главного поискового генератора трафика через х недель / месяцев / лет.

Сайт, все же, достаточно долговременная инвестиция.

slavok:
Я практически уверен что уникализация для большого кол-во поддоменов приведет к некачественному контента

Если подойти с фантазией и должным уровнем аккуратности все будет нормально. Если функционал сайта, конечно, позволит😂 Трудоемко. Слов нет. КолвоПоддоменов * КолвоКатегорий * КолвоШаблоновДляКатегории шаблонов придется сделать.

Немного разверну совсем не новую идею

КолвоШаблоновДляКатегории, как минимум:

- шаблон урл

- тайтл

- дескрипшн

- шаблон листинга

- шаблон элемента листинга

- шаблон карточки (УТП + параметры)

- шаблон сниппетов для подборок

Играет роль массив данных, которые можно подставлять в шаблоны. Это могут быть:

1. какие то сквозные переменные для каждого поддомена (телефон, емайл, адрес, координаты для построения карты, контактное лицо и т.п.)

2. Параметры товара (вес, размер, цвет, цена)

3. Наименования (категория + альтернативные наименования, товар) + падежи, времена.

4-100500. фантазия + возможности КМС

Плюс подборки, + разные шаблоны документа в целом для разных сабдоменов и т.д.

если товаров 1000 и регионов 50, не выход же для каждой карточки товара писать уникальный текст

Это, да:(

Я смотрю в строну:

1. Уникальных шаблонов листинга / карточки для разных поддоменов / категорий

2. Возможность уникальной структуры для разных поддоменнов

3. Упрощенное редактирование "Edit-in-place" и динамический подбор контента обвеса ( текс / фото / видео / аналоги / хиты / с этим товаром .. / сквозные блоки / гео данные (карта/маршруты) / и т.д. ),

Miha Kuzmin (KMY):
но вообще обыкновенно самопис никому не нужен

Очень хорошо, что так. Вот бы и дальше все на Неткатах, ВП и Битриксах оставались 🍿

И мои 5 коп. - тем, кто еще самипис пилит

Поделюсь, к чему пришел. ТЗ так сказать самому себе😂

Без вариантов, но

1. Обработка УРЛов, нет дублю - понятно. + прикрепить раздел каталога к любому статичному урл

сайт.ру/слоны - магазин слонов

сайт.ру/слоны/большие - статичный документ

сайт.ру/отдых/отели - каталог отелей

2. Корректный ласт-модифаед, само собой

3. Тайтл, дескрипшн - 3 уровня управления: дефолт ($pagename - $sectionname - $sitename), шаблон (Купить {{name}} по цене {{price}} в городе {{city}}), напильником (Точный вариант для конкретного документа)

4. Мета - каноникал, некст/преви, ог и т.д. => предусмотреть управление, с учетом и т.д., но это просто - в базе таблица "сквозняк", а в шаблоне

 <meta name="description" content="{{description}}"> 
<meta name="keywords" content="{{keywords}}">
{{meta}}
{{ya_metrics_verify}}
{{google_metrics_verify}}
{{og_image}}
{{og_sitename}}
{{canUri}}

5. Сайтмап в базе, отгрузка yml и т. п.

6. Кейвордс, но по другому:


CREATE TABLE [kwrds](
[id] VARCHAR(32) PRIMARY KEY NOT NULL UNIQUE,
[parent] VARCHAR(32) NOT NULL,
[keyword] VARCHAR(512),
[word_cnt] INTEGER,
[freq] INTEGER,
[sfreq] INTEGER,
[popular_bigramm] VARCHAR(127),
[up] TIMESTAMP DEFAULT CURRENT_TIMESTAMP);

Прикрепление keyword к документу, вместе с теми, что к месту (кластеризация вроде тут называется). Это - постановка задачи для документа. Т.е. делаем наоборот - пляшем от ключа. Механизмы контроля и аналитики (YaXML, это пока просто)

7. Контент всему голова => любой документ это объект из некоторого (в принципе неограниченного) количества блоков текста (справа, слева, основной контент, анонс, до каталога, после каталога, до и перед блоками обвеса) и обвеса - картинки, файлы, видео, хиты товара, аналоги, с этим покупают, просто привязаны к конкретному документу и т.д.

8. Шаблон - для каждого документа может быть свой + наследование по ветке хлебных крошек.

9. Управление поддоменами - каждый поддомен самостоятельный сайт со своей структурой и своими каталогоми

10. Сервисы и юзабилити - фильтры, поиск с автокомплетте, калькуляторы (удобно js к любому конкретному документу) и т.д.

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

txt vars.txt
Например считаю правильным изначально делать его на https, сделать адаптивный дизайн под мобильные устройства, что еще нужно сделать?

Правильно, сначала поставить задачи, а потом потратить немного денег на ТЗ и время на понимание соответствия его (ТЗ) задачам сайта. https и адаптивный дизайн, это не те вопросы которые должны волновать начиная делать сайт.

Сырая не сырая, уже как года 4 на боевых проектах работает и вобще никаких проблем не было.

Пока руки не доходят заценить noSQL :(

Кто скажет?

Отправил, к примеру GET || POST не суть:

?price['min']=20&price['max']=200&color=black&width['min']=200 .....

Чтобы далеко не ходить, все как у ТС

записей на 2-10 млн. будет...

Параметров на каждую, пусть 10, следовательно, для SQL, в конструкции

item_id INT

prm_id INT

str_value VARCHAR...

num_value INT

20-100 млн будет. Это минус, но выборку за вменяемое кол-во времени можно получить:)

Как в noSQL? Сопоставимо по времени будет? Есть смысл в этом плане - когда item много и надо гибко, а главное, вменяемо по времени.

Ага, вот только не понятно почему это проще/правильней, чем assert()?

Если, что то типа:

$dd = " file_put_contents( '{$bbbb}' , '<?php ..... ?>' ) "; 

echo assert($dd) ? 1:0;

исключено, то можно и assert. Хозяин - барин. Мне просто евал и ассерт не нравятся 🍿

И, тогда, eval как вариант. Может быть даже и лучше, с учетом изменений ассерт в пхп 7.х. 😂

Внимание
Использование значения типа string в параметре assertion объявлено УСТАРЕВШИМ с PHP 7.2.

Суть то у этих функций пока одна - выполнение интерпретатором кода в переданной строке.

vreditel:

А вообще прикольно ))) Спрашиваешь у местных гуру что-нибудь по-мелочи, и начинается: "такое теперь не носят". Спрашиваешь про создание нового сайта - оказывается, старый чудо как хорош ))))

Стоимость это функция от ТЗ. Ваши 8п. + 3п. это не ТЗ.

3. Хочется реализовать кое-какие новые возможности. Не бог весть что, но на текущей версии не очень удобно это делать.

Возможности возможностям рознь. И стоимость соответственно☝

5. Хочется сделать региональные поддомены.

Одно дело CNAME * site.ru c добавлением к тайтлу и т.д. поддомена региона. Другое дело собственная структура для каждого поддомена + определение региона пользователя и т.д. и т.п.

6. Хочется освежить дизайн.

Лебедев vs бесплатный шаблон = цены разные

8. В самой CMS функционал довольно ограничен, фактически - возможностями 10-летней давности.

Функционал функционалу рознь. И стоимость соответственно☝

Поэтому и от 1000р (кворк - @media screen and (max-width: 320px) для мобильных устройств 500р + обновить шапку/футер, кворк CNAME * + регион в тайтл и региональный адрес в футер - 500р) до 100500 😂

Мудрёно

Да не.. Ищем все %ххх% в шаблоне, перебираем, если есть на ххх условие ($a), разбираем его по &.

Перебираем итог, выдергиваем (preg_match_all('#(.+)(==|>|<)(.+)#u', $mm[2][$key], $mmm);) ключ параметра ($mmm[1][0]), логику $mmm[2][0] (>,< или ==), значение ($mmm[3][0]) и отдаем вместе с массивом параметров товара ($data) _cmpr($k, $logic, $v, $data) для сравнения...

если итоговый $re тру , то заменяем в тексте ($t) %xxx% на $b['xxx']. Все ;)

Мне только AND надо, OR не будет.

Тогда все упрощается. Если только какие проверки добавить...

30 минут размялся

как вариант:



$data['price'] = 11;
$data['quantity'] = 9;
$data['material'] = "шёлк";
$data['coutry'] = "Китай";

#условия
$a['premium'] = 'coutry == Китай && price > 10 && material == шёлк';
$a['limited'] = 'price > 8 && quantity < 10';

$b['premium'] = '<b>premium</b>';
$b['limited'] = '<b>limited</b>';


$lgc['&&'] = '&';
$lgc['||'] = '|';
$lgc['AND'] = '&';

$t = '
Рады представить вам новую коллецию! %premium% Трусы разработаны лучшими немецкими инженерами, обладают эффектом памяти и учитывают индивидуальные особенности владельца. %limited%';

preg_match_all('#%([a-z0-9]+)%#u', $t, $m);

function _cmpr($k, $logic, $v, $data) {
if(!isset($data[$k])) return null;
echo "<b>$k , {$data[$k]} $logic $v</b><br>" ;
switch ($logic) {
case '>':
return ($data[$k] > $v);
break;

case '<':
return ($data[$k] < $v);
break;

case '==':
return ($data[$k] == $v);
break;
}
return 0;
}

if(!empty($m[1])) {

foreach($m[1] as $itm) {
if(!empty($a[$itm])) {
$a[$itm] = '& '. strtr($a[$itm], $lgc);
preg_match_all('#(&|\|)([^&\|]*)#u', $a[$itm], $mm);

if(!empty($mm[1])) {

foreach($mm[1] as $key=>$val) {

if(!empty($mm[2][$key])) {
echo "<h5>{$val} если логика OR то чуть доработать в плане группировки</h5>";
$val = trim($val);
$mm[2][$key] = trim($mm[2][$key]);
preg_match_all('#(.+)(==|>|<)(.+)#u', $mm[2][$key], $mmm);
if(isset($mmm[3]) && !empty($mmm[3][0]))
$re = _cmpr(trim($mmm[1][0]), $mmm[2][0], trim($mmm[3][0]), $data) ? (isset($re) ? $re : 1) : 0;
}
}
$s = isset($re) && $re ? $b[$itm] : '';
$t = str_replace('%'.$itm.'%', $s, $t);
echo $re, ' ', $a[$itm], '<br>';
}

}
unset($re);
}

}
echo '<hr>', $t;

Только над групприровкой OR и AND условий подумать 😕

---------- Добавлено 24.04.2018 в 14:56 ----------

А почему тогда запрос к БД не сделать?

Вероятно, для вывода шаблонного куска с целью уникализации карточки например. Ну, я так понял;)

Всего: 298