Отдельные страницы акционных и рекомендуемых товаров.

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

gordeu M
gordeu M
Возраст: 30
Репутация: 0
Сообщения: 8
Зарегистрирован: 06.05.2016
С нами: 7 лет 10 месяцев
Откуда: Беларусь, Гродно

Сообщение #1 gordeu » 06.07.2016, 14:43

Добрый день.
Может кто то реализовывал отдельные страницы для акционных и рекомендуемых товаров?

simplamarket M
Аватара
simplamarket M
Репутация: 1
Сообщения: 42
Зарегистрирован: 29.01.2016
С нами: 8 лет 1 месяц
Сайт Skype

Сообщение #2 simplamarket » 06.07.2016, 19:05

gordeu писал(а):Добрый день.
Может кто то реализовывал отдельные страницы для акционных и рекомендуемых товаров?
Добрый вечер. Да, мы можем взяться за такую работу, распишите более детальней как Вы хотите это видеть, и присылайте нам на почту my@simplamarket.ru
С уважением,
служба поддержки SimplaMarket.ru
Skype: simplamarket

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #3 korshunov » 06.07.2016, 19:44


gordeu M
gordeu M
Возраст: 30
Репутация: 0
Сообщения: 8
Зарегистрирован: 06.05.2016
С нами: 7 лет 10 месяцев
Откуда: Беларусь, Гродно

Сообщение #4 gordeu » 11.07.2016, 10:30

Пользовался данным решением, на симпле работает, а на okaycms нет.

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #5 korshunov » 11.07.2016, 12:36

Видимо, надо не тупо копировать, а подходить творчески и учитывать специфику...

m1hasik M
Аватара
m1hasik M
Возраст: 32
Репутация: 31
Сообщения: 200
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Откуда: Днепр
Skype

Сообщение #6 m1hasik » 11.07.2016, 13:47

gordeu писал(а):
Пользовался данным решением, на симпле работает, а на okaycms нет.
Вы не учли как минимум мультиязычность, она в htaccess есть же, окаевском, а в симпле нет такого, например

RewriteRule ^([a-z]{2}/)?hits/?$ index.php?module=ProductsView&mode=hits&lang_label=$1 [L,QSA]

вот так надо было бы сделать

gordeu M
gordeu M
Возраст: 30
Репутация: 0
Сообщения: 8
Зарегистрирован: 06.05.2016
С нами: 7 лет 10 месяцев
Откуда: Беларусь, Гродно

Сообщение #7 gordeu » 11.07.2016, 14:44

m1hasik писал(а):
gordeu писал(а):Пользовался данным решением, на симпле работает, а на okaycms нет.
Вы не учли как минимум мультиязычность, она в htaccess есть же, окаевском, а в симпле нет такого, например

RewriteRule ^([a-z]{2}/)?hits/?$ index.php?module=ProductsView&mode=hits&lang_label=$1 [L,QSA]

вот так надо было бы сделать
Спасибо за совет, но проблему это не решило)

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #8 korshunov » 12.07.2016, 16:42

Да, проблему это не решает.

