- Posts: 40
COMMUNITY FORUM
if else on extrafield
- John-Eilif Eliassen
-
Topic Author
- Offline
- Senior Member
The code i've tried to push through:
<?php if($params->get('itemExtraFields') && count($item->extra_fields)): ?>
<div class="veilActions"><ul>
<?php foreach($extrafields as $key=>$value): ?>
<?php if($extrafields[$key]->id == '1'&&$extrafields[$key]->value!=''): ?>
<a href="mailto:?subject=<?php echo $item->title; ?>&body=TEXT%0D%0A<?php echo $extrafields[$key]->value; ?>%0D%0ATEXT" class="hasTooltip" data-placement="top" title="TOOLTIP TITLE">
<li class="action"><i class="fa fa-toggle-on" aria-hidden="true"></i>
</li></a>
<? } else { ?>
<a href="mailto:?subject=<?php echo $item->title; ?>&body=TEXT%0D%0A<?php echo $item->introtext; ?>%0D%0ATEXT" class="hasTooltip" data-placement="top" title="TOOLTIP TITLE">
<li class="action"><i class="fa fa-toggle-off" aria-hidden="true"></i></li></a>
<?php endif; ?>
<?php endforeach; ?></ul>
</div>
<?php endif; ?>
Update: This code does not error out the page but nothing is on display. Not if the extrafield has value or not.
Sincerely would appreciate any comments on this as it is crucial that i get this to work.
Please Log in or Create an account to join the conversation.
- Krikor Boghossian
-
- Offline
- Platinum Member
- Posts: 15920
You can use this code as a starting point.
<?php foreach ($item->extra_fields as $extraField): ?>
<?php if($extraField->value != ''): ?>
#do something
<?php else: ?>
#do something else
<?php endif; ?>
<?php endforeach; ?>
JoomlaWorks Support Team
---
Please search the forum before posting a new topic :)
Please Log in or Create an account to join the conversation.
- John-Eilif Eliassen
-
Topic Author
- Offline
- Senior Member
- Posts: 40
Krikor wrote: Hey there,
You can use this code as a starting point.
<?php foreach ($item->extra_fields as $extraField): ?> <?php if($extraField->value != ''): ?> #do something <?php else: ?> #do something else <?php endif; ?> <?php endforeach; ?>
Hi Krikor. How do i use this if($extraField->value) for a spesific field?
Please Log in or Create an account to join the conversation.
- Krikor Boghossian
-
- Offline
- Platinum Member
- Posts: 15920
You can also insert a $key in the foreach statement
$item->extra_fields as $extraField=>$key
and checkt the extrafield's position in the array
$item->extra_fields[$key]
An alternative would be to render this extrafield on its own.
github.com/kricore/Advanced-templating-with-K2/blob/master/_inc/cheatsheet.php#L104-L109
JoomlaWorks Support Team
---
Please search the forum before posting a new topic :)
Please Log in or Create an account to join the conversation.
- John-Eilif Eliassen
-
Topic Author
- Offline
- Senior Member
- Posts: 40
Krikor wrote: You can check the $extraField->alias or $extraField->id matches your criteria and check that specific field's value.
You can also insert a $key in the foreach statement
$item->extra_fields as $extraField=>$key
and checkt the extrafield's position in the array
$item->extra_fields[$key]
An alternative would be to render this extrafield on its own.
github.com/kricore/Advanced-templating-with-K2/blob/master/_inc/cheatsheet.php#L104-L109
I am truly sorry, but that is to deep for my understanding of php and k2. Could you please give me an exact example for the situation below? I have read that cheatsheet page and tried my best several times to populate a logical output that renders my wish. To no luck.. at best i render the page without errors with nothing displaying (where the extrafields should pop up).
<? php if( isset( $this->item->extraFields->Link->value ) && ( $this->item->extraFields->Link->value !== '') ) : ?>
<li>OUTPUT A</li>
<?php else: ?>
<li>OUTPUT B </li>
<?php endif; ?>
Please Log in or Create an account to join the conversation.
- John-Eilif Eliassen
-
Topic Author
- Offline
- Senior Member
- Posts: 40
<?php if($params->get('itemExtraFields') && count($item->extra_fields)): ?>
<div class="veilActions">
<ul>
<?php foreach ($item->extra_fields as $extraField): ?>
<?php if($extraField->value != ''): ?>
<!-- IF LINK -->
<a href="#" class="hasTooltip" data-placement="left" title="Send"><li class="action"><i class="fa fa-toggle-on" aria-hidden="true"></i></li></a>
<?php else: ?>
<!-- IF LINK IS MISSING -->
<a href="#" class="hasTooltip" data-placement="top" title="Send"><li class="action"><i class="fa fa-toggle-off" aria-hidden="true"></i></li></a>
<?php endif; ?>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
Please Log in or Create an account to join the conversation.
- Krikor Boghossian
-
- Offline
- Platinum Member
- Posts: 15920
Inside a <ul> or an <ol> you should always start with a <li> element.
<?php if($params->get('itemExtraFields') && count($item->extra_fields)): ?>
<div class="veilActions">
<ul>
<?php foreach ($item->extra_fields as $extraField): ?>
<?php if($extraField->value != '' ): ?>
<!-- IF LINK -->
<li class="action">
<a href="#" class="hasTooltip" data-placement="left" title="Send"><i class="fa fa-toggle-on" aria-hidden="true"></i></a>
</li>
<?php else: ?>
<!-- IF LINK IS MISSING -->
<li class="action">
<a href="#" class="hasTooltip" data-placement="top" title="Send"><i class="fa fa-toggle-off" aria-hidden="true"></i></a>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
You can use these snippets to check whether this is a specific field:
<?php if($extraField->alias == 'CHECK_FOR_ALIAS'): ?>
<?php if($extraField->id == 12): ?>
Now apart from that, the code seems correct, is there a link I can see?
JoomlaWorks Support Team
---
Please search the forum before posting a new topic :)
Please Log in or Create an account to join the conversation.
- John-Eilif Eliassen
-
Topic Author
- Offline
- Senior Member
- Posts: 40
Krikor wrote: The HTML has some issues,
Inside a <ul> or an <ol> you should always start with a <li> element.
<?php endif; ?>
You can use these snippets to check whether this is a specific field:
<?php if($extraField->alias == 'CHECK_FOR_ALIAS'): ?> <?php if($extraField->id == 12): ?>
Now apart from that, the code seems correct, is there a link I can see?
I am afraid there are not. It is on local server without option to go live in any shape or form im afraid. But i can show you any output available.
What i did now was try your inputs and put
<?php foreach ($item->extra_fields as $extraField): ?>
<?php if($extraField->value != ''): ?>
<?php if($extraField->id == 1): ?>
<li class="action"><a href="#" class="hasTooltip" title="Send"><i class="fa fa-toggle-on" aria-hidden="true"></i></a></li>
<?php else: ?>
<li class="action"><a href="#" class="hasTooltip" title="Send"><i class="fa fa-toggle-off" aria-hidden="true"></i></a></li>
<?php endif; ?>
<?php endif; ?>
<?php endforeach; ?>
But I must be doing something wrong.. since the <li> after phpelse does not show if field->id 1 has no value.
Here you can see that the first one (which is the only one that HAS value in this extrafield, is infact showing the icon/content it should.
imgur.com/HuEgHsV
But here you can see that the list elements that where the extrafield has no value, is not displayed at all.. seems like the whole extrafields area is removed if the field has no value.. is there a setting backend i have missed?
imgur.com/pSbaZUl
Thank you for your brilliant help so far
Please Log in or Create an account to join the conversation.
- John-Eilif Eliassen
-
Topic Author
- Offline
- Senior Member
- Posts: 40
<?php foreach ($item->extra_fields as $extraField): ?>
<?php if($extraField->value != '')
{ echo
'<li class="value"><a href="#" class="hasTooltip" title="Send"><i class="fa fa-toggle-on" aria-hidden="true"></i></a></li>';
} else {
echo
'<li class="novalue"><a href="#" class="hasTooltip" title="Send"><i class="fa fa-toggle-off"></i></a></li>';
}
?>
<?php endforeach; ?>
Please Log in or Create an account to join the conversation.
- John-Eilif Eliassen
-
Topic Author
- Offline
- Senior Member
- Posts: 40
<?php if($params->get('itemExtraFields')): ?>
<div class="veilActions">
<ul>
<?php foreach ($item->extra_fields as $extraField): ?>
<?php $ks = $extraField->id == 1; ?>
<?php if(!empty($ks)): ?>
<li class="action value">
A
</li>
<?php else: ?>
<li class="action novalue">
B
</li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
imgur.com/AtScbAe
Please Log in or Create an account to join the conversation.
- Krikor Boghossian
-
- Offline
- Platinum Member
- Posts: 15920
<?php if ($extraField->id == 1): ?>
<?php if ( $extraField->value != '' && $extraField->value != ' ' && !empty($extraField->value) ): ?>
<?php endif; ?>
<?php else: ?>
Do something
<?php endif; ?>
Let's see if this does the trick.
JoomlaWorks Support Team
---
Please search the forum before posting a new topic :)
Please Log in or Create an account to join the conversation.
- John-Eilif Eliassen
-
Topic Author
- Offline
- Senior Member
- Posts: 40
Please Log in or Create an account to join the conversation.
- Krikor Boghossian
-
- Offline
- Platinum Member
- Posts: 15920
However, I am against animal cruelty so... is it possible to see a screenshot of these extrafields?
I would also like a screenshot of the database cell.
It is possible that these fields DO hold some value (whitespace).
JoomlaWorks Support Team
---
Please search the forum before posting a new topic :)
Please Log in or Create an account to join the conversation.
- John-Eilif Eliassen
-
Topic Author
- Offline
- Senior Member
- Posts: 40
Krikor wrote: At this moment I think sacrificing some poultry might be a reasonable choice.
However, I am against animal cruelty so... is it possible to see a screenshot of these extrafields?
I would also like a screenshot of the database cell.
It is possible that these fields DO hold some value (whitespace).
It is weird, right. And ot, I too am against animal cruelty.
I will provide a snippet of the database asap. I changed the extrafield from being a LINK type to being a textfield. So the ID of the field is now naturally 2.
This is the extrafield i added and viewed from additem page.
imgur.com/PPQlIRv
imgur.com/9gQro7a
Module setting
imgur.com/sfv83nd
Category setting
imgur.com/xruNvPT
I am not competent enough to solve this by myself as i've tried everything i found by searching this forum and the web in general, so I truly and genuinely appreciate your effort Krikor!
OT: Do you know the difference between a blonde and a mosquito?
Please Log in or Create an account to join the conversation.
- John-Eilif Eliassen
-
Topic Author
- Offline
- Senior Member
- Posts: 40
ID | Name | Value | Type | Group | Published | Ordering |
2 | KS | {"name":null,"value":"","target":null,"alias":"KS","required":0,"showNull":0} | textfield | 1 | 1 | 2 |
Please Log in or Create an account to join the conversation.
- Krikor Boghossian
-
- Offline
- Platinum Member
- Posts: 15920
I have to point a couple of issues.
a) Backup and update to K2 2.7 or K2 2.7.1 DEV - github.com/getk2/k2
b) Can you try with a newly created extrafield?
JoomlaWorks Support Team
---
Please search the forum before posting a new topic :)
Please Log in or Create an account to join the conversation.
- John-Eilif Eliassen
-
Topic Author
- Offline
- Senior Member
- Posts: 40
Krikor wrote: I would love to know the difference.
I have to point a couple of issues.
a) Backup and update to K2 2.7 or K2 2.7.1 DEV - github.com/getk2/k2
b) Can you try with a newly created extrafield?
I tried with a newly created field, did nothing to the behaviour.
Updates when upgraded.
You dont smack the blonde when the sucking starts.
Please Log in or Create an account to join the conversation.
- Krikor Boghossian
-
- Offline
- Platinum Member
- Posts: 15920
JoomlaWorks Support Team
---
Please search the forum before posting a new topic :)
Please Log in or Create an account to join the conversation.