Тестировал JFish1.7, JFish 1.8.2 для J1.0.15, VM 1.0.15 на ИЕ 7, 8 + ФФ.
В PHP - начинающий.
Стабильнее оказалась - версия Fish 1.7.
По ходу тестов - траблы одинаковые:
Трабл 1) с решением через БД (нужно запускать после каждого перевода статьи, товара и тп).
При переводе - если поле название статьи (товара, меню) оставлять пустым, то все ок (дубликатов нет),
если тайтл заполнить - появляются клоны...(один сейв - один клон, или один рефреш ф5 на странице обзора контента - один клон).
Трабл 2) с решением (только 1 запрос) через БД.
п.2 описание: ... Странно, но при удалении (если слева ставить галочку рядом с ненужными клонами,
т.е. несвежий перевод) удаляются все отмеченные клоны вместе....со самым свежим переводом и остается .... самый первый перевод.
Т.е вы сделали перевод 17.10 и на странице с переводами остались (после редактирования) клоны за 12.10, 15.10, 16.10 -
то после нажатия кнопки "Удалить" (все отмеченное галочкой) - останется перевод за 12.10 (т.е самый первый).
Вот пример по инфо из БД:
--
--------Нужный перевод--------------------------
id 623
language_id int(11) 2
reference_id 33
reference_field product_name
---------Дубликат (ненужный клон)--------------
id 614
language_id int(11) 2
reference_id 33
reference_field product_name
--------------------
---
Итак, удаление идет , видимо, по ID - с сохранением первого перевода - ГЛЮК.
Нужен перевод "последний модифайд" , а не первый.
РЕШЕНИЕ для *Трабл 2* (запуск черех пхпМАдмин) - откопал в инете:
-------------
ALTER TABLE `jos_languages` CHANGE `iso` `iso` VARCHAR( 20 ) NULL DEFAULT NULL;
-------------
...После поиска на форуме нашел похожее решение для *Трабл 1* (удаление всех дубликатов по критериям через пхпМайАдмин):
-----код РУЧНОЙ режим (быстро)------
CREATE TABLE IF NOT EXISTS `temp2011` ( `id` INT(11) );
INSERT INTO `temp2011` SELECT MAX(`id`) FROM `jos_jf_content` GROUP BY `reference_field`, `reference_id`, `language_id`, `value`;
DELETE FROM `jos_jf_content` WHERE `id` NOT IN ( SELECT `id` FROM `temp2011` );
DROP TABLE `temp2011`;
-------------------
// temp2011 - название таблицы можно поставить другим
Решил поставить автомат, если сохраняем перевод, то запускаем верхний скрипт - через JoomFish.class.phр.
Но Фиш - это Фиш....
----код в файле JoomFish.class.phр- режим АВТОМАТ (идет очень медленно)------------
--------------------------------
/** Standard constructur
*/
function jfContent( &$db ) {
global $database; //добавил
//---------------
$database->setQuery( "CREATE TABLE IF NOT EXISTS `temp2011` ( `id` INT(11) );" );
$database->query();
$database->setQuery( "INSERT INTO `temp2011` (`id`) SELECT MAX(`id`) FROM `#__jf_content` GROUP BY `reference_field`, `reference_id`, `language_id`, `modified` " );
$database->query();
//------ниже код не работает, т.е ни очистка, ни удаление темп20011 через дроп не идет------
$database->setQuery( "DELETE FROM `#_jf_content` (id, language_id, reference_id, reference_table, reference_field, value, original_value, modified, modified_by, published) WHERE `id` NOT IN ( SELECT * FROM `temp2011` " );
$database->query();
$database->setQuery( "DROP TABLE `temp2011`;" );
$database->query();
---------------
-------------------
---------------------------------
Т.е таблица темп2011 создается, наполняется данными (но с очень большими тормозами - скорость загрузки страницы падает в 5-10 раз) - но ... очистка таблицы _jf_content от клонов не происходит, и темп2011 остается в БД.
ВОПРОСЫ:
1) нужно вставить скрипт (в любой файл JFish, все равно какой) для быстрого удаления клонов. Подскажите, кто знает...
2) как публиковать материалы (при условии, что перевод поля *тайтл* пустой)...