Wanze Posted February 17, 2013 Posted February 17, 2013 Having different languages and a multilang field's value is empty, the value of the default language is returned. http://processwire.com/api/multi-language-support/multi-language-fields/#multi-language-field-values Can we change this behaviour? Is there any method to prevent this already at Db-Level? For example: I don't want to return pages that have an empty title in language xy. This doesn't work: <?php //Default Language set $pages->find("title!=''"); //Works!! //Any other language $pages->find("title!=''"); //Doesn't work, throws exception: Exception: Table 'db.field_title1' doesn't exist I know I can set of = false and then get the unformatted language value, but would be cool to exclude those pages in a search query. 1
ryan Posted February 18, 2013 Posted February 18, 2013 The exception that you got there would be a bug. I must have broken something during some recent updates to make it pass Nik's test suite. I'll investigate further. But I don't think this is related to your question. You should be able to target the value for a specific language like this (assuming I didn't break that too) $pages->find("title.data$user->language=something"); 1
Wanze Posted February 18, 2013 Author Posted February 18, 2013 Thanks ryan, I didn't think of a bug. Your example works fine for other languages than the default. Made it work like this: $langId = ''; if ($user->language->name != 'default') $langId = $user->language->id; $pages->find("title.data{$langId)!=''); Query pages based on empty fields in other languages without this condition would be ultra-sexy
Soma Posted February 18, 2013 Posted February 18, 2013 How about using chechboxes (page field) to publish certain languages instead of checking for empty lang field? Super exciting 1
Wanze Posted February 18, 2013 Author Posted February 18, 2013 Thanks ryan, I will test soon and report back. @Soma Yeah I'm using this solution on two sites at the moment. But I think the trick with the title is in some situations easier to handle: No checkboxes, I don't forget to add them to a new template. Or if you have the checkboxes global and not every template needs them, that could be confusing too. For the client it's an easy rule: If you don't set a title in language xy, this page won't get displayed. I think its a condition for the title to have a value, otherwise a page is not fully translated and therefore shouldn't output anything.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now