2016-08-14 3 views
1

Блоки Concrete5 не удаляются, если они «удалены» из-за причин непротиворечивости в истории.Определить, активен ли блок в Concrete5

Теперь у меня есть следующая ситуация: У меня есть пользовательский блок с таблицей базы данных под названием btMyCustomBlock.

Это выглядит следующим образом:

|---bID---|---cID---|---someParam---| 

Теперь, когда такой блок «удален» и страница будет сохранена, база данных будет по-прежнему поддерживать блок - что нормально.

НО: Мне нужен способ определить, используется ли мой блок на этой странице прямо сейчас. Я ищу что-то вроде:

Выберите случайную запись из btMyCustomBlock. В настоящее время в качестве блока на странице используется запись WHERE.

Как я могу это сделать? Я узнал, что в таблице Blocks есть поле bIsActive, но похоже, что это не коррелирует с тем, что я ищу, не так ли?

ответ

1

Я считаю, что вы ищете это

SELECT b.* 
FROM btMyCustomBlock b 
INNER JOIN CollectionVersionBlocks cvb ON b.bID = cvb.bID 
INNER JOIN CollectionVersions cv ON cvb.cvID = cv.cvID 
WHERE cv.cvIsApproved = 1 

Получить все записи, которые связаны с текущей утвержденной версии страницы.

+0

Я попробую это, а затем передам вам обратную связь :) – androidavid

+0

В итоге я добавил 'WHERE ... AND cv.cvID = CURRENT_VERSION', тогда как' CURRENT_VERSION' задается 'Page :: getCurrentPage() - > getVersionId() '. Это действительно отлично! – androidavid