php - Add dynamic class in content box in OpenCart


I am working on OpenCart I want to add dynamic CSS class in content box. I want the following options for the content box layout:

  • left panel + main content + right panel
  • only left panel + main content
  • only main content + right panel
  • only main content (without left & right panels)

With the following code each case except the main content + right panel is working:

 <?php if ($column_left && $column_right) { ?>
    <?php $class = 'col-sm-6'; ?>
    <?php } elseif ($column_left || $column_right) { ?>
    <?php $class = 'col-sm-9'; ?>
    <?php } else { ?>
    <?php $class = 'col-sm-12'; ?>
    <?php } ?>
    <div id="content" class="<?php echo $class; ?>">.....</div>

I get this results: enter image description here

What is wrong here with the last option? How can I fix it?

Would appreciate the help.




Your code looks completely fine and should be working. The reason it seems it is not is because most probably you have some data in the$column_left even if it should be empty (thus considered asfalse).

The best bet is to either check the$column_left variable when there should be only main content + right column displayed (print_r($column_left)) or check the left column's template immediately (catalog/view/theme/<YOUR_THEME>/template/common/column_left.tpl).

Normally the code incolumn_left.tpl should be

<?php if ($modules) { ?>
<div class="column_left">
    <?php /* ... */ ?>
<?php } ?>

It is possible that You have something like this instead:

<div class="column_left">
<?php if ($modules) { ?>
    <?php /* ... */ ?>
<?php } ?>

therefore there is empty<div> and your code correctly usescol-sm-6 for main content.

After fixing thecolumn_left.tpl you should havecol-sm-9 for main content +col-sm-3 for right column if there is no left column data.

People are also looking for solutions to the problem: php - Find number of product with different url for different store


Didn't find the answer?

Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.

Ask a Question

Write quick answer

Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.

Similar questions

Find the answer in similar questions on our website.