В файле view/ProductsView.php в начале функции
public function fetch() {
стоят строки
if ($this->is_wrong_params) {
return false;
}
Так вот, для нового адреса http://site.ru/hits эта проверка не проходит, и показывается страница 404.

Для вычисления значения $this->is_wrong_params в том же файле написан ужасно большой и сложный код, аж целых 70 строк. Причем не очень понятно, зачем все это надо. То есть теоретически оно понятно - проверка на валидный URL. Только нужна ли она практически? Один минус уже виден - при любой доработке, в которая вводится новый нестандартный URL, надо вычисление этого параметра менять. Алгоритм довольно сложный, вписываться в него - очень проблематично. Можно ожидать, что разработчики дополнений будут его просто отключать...

Интересно бы услышать мнение разработчиков OKAY, ЗАЧЕМ нужно такое усложнение. Ведь перед обращением к view/ProductsView.php уже пройдена проверка в .htaccess, зачем дублирующий сложный процесс?

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #9 OkayCMS » 13.07.2016, 10:10

Если убрать этот код, то не будет проходить проверка на то, существует такая страница при ЧПУ фильтре или нет. То есть URL типа http://demookay.com/catalog/telephony/blabla отдает не 404 ошибку, а страницу категории телефоны. Таким способом можно наплодить много дублей и загнать их в индекс. А это уже аукнется затем при продвижении.

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #10 korshunov » 13.07.2016, 13:50

Да, видимо, проверка такая нужна и она полезна.
Но практическая реализация оной проверки - ужасно сложная.

Пару простейших примеров.
1. В view/ProductsView.php есть два таких фрагмента кода:

$uri = @parse_url($_SERVER["REQUEST_URI"]);
preg_match("~$this->subdir(/?$this->lang_label)?/?(catalog|all-products|brands)/?~",$uri['path'], $this->catalog_type);
$this->catalog_type = $this->catalog_type[2];
//убираем модификатор каталога
$uri = preg_replace("~$this->subdir(/?$this->lang_label)?/?(catalog|all-products|brands)/?~",'',$uri['path']);
$uri_array = (empty($uri) ? array() : explode('/',$uri));
if ($this->catalog_type == 'catalog' || $this->catalog_type == 'brands') {
array_shift($uri_array);
}

//Определяем, что у нас уже есть в строке
$uri = @parse_url($_SERVER["REQUEST_URI"]);
$uri = preg_replace("~$this->subdir(/?$this->lang_label)?/?(catalog|all-products|brands)/?~",'',$uri['path']);
$uri_array = (empty($uri) ? array() : explode('/',$uri));
if ($this->catalog_type == 'catalog' || $this->catalog_type == 'brands') {
array_shift($uri_array);
}

Дают они почти одно и то же, по оформлены по-разному. Явная нерациональность - обычно код не дублируют, а пишут один раз, оформляя множественные вызовы функциями или чем-то подобным.

Даже если реально и нужны эти два разных кода, то второй точно оформлен нерационально - он находится внутри обычной функции и многократно выполняет одно и то же (первый в функции-конструкторе и лишен этого недостатка).
Хотя совсем легко провести действия один раз и запомнить результат в переменной класса...

2. Формирование адресов, особенно связанных с фильтром, сделано очень нерационально. Например, при формировании фрагмента адреса типа age-otrozhdeniya вызывается (совершенно бесполезная и ненужная) сортировка массива, содержащего ОДИН элемент! Само по себе это полбеды, настоящая беда в том, что при этом даже делается запрос к БД! Программистов за такое надо бить и очень сильно, чтоб надолго запомнили...

А вообще в Вашей ЧПУ-системе ляпов подобных, похоже, предостаточно...
Думаю, Вам стоило бы подумать хотя бы о простейшей системе тестирования.

gordeu M
gordeu M
Возраст: 30
Репутация: 0
Сообщения: 8
Зарегистрирован: 06.05.2016
С нами: 7 лет 10 месяцев
Откуда: Беларусь, Гродно

Сообщение #11 gordeu » 14.07.2016, 09:42

OkayCMS писал(а):Если убрать этот код, то не будет проходить проверка на то, существует такая страница при ЧПУ фильтре или нет. То есть URL типа http://demookay.com/catalog/telephony/blabla отдает не 404 ошибку, а страницу категории телефоны. Таким способом можно наплодить много дублей и загнать их в индекс. А это уже аукнется затем при продвижении.

Так есть возможность реализовать отдельные страницы акции и бренды?

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #12 OkayCMS » 14.07.2016, 10:37

gordeu писал(а):Так есть возможность реализовать отдельные страницы акции

Мы планируем включить это в версию 1.2.1, но если вам нужно раньше, то вот вам инструкция

Добавлено спустя 57 секунд:
korshunov писал(а):Да, видимо, проверка такая нужна и она полезна.
Но практическая реализация оной проверки - ужасно сложная.
Спасибо за ваши уточнения. Мы постараемся учесть ваши замечания в следующей версии.
Вложения
Страница всех скидок.zip
(22.26 КБ) 999 скачиваний

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #13 korshunov » 14.07.2016, 15:31

OkayCMS писал(а):Мы планируем включить это в версию 1.2.1, но если вам нужно раньше, то вот вам инструкция

Надеюсь, в новой версии этот функционал будет лучше, чем сейчас.

В текущем предложении в ТРЕХ местах приходится преобразовывать почти одинаково монстрообразный код типа
$uri = preg_replace("~$this->subdir(/?$this->lang_label)?/?(catalog|all-products|brands|rasprodazha)/?~",'',$uri['path']);
Это слабо согласуется с заявлениями о том, что система делается максимально просто в том числе и для программистов.

Попутно обнаружилось следующее: в view/View.php
после
if($_GET['page_url'] == 'all-products'){
$page_url = $_GET['page_url'];
}
почти сразу идет
if (preg_match('~all-products/page-[0-9]+/?$~', $page_url)) {
$page_url = preg_replace('~/page-[0-9]+/?$~', '', $page_url);
}
По-моему, второй фрагмент совсем ненужный и бесполезный, так как условие НИКОГДА не выполняется. Поправьте меня, если он нужен для чего-то...

m1hasik M
Аватара
m1hasik M
Возраст: 32
Репутация: 31
Сообщения: 200
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Откуда: Днепр
Skype

Сообщение #14 m1hasik » 14.07.2016, 17:05

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

gordeu M
gordeu M
Возраст: 30
Репутация: 0
Сообщения: 8
Зарегистрирован: 06.05.2016
С нами: 7 лет 10 месяцев
Откуда: Беларусь, Гродно

Сообщение #15 gordeu » 14.07.2016, 17:09

OkayCMS писал(а):
gordeu писал(а):Так есть возможность реализовать отдельные страницы акции

Мы планируем включить это в версию 1.2.1, но если вам нужно раньше, то вот вам инструкция


korshunov писал(а):Да, видимо, проверка такая нужна и она полезна.
Но практическая реализация оной проверки - ужасно сложная.
Спасибо за ваши уточнения. Мы постараемся учесть ваши замечания в следующей версии.

Огромное спасибо, буду пробовать!

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #16 korshunov » 15.07.2016, 06:53

m1hasik писал(а):я сам люблю когда код простой и все такое, но вам не кажется, что делая каждый раз новый функционал, код проще не станет, это во первых.

Мне кажется, что Вы хотите заболтать простой вопрос уходом в сторону общих рассуждений.
Мой вопрос прост - в ТРЕХ местах одинаковый код. Это плохо. Если исправить, будет и легче понимать код и легче вносить изменения.

И Ваши общие рассуждения совсем неправильны. Станет код проще или не станет, зависит от очень многих причин: от качества текущего состояния, постановки задачи, качества нового кода и проч.
Простой пример: в Simpla есть PHP-код, который для карточки товара формирует данные по следующему и предыдущему товару. В OKAY имеется аналогичный функционал.
По размерам кода - в OKAY он чуточку короче. По SQL-запросам - в OKAY намного лучше - 3 запроса против 8 в Simpla.
В итоге - тот же по размерам и сложности понимания код, но неизмеримо лучше.
А если бы OKAY-цы еще чуть подумали, то легко могли бы свой код сделать по размерам чуть не в два раза меньше и число запросов сократить до 2-х!

m1hasik писал(а):Во вторых, все так жалеют программистов, прям такие несчастные, лишнюю строчку кода не прочитают. Вы битриксу не писали с его компонентами, насчет простоты?

Во вторых, вопрос не в том, жалеют или не жалеют, а в том, хорошо или плохо иметь повтор кода.
Повтор кода - это большое зло. Если код повторяется в 5 местах, то любая модификация должна проводиться в этих 5 местах. Это и неудобно, и затратно, и риск ошибок, когда про одно-два места забудешь. Это азбучная истина, а Вы призываете к тому, чтобы терпеть некачественную работу.
Кроме того, каждая CMS у индивидуального пользователя, как правило, подвергается изменениям, и тут надо бы пожалеть не ОДНОГО программиста, который написал повторный код, а ТЫСЯЧИ простых пользователей, которым потом эта некачественная работа создаст трудности на пустом месте...

m1hasik писал(а):Как вот эти придирки смотрятся 50 на 50.

Эти придирки, если разработчики устранят отмеченные недостатки, приведут к улучшению системы. А в чему зовут Ваши намеки - не надо стремиться к лучшему, оставить как есть, и так сойдет?

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #17 OkayCMS » 15.07.2016, 07:30

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

gordeu M
gordeu M
Возраст: 30
Репутация: 0
Сообщения: 8
Зарегистрирован: 06.05.2016
С нами: 7 лет 10 месяцев
Откуда: Беларусь, Гродно

Сообщение #18 gordeu » 15.07.2016, 08:19

OkayCMS писал(а):Спасибо за ваши замечания, мы будем стремиться делать код проще и понятней.
Спасибо за решение, все работает!!!

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #19 korshunov » 15.07.2016, 08:54

korshunov писал(а):Если убрать этот код, то не будет проходить проверка на то, существует такая страница при ЧПУ фильтре или нет.

Не всегда полностью правильно работает. Например,
http://demookay.com/catalog/womens-clothing/page-22222
должно бы давать страницу 404, а дает обычную страницу Товары не найдены...

m1hasik M
Аватара
m1hasik M
Возраст: 32
Репутация: 31
Сообщения: 200
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Откуда: Днепр
Skype

Сообщение #20 m1hasik » 15.07.2016, 11:09

korshunov писал(а):
korshunov писал(а):Если убрать этот код, то не будет проходить проверка на то, существует такая страница при ЧПУ фильтре или нет.

Не всегда полностью правильно работает. Например,
http://demookay.com/catalog/womens-clothing/page-22222
должно бы давать страницу 404, а дает обычную страницу Товары не найдены...
ну и почему должно выдавать такую страницу? Это же пагинация? только параметр неправильный в данном случае, ну как бы передали больше чем есть, правильно ли я понял?


Название раздела: Вопросы по работе с OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Вопросы по работе с OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 33 гостя