Friday, 27 July 2018

PHP Tips and Tricks

Use short cut operators for adding/subtracting values from variables.
1) += operator.
Consider following:

$a = 10;
$a = $a + 3;
// $a is 13 now.

We can replace the second statement by:

$a += 3; // Add 3 to $a

2) -= operator.
Consider following:

$a = 10;
$a = $a - 3;
// $a is 7 now.

We can replace the second statement by:

$a -= 3; // Subtract 3 to $a

3) Say if you are assigning a variable to some value if some condition is met. Also, the if condition has another variable set.

Just look at the following example:

if ($condition == TRUE) {
  $a = 7;
  $b = 9;
}
else {
  $a = 11;
}

We can skip the else structure like following:

$a = 11;
if ($condition == TRUE) {
  $a = 7;
  $b = 9;
}

In above code, we have reduced 2 lines of code.

Wednesday, 25 July 2018

Ternary Operator in PHP

Ternary operator is a shrtcut operator for if else statement.

Syntax:

$var = (condition) ? if yes, value : if no, value;

For example:
If you have an if else statement like this:

if ($b>5) {
 $a = 3;
}
else {
 $a = 5;
}

The same thing can be wrote with ternary operator in a single line like:


$a = ($b>5) ? 3 : 5;

Thus, we have seen how much lines of codes is reduced.

Tuesday, 29 May 2018

How to change Apache port in Windows

This problem may occur due to apache not getting required port (default is 80).
The port may be being used by other services.
For example: Skype also has default port 80.
Installing Skype and Apache both on same machine will cause conflict and hence Apache will not start.
Either, you change Skype port or change Apache port as described in following steps:
Change the ports of Apache and it will work for you. Go to httpd.conf
How to change port for Apache:
Search for:

ServerName localhost:80

Change it to:

ServerName localhost:81

Also Search For:

Listen 80

Change it to:

Listen 81

If you have created any virtual hosts, change the ports there also. Then restart your apache.

Reference: https://stackoverflow.com/a/18306621/1841760

Friday, 25 May 2018

Reorder divs (sequence) using CSS

Say, you have two divs. Left and right.
On desktop, you want sequence
Left - Right
But, on mobiles, you want:
Right - Left

This can be achieved through CSS properties.
Code:

Note: Use media queries appropriately.

<!DOCTYPE>
<html>
<head>
<title>Re ordering of divs using CSS.</title>
</head>
<body>
<div class="parent">
<div class="left" style=" height: 100px; background-color: grey; float: left;"><h1>Left</h1></div>
<div class="right" style="height: 100px; background-color: black; float: left;"><h1>Right</h1></div>
</div>

<style>
.parent div h1 {color: #ffffff;}
.parent {width: 100%; display: flex; flex-direction: column;}
.left {padding: 10px; width: 100%; order: 2;}
.right {padding: 10px; width: 100%; order: 1}
</style>
</body>
</html>

Without using above solution:



After using above solution:


Any suggestions/comments are most welcome.

Monday, 11 December 2017

Is there a way in drupal 8 to tell if the current page is a node?

    \Drupal::request()->attributes->get('node');

Taken from here: https://api.drupal.org/api/drupal/core!lib!Drupal.php/function/Drupal%3A%3Arequest/8

Now the docs say to never use this function, but I have used this to determine what kind of page I am on.

There is another function, but I am not sure it applies in your case:

https://api.drupal.org/api/drupal/core%21modules%21node%21node.module/function/node_is_page/8

At the very least, if you do not have an entity, you could mimic that in your code:

      $route_match = \Drupal::routeMatch();
      if ($route_match->getRouteName() == 'entity.node.canonical') {
        return true;
      }

Reference

Friday, 8 December 2017

Get all nodes of given type in Drupal 8 (maybe with a help of loadMultiple())


$nids = \Drupal::entityQuery('node')->condition('type','my_custom_type')->execute();
$nodes =  \Drupal\node\Entity\Node::loadMultiple($nids);

Thursday, 7 December 2017

Drupal 8 list all node types programatically

$types = \Drupal::entityTypeManager()
->getStorage('node_type')
->loadMultiple();
$nodeTypes = ! empty($types) ? array_keys($types) : [];

echo '<pre>';print_r($nodeTypes);echo '</pre>';

Source: drupal.stackexchange answer

Parenting tips to inculcate learning habits in your kid

Parenting tips to inculcate learning habits in your kid Tip #1) Children do not learn things, they emitate. So, try to do things by yours...