ortegas

Рейтинг
195
Регистрация
29.05.2008
srs3000:
qtranslate-x таки. Виджет стандартный и судя по всему не предусмотрен функционал.

Я посмотрел исходный код класса виджета.

За формирование ссылки на языковую версию отвечает функция qtranxf_convertURL.

Здесь описана проблема

https://github.com/qTranslate-Team/qtranslate-x/issues/161

Простыми словами, в виджете ссылка формируется без учета настройки перезаписи ссылок для языка по-умолчанию.

(как я понимаю, последний параметр в функции установлен в true, а должен быть false)

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

Sitealert:
Чё-Чё?
Это по меньшей мере призыв к холивару и флуду. Поэтому скажу лишь, что не согласен.

Мы говорим о PHP/JS - высокоархитектурных языках программирования.

Не просто высокоархитектурные, но еще и интерпретируемые.

Одни из самых кроссплатформенных универсальных языков.

PHP/JS работают по типу "все включено".

Самые популярные библиотеки и функции доступны из коробки.

Wordpress следует той же логике - быстрота, практичность, универсальность.

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

Далее общее определение терминологии...

https://ru.wikipedia.org/wiki/%D0%92%D1%8B%D1%81%D0%BE%D0%BA%D0%BE%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D0%B5%D0%B2%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F

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

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

Новой тенденцией является появление языков программирования немного более высокого уровня (ультра-высокоуровневых, не путать со сверхвысокоуровневыми). Такого рода языки характеризуются наличием дополнительных структур и объектов, ориентированных на прикладное использование. Прикладные объекты, в свою очередь, требуют минимальной настройки в виде параметров и моментально готовы к использованию. Использование ультра-высокоуровневых языков программирования снижает временные затраты на разработку программного обеспечения и повышает качество конечного продукта за счет, опять-таки, уменьшения объёма исходных кодов.

богоносец:
Щас об этом выскажется какой-нибудь безопасник.

Высказываться - небезопасно.

Поэтому, скорее всего не преодолеет аналитический паралич.

Всему здравый смысл и мера.

Вам шашечки или ехать.

miketomlin:
При выполнении шаблонов работать с БД в принципе неправильно.
miketomlin:
ВП – далеко не эталон, скорее наоборот.
miketomlin:
Формирование разметки вперемешку с запросами к БД – это ламерство высшего порядка.

Вам бы еще научиться аргументировать свои сообщения.

А то вы более смахиваете на представителей интеллектуального большинства.

Программировать нужно так, как удобно.

Если кто-то продуктивно пишет вперемешку, я не вижу смысла составлять интерфейсы-классы.

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

Языки программирования созданы для того чтобы упростить и ускорить разработку.

Производительность и стабильность - это не так характеристика синтаксиса, как оптимизация ядра.

Если на сложном Java работает все быстро и стабильно, это не означает, что для того, чтобы язык был продуктивным и стабильным, он обязательно должен быть как Java.

Именно поэтому, мы видим сейчас потомков Java/C с более удобным синтаксисом и гибкой логикой.

Вы пишите, что не знакомы со спецификой WP, но при этом беретесь судить о его эталонности.

Архитектура WP очень гибкая и позаимствовала идеи javascript. Как и где не пиши, будет правильно и будет работать.

Вы однозначно из того типа людей, которые планируют проект на Drupal, потому что это ТИПА круто.

А потом не успевают закончить и один пункт к дедлайну, потому, что ни готовых решений, ни доступных специалистов по данным решениям нету.

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

Разработчикам стоит научиться создавать архитектуру функций так, чтобы их нельзя было использовать неправильно.

Например, sizeof/strlen/echo, где не вставь, кругом правильно.

srs3000:
ТОП20 я пересмотрел. Решения там нет. Потом тут написал. Посмотрю конечно повторно

Речь идет о qTranslate или об обновленной версии qTranslate X?

qTranslate

https://wordpress.org/plugins/qtranslate/

qTranslate X

https://wordpress.org/plugins/qtranslate-x/

Если вы работали с qTranslate, можете проверить наличие проблемы в актуальной версии qTranslate X.

Далее, нужно смотреть исходный код класса виджета.

Если нужный вам функционал не предусмотрен по задумке самого виджета, его класс можно наследовать и переписать отдельный методы.

srs3000:
кнопки переключения языков, иконки флагов, по прежнему содержат урлы site.com/ru/page/ и site.com/en/page/ т.е. для флажков ничего не изменилось, что вызывает кучу редиректов.

То-есть, проблема только с тем, что ссылка под флагом ведет на /en/page, а должна вести на /page?

Google выдает много результатов по запросу qtranslate redirects to default language

https://www.google.com.ua/search?ei=QD5RWsSYHKPC6QSChoKgDw&q=qtranslate+redirects+to+default+language&oq=qTranslate+redi&gs_l=psy-ab.3.0.0i22i30k1l10.154.4159.0.5719.5.5.0.0.0.0.285.940.0j3j2.5.0....0...1c.1.64.psy-ab..0.5.928...0j0i67k1.0.Y-fBkj7E1K8

lutskboy:
он по идеи должен как бы выводить данные по мере их появления. но работает как то в хроме через раз
в старой опере 12 и то нормально. в мозилла тоже

