Jump to content

Detect at least one page abailable for current language


Zeka
 Share

Recommended Posts

Hi.

I have this structure of page

page
-- repeater field
--- page select field

-- repeater field
--- page select field

etc

I'm looking for better way to detect is there at least one page in page select field in all repeaters that available for current language.

$currentLang = $user->language;
$repeater_items = $page->repeater_field;
$groupHasLang = 0; 

foreach($repeater_items as $ri) {
    if($ri->page_select_field->getLanguages()->has($currentLang)) {
      $groupHasLang++;
      break;
    }
}

if($groupHasLang) {
	// do something
}

Maybe it could be accomplished just with find method? 

Thank for any suggestions!

Link to comment
Share on other sites

@BitPoet Thank you for suggetion.

You pointed me to the right direction. 

In this way it works only for non-default language ( becaouse there are status table for default language in db and status____ for non-default langauges where ____ is id of langauge ).

$currentLang = $user->language;
$repeater_items->find("menu_item_page.status$currentLang=1");

I tried to use OR group to cover default langauge 

$currentLang = $user->language;
$repeater_items->find("(menu_item_page.status$currentLang=1), (menu_item_page.status=1)");

It looks like needed pages were found but they are in itemsRemoved array ( I see it first time, so I don't know what is it ). 

 Screenshot_9.jpg

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...