Если скрипт работает, как вы ожидаете в старой опере 12/мозилле, значит настройка на стороне сервера корректная.

В Chromium с пятьдесят какой-то версии, реализована умная прорисовка страницы.

Суть в том, что браузер пробует высчитать высоту блоков/страницы, чтобы предотвратить скачки по мере загрузки на мобильных.

Например, когда вы начинаете читать статью на EDGE интернете на мобильном, пролистали уже к середине, и тут наконец-то загрузилась реклама из блока выше, и все подскакивает вниз.

Одним словом, это буферизация конкретно Blink движка.

happy-joker:
Как настроить корректный ответ last-modified?
Кто за это вообще отвечает? Wordpress? Сервер? Плагины?

Дело в том, что у меня меняется дата в last-modified, при удалении\изменении кэша. Кэширующий плагин - WP Super Cache.

Нужно, чтобы last-modified обновлялся только после реального изменения записи или добавления комментария.

В таком случае, last-modified может отдаваться некорректный после внесения правок в шаблон / установки или настройке плагинов.

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

В вашей реализации, даже после переустановки темы, будет отдаваться время модификации статьи/последнего комментария, но не время модификации страницы.

Буквально, last-modified это заголовок валидатор актуальности кеша (вместе с Etag).

Если в ответе сервера присутствует no-cache (а он присутствует для PHP страниц по умолчанию), данный заголовок не используется.

Алгоритм использования данного заголовка поисковыми системами неизвестен.

Яндекс бот его поддерживает. Он отправляет заголовок If-modified-since, а ваш сервер уже должен решить: отдавать 304 Not Modified (робот после этого оборвет соединение, тем самым сэкономить ресурсы сервера и crawling budget) или 200.

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

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

При реализации заголовка Last-modified, нужно обязательно реализовать и обработку заголовка If-modified-since (от клиента).

Если у вас есть реальная надобность в подобном решении, то это возможно с помощью десятка строчек кода в functions.php.

Сначала перехватываем запрос поста (хук можно повесить на событие wp, когда еще не отправлены заголовки), далее проверяем на is_singular и в случае успеха получаем время модификации запрошенной публикации

global $wp_query; get_the_modified_time('U', true, $wp_query->ID)

получаем список комментариев (с лимитом на количество - 1) к запрошенной странице отсортированные по дате размещения в переменную через wp_list_comments()

и сравниваем полученные значения, отдав более свежее в header Last-modified / меняем статус код на 304, если значение совпадает с таковым от клиента в отправленном заголовке If-modified-since.

Зачем стрелять из пушки по воробьям или изобретать изобретенное.

Все сказанное можно реализовать на Wordpress и плагина пользовательских таксономий (либо регистрировать их самому).

https://developer.wordpress.org/reference/functions/register_taxonomy/

https://developer.wordpress.org/reference/functions/add_meta_box/

Wordpress позволяет использовать только нужный функционал, но при этом его возможности очень велики.

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

Из плюсов:

0. Не требует специфических конфигураций сервера (хостинга).

1. Автоматическое обновление ядра и установленных плагинов.

2. Реализована система кеширования, переходных данных, WP CRON, WP DB в CMS.

3. Реализован API, благодаря которому, ваши данные смогут использовать другие плагины.

Например, в один прекрасный день все это нужно будет экспортировать в Excel и в этом роде.

4. Реализован шаблонизатор, функции для фильтрации материалов (в WP кроме, как постов/страниц можно создать любой объект и любое свойство для него).

5. Доступны сотни тысяч плагинов, в том числе, для оптимизации JS/CSS, e-mail оповещений, авторизации через соц. сети.

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

7. Средний ценник на работы программиста на WP намного ниже такового для CMS интернет-магазинов/фреймворков, количество готовых и проверенных решений намного больше, что позволяет сэкономить тонну времени и денег, не переизобретая велосипед.

il_cattivo:
Regenerate Thumbnails, насколько понимаю, может нарезать миниатюр нужного размера если имеется оригинал. Размеры самого оригинала он не меняет.

Мне нужно измерить размеры самого оригинала, потому что плагин нарезающий и кеширующий изображения, не воспринимает размер 480*360. По крайней мере в моем случае.

Абсолютно верно.

Я бы не стал доверять исходники PHP скрипту.

В таком случае, наиболее надежным вариантом будет скачать папку uploads, удалить из нее превью (пользуясь поиском в файловом проводнике) и сконвертировать изображения через какую-то программу для работы с изображениями.

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

---------- Добавлено 04.01.2018 в 19:28 ----------

NCom:
Ой, простите, не указал, что комменты ВК потому что изначально сообщенеи писалось в теме про ВК комменты, но публикация не удалась из-за того, что тема слишком старая (такие ограничения здесь)... и я просто скопировал сообщение сюда)

Виджет комментариев VK привязан к точному URL адресу.

Возможно, у самого виджета есть параметры игнорирования параметров в URL, однако, я могу предложить только вариант 302 редиректа с адресов сгенерированных Я.Дзен на канонические.

Это можно сделать автоматически с помощью стандартной функции WP redirect_canonical.

https://codex.wordpress.org/Function_Reference/redirect_canonical

Всего: 